Aller au contenu

Utilisateur:ArsèneR.D./nouvelle entree eo

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
### Programme python pour faciliter la création d’une nouvelle entrée wiktionnaire en espéranto

## Data
# Imports
from clipboard import copy

terminaisons = {
	"a":"adjectif",
	"o":"nom",
	"i":"verbe",
	"e":"adverbe",
	"u":"imp",
	"s": {
		"as":"pre",
		"is":"pas",
		"os":"fut",
		"us":"cond"
	}
}

table_conversion_variantes = {
	'x': {
		"ŝ" : "sx",
		"ĉ" : "cx",
		"ĵ" : "jx",
		"ĝ" : "gx",
		"ĥ" : "hx",
		"ŭ" : "ux"
	},
	'h': {
		"ŝ" : "sh",
		"ĉ" : "ch",
		"ĵ" : "jh",
		"ĝ" : "gh",
		"ĥ" : "hh",
		"ŭ" : "u"
	}

}


toAPI = {
	"t(" : "t͡",
	"d(" : "d͡",
	"g" : "ɡ",
	"c" : "t͡s",
	"ŝ" : "ʃ",
	"ĉ" : "t͡ʃ",
	"ĵ" : "ʒ",
	"ĝ" : "d͡ʒ",
	"ĥ" : "x",
	"ŭ" : "w",
	"S" : "ʃ",
	"C" : "t͡ʃ",
	"J" : "ʒ",
	"G" : "d͡ʒ",
	"H" : "x",
	"U" : "w",
	"’" : "ˈ",
	"'" : "ˈ",
}

ponctuation = ".!?… ,;:’()/\"'"

# Lists
liste_auteurs = {}

all_steps = dict(
		form = "forme du mot (obligatoire)" ,
		pron = "prononciation" ,
		etym = "étymologie (modèle eo-étym)" ,
		val = "valence (si verbe)" ,
		defs = "définitions (et exemples)" ,
		var = "variante avec/sans voyelle d'appui" ,
		glos = "glossaires" ,
		syn = "synonymes" ,
		ant = "antonymes" ,
		hypr = "hyperonymes" ,
		hypo = "hyponymes" ,
		wik = "lien vers wikipédia" ,
		ref = "références" ,
		img = "image" ,
		chek = "valider la génération du wikicode",
		anx = "annexes (flexions du mot et var. x et h)"
		)

help_message = "Aide - commandes spéciales\nA tout moment, il est possible de changer les 'étapes' du déroulé du programme. \nPour ce faire, quelques mots spéciaux sont à utiliser :\n   all\t\tactive toutes les étapes du programme (certaines sont désactivées par défaut)\n   end\t\tdésactive toutes les étapes suivantes jusqu'à la fin du programme\n   +  \t\tpermet d'ajouter une ou plusieurs étapes\n   -  \t\tpermet d'enlever une ou plusieurs étapes\n   only\t\tpermet de désactiver toutes les étapes sauf celles indiquées\n   nur\t\talias de 'only'\n   help\t\tpermet d'afficher cette aide\nPour seulement visualiser les étapes activées, faire '+', '-', 'only' ou 'nur' et ne rien entrer ensuite\n"

selected_steps = ["form", "pron", "etym", "val", "defs", "var", "syn", "glos", "wik", "ref", "chek", "anx"]  #étapes activées par défaut

forced_steps = ["form"]

##
##
##Fonctions
## 
### Fonctions générales

def show_enabled_steps(autoprint=False):
	text = ""
	for abr, step_name in all_steps.items():
		if abr in selected_steps:
			enabled = "o"
		else:
			enabled = " "
		text += "\n [{}] {}\t{}".format(enabled, abr, step_name)
	if autoprint:
		print(text)
	else:
		return text

def saisir(message):
	#variante de input() permettant de ne rien rentrer si non nécessaire
	global selected_steps
	e = ""
	if current_step in (selected_steps + forced_steps):
		e = input(message)
		keywords = ["all", "end", "+", "-", "only", "nur", "help"]
		if e in keywords:
			if e == "all":
				selected_steps = list(all_steps.keys())
				print("\t## Programme complet : toutes les étapes sont activées.")
			if e == "end":
				selected_steps = forced_steps
			if e == "+":
				print("Étapes activées :" + show_enabled_steps())
				entree_stps = input("Saisissez les étapes à ajouter (séparées par les virgules) : ")
				entree_stps = entree_stps.split(",")
				for s in entree_stps:
					s = s.strip()
					if s in all_steps and s not in selected_steps:
						selected_steps.append(s)
			if e == "-":
				print("Étapes activées :" + show_enabled_steps())
				entree_stps = input("Saisissez les étapes à enlever (séparées par les virgules) : ")
				entree_stps = entree_stps.split(",")
				for s in entree_stps:
					s = s.strip()
					if s in all_steps and s in selected_steps and s not in forced_steps:
						selected_steps.remove(s)
			if e == "only" or e == "nur":
				print("Étapes activées :" + show_enabled_steps())
				entree_stps = input("Saisissez les étapes à garder (toutes les autres seront enlevées) : ")
				entree_stps = entree_stps.split(",")
				cat_videe = False
				for s in entree_stps:
					s = s.strip()
					if s in all_steps:
						if cat_videe == False:
							selected_steps = []
							cat_videe = True
						selected_steps.append(s)
				for fs in forced_steps:
					if fs not in selected_steps:
						selected_steps.append(fs)
			if e == "help":
				print(help_message)
			e = saisir(message)
	else:
		e = ""
	return e

def wcrypt(wikicode):
	#remplace les {{ par des << dans le wikicode
	wikicode = wikicode.replace("{{","<<").replace("}}",">>")
	return wikicode

def wdecrypt(wikicode):
	#restitue les {{ dans le wikicode
	wikicode = wikicode.replace("<<","{{").replace(">>","}}")
	return wikicode

def maj(string):
	#Met en majuscule la première lettre de la chaîne, sans toucher au reste (contrairement à capitalize())
	string = string[0].upper() + string[1:]
	return string

### Fonctions spécifiques au programme

def detectercarspecial(forme):
	#renvoie True si la forme entrée contient une lettre avec chapeau
	lettres_spéciales = 'ŝĉĵĝĥŭ'
	trouvé = False
	for letter in lettres_spéciales:
		if letter in forme:
			trouvé = True
	return trouvé

def varier(forme, système):
	#Calcul la variante d’une forme par système x ou système h
	variante = forme
	for a, b in table_conversion_variantes[système].items():
		variante = variante.replace(a,b)
	return variante

def getnature(mot):
	#détermine la nature grammaticale d'un mot
	finale = mot[-1]
	if finale in terminaisons:
		if finale == "s":
			nature = terminaisons["s"][mot[-2:]]
		else:
			nature = terminaisons[finale]
	else:
		nature = "rac"
	return nature


### Fonctions de formatage

def formatpron(sequence):
	#formate la prononciation dans l'API
	if " " in sequence and not "." in sequence:
		sequence = sequence.split("  ")
		mots = []
		for mot in sequence:
			mot = mot.split(" ")
			mot[-2] = "ˈ" + mot[-2]
			mot = ".".join(mot)
			mots.append(mot)
		sequence = " ".join(mots)
	for i in toAPI:
		sequence = sequence.replace(i, toAPI[i])
	return sequence

def formatdef(definition):
	#Formate la définition (mise en majuscule du premier mot etc.)
	if definition != "":
		if definition[0] == "!":
			definition = definition[1:]
		else:
			definition = definition.replace("'''", "!gras!").replace("''", "!ital!")
			definition = definition.replace("'", "’")
			definition = definition.replace("!gras!", "'''").replace("!ital!", "''")
			if definition[0:2] == "[[":
				premier_mot = definition[2:definition.find("]")]
				if not "|" in premier_mot:
					definition = definition.replace(premier_mot,premier_mot+"#fr|"+maj(premier_mot))
			else:
				definition = maj(definition)
			if definition[-1] not in ponctuation[0:4]:
				definition = definition + "."
			if definition.count("[") != definition.count("]"):
				definition = "(Attention !! erreur de crochets détéctée) "+definition
	return definition

def formatex(eo, fr="", source="", lien=""):
	#1) mettre le mot vedette de l'exemple (eo) en gras
	eo = eo.strip()
	eo = eo + "!end!"  # éviter les bugs si l'ex se termine par le mot vedette
	eo = eo.replace("'", "’")
	if nature in ["nom", "adjectif", "adverbe", "verbe"]:
		mot_vedette = forme[0:-1]  #captation de la racine
		if mot_vedette in eo or maj(mot_vedette) in eo:
			if maj(mot_vedette) in eo : mot_vedette = maj(mot_vedette)
			term = ['', 'o', 'oj', 'on', 'ojn','a','aj','an','ajn','e','i','as','is','os','u','us']
			newterm = ''
			for i in term:
				if mot_vedette+i in eo:
					newterm = i
			mot_vedette = mot_vedette + newterm
			for i in ponctuation:
				if eo[eo.find(mot_vedette)+len(mot_vedette)] == i:
					eo = eo.replace(mot_vedette,"'''"+mot_vedette+"'''")
					break
	eo = eo.replace("!end!", "")

	#2) traitement de la traduction
	fr = fr.replace("'", "’")
	if fr != "":
		fr = maj(fr)
		if fr[-1] not in ponctuation[0:4]:
			fr = fr + "."

	#3) traitement de la source
	source = source.strip()
	if source != "":
		if source[0] == "!":
			source = source[1:]
		else:
			if ",," in source:
				source = source.split(",,")
			else:
				source = source.split(",")
			source = list(item.strip() for item in source)
			if len(source) == 3:
				titre = source[0]
				titre = "''{}''".format(titre)
				auteur = source[1]
				if auteur in liste_auteurs:
					auteur = liste_auteurs[auteur]
				else:	
					auteur = auteur.lower()
					auteur = auteur.title()
				if auteur[0] == "!":
					auteur = auteur[1:]
				else:
					auteur = "{{w|" + auteur + "}}"
				année = source[2]
				source = ", ".join([auteur, titre, année])
			elif len(source) == 1:  #Si pas de virgule
				source = source[0]
			else:source = ", ".join(source)

	#4) traitement du lien
	lien = lien.strip()
	if lien.startswith("https://tekstaro.com/t?nomo="):
		découpe = lien.split("&")
		lien = []
		for i in découpe:
			if i.startswith("https") or i.startswith("id=") or i.startswith("sekcio="):
				lien.append(i)
		if '#' in découpe[-1]:
			lien.append("#"+découpe[-1].split('#')[-1])
		lien = "&".join(lien)

	#5) traitement des paramètres vides
	exemple = {"eo":eo}
	if fr != "" : exemple["fr"] = fr
	if source != "" : exemple["source"] = source
	if lien != "" : exemple["lien"] = lien
	return exemple




##
##  Saisie des infos
##

# Saisie de la forme
current_step = "form"
forme = saisir("mot : ")
nature = getnature(forme)

#Traitement des caractères spéciaux
précence_car_special = detectercarspecial(forme)
if précence_car_special:
	var_x = varier(forme, 'x')
	var_h = varier(forme, 'h')

#Prononciation
current_step = "pron"
pron = formatpron(saisir("prononciation : "))
while True:
	confirm = saisir("\taperçu : /"+pron+"/\n")
	if confirm == "" : break
	else : pron = formatpron(confirm)

#Etymologie
current_step = "etym"
eoetym = saisir("eo-étym|")
while True:
	confirm = saisir("\taperçu : {{eo-étym|"+eoetym+"}}\n")
	if confirm == "" : break
	else : eoetym = confirm

#Traitement des racines du mot
racines = []
if "/" in eoetym:  
	for i in eoetym.split('|'):
		if i.endswith('/'):
			i = i.replace('/','')
			racines.append(i)   #Récupération des racines qui composent le mot

#Valence (si verbe)
current_step = "val"
if nature == "verbe":
	valence = saisir("valence (t/i/?) : ")
	if valence == "" : valence = "?"

#Definition
current_step = "defs"
defs = {}
i = 0
while True:
	definition = formatdef(saisir("définition {} : ".format(i+1)))
	if i > 0 and definition == "":
		break
	defs[i] = {}
	while True:
		confirm = saisir("\taperçu : "+definition+"\n")
		if confirm == "" : break
		else : definition = formatdef(confirm)
	defs[i]["def"] = definition

	relation = saisir("relation : ")
	if relation != "" :
		defs[i]["rel"] = []
		while True:
			defs[i]["rel"].append(relation)
			relation = saisir("autre relation : ")
			if relation == "":
				break

	defs[i]["ex"] = []
	while True:
		eo = saisir("exemple : ")
		if eo == "" :
			break
		fr = saisir("traduction : ")
		source = saisir("source : ")
		lien = saisir("lien : ")
		defs[i]["ex"].append(formatex(eo,fr,source,lien))
	i = i + 1

#Glossaires
current_step = "glos"
glossaires = saisir("glossaire(s) : ")
if not "épices, " in glossaires:   # glossaire "épices" automatiquement remplacé par "épices, aromates et condiments" autom
	glossaires = glossaires.replace("épices", "épices, aromates et condiments")

# Variante -o-
current_step = "var"
variante_voyelle_appui = []
if eoetym.count('/') == 2:
	if saisir("Variante avec/sans voyelle d’appui ? (o/n) ") == "o" : 
		if "-o-" in eoetym:
			variante = eoetym.replace('-o-','')  #Retrait de la voyelle d'appui
			variante_voyelle_appui.append('sans')
		else:
			index = eoetym.find('/')
			variante = eoetym[:index] + 'o' + eoetym[index:]  #Ajout de la voyelle d'appui
			variante_voyelle_appui.append('avec')
		variante = variante.replace('|','').replace('/','').replace('-','')
		variante_voyelle_appui.append(variante)

# Synonymes
current_step = "syn"
synonymes = []
while True:
	syno = saisir("synonyme(s) : ")
	if syno == '':
		break
	syno = syno.split('=')
	couple = []
	for i in syno:
		couple.append(i.strip())
	synonymes.append(couple)

# Antonymes
current_step = "ant"
antonymes = []
while True:
	anto = saisir("antonyme(s) : ")
	if anto == '':
		break
	anto = anto.split('=')
	couple = []
	for i in anto:
		couple.append(i.strip())
	antonymes.append(couple)

# Hyperonymes
current_step = "hypr"
hyperonymes = []
while True:
	hypero = saisir("hyperonyme(s) : ")
	if hypero == '':
		break
	hypero = hypero.split('=')
	couple = []
	for i in hypero:
		couple.append(i.strip())
	hyperonymes.append(couple)

# Hyponymes
current_step = "hypo"
hyponymes = []
while True:
	hypo = saisir("hyponyme(s) : ")
	if hypo == '':
		break
	hypo = hypo.split('=')
	couple = []
	for i in hypo:
		couple.append(i.strip())
	hyponymes.append(couple) 
	Hypo = 0

# Lien vers WP
current_step = "wik"
if saisir("lien wikipedia ? (o/n) ") == "o": wp = True
else: wp = False

# Références
current_step = "ref"
references = []
if saisir("Références utilisées (o/n) :\n\tPIV ? ") == "o" :
	references.append('piv')
if saisir("\tRetavortaro ? ") == "o" :
	references.append('ret')
if saisir("\tWaringhien ? ") == "o" :
	references.append('war')

# Images
current_step = "img"
images = []
while True:
	img = saisir("image : ")
	if img == "":
		break
	if img.startswith("File:"):
		img = img.replace("File:", "")
	if saisir("image format portrait ? (o/n) ") == "o":
		redresse = True
	else:
		redresse = False
	leg_eo = saisir("légende (eo) : ")
	leg_eo = formatex(leg_eo)["eo"]
	leg_fr = saisir("légende (fr) : ")
	images.append({"file":img, "redresse":redresse, "leg_eo":leg_eo, "leg_fr":leg_fr})



current_step = "chek"
saisir("Faites [Entrée] pour générer le wikicode >")




##
##
##  Construction du wikicode
##
##
w = ""

if précence_car_special:
	if 'ŭ' in forme and len(var_h) == len(forme):
		w+= "<<voir|{}>>\n\n".format(var_h)

w+= "== <<langue|eo>> =="  # page wikicode

if précence_car_special:
	w+= "\n<<voir autres systèmes|eo|{}|{}>>".format(var_x,var_h)

#Section grammaticale et ligne de forme
w+= "\n=== <<S|étymologie>> ===\n"
if eoetym == "":
	w+= ": <<ébauche-étym|eo>>"
else:
	w+= ": <<date|lang=eo>> <<eo-étym|{}>>.".format(eoetym)

w+= "\n\n=== <<S|{}|eo>> ===".format(nature)

if nature in ['nom', 'adjectif']:
	w+= "\n<<eo-flexions|{}>>".format(pron)
elif nature == 'verbe':
	w+= "\n<<eo-verbe>>"

w+= "\n'''{}''' <<pron|{}|eo>>".format(forme,pron)
if nature == 'verbe':
	if valence == '?':
		w+= " <<valence ?|eo>>"
	else:
		w+= " <<{}|eo>>".format(valence)

#Image(s)
if len(images) > 0:
	for image in images:
		w+= "\n[[Image:{}|vignette".format(image['file'])
		if image['redresse'] == True:
			w+= "|redresse"
		if image['leg_eo'] != "":
			w+= "|''{}''".format(image['leg_eo'])
			if image['leg_fr'] != "":
				w+= " (« {} »)".format(image['leg_fr'])
		w+= "]]"

#Définition(s)
d = 0  #numéro de définition
while d in defs:
	w+= "\n# "
	if 'rel' in defs[d]:
		for r in defs[d]['rel']:
			w+= "<<{}|eo>> ".format(r)
	if defs[d]['def'] == '':
		w+= "<<ébauche-déf|eo>>"
	else:
		w+= defs[d]['def']
	if len(defs[d]['ex']) == 0:
		w+= "\n#* <<exemple|lang=eo>>"
	else:
		for numex, v in enumerate(defs[d]['ex']):
			w+= "\n#* <<exemple|lang=eo"
			w+= "\n   |" + defs[d]['ex'][numex]['eo']
			if 'fr' in defs[d]['ex'][numex]:
				w+= "\n   |" + defs[d]['ex'][numex]['fr']
			if 'source' in defs[d]['ex'][numex]:
				w+= "\n   |source=" + defs[d]['ex'][numex]['source']
			if 'lien' in defs[d]['ex'][numex]:
				w+= "\n   |lien=" + defs[d]['ex'][numex]['lien']
			w+= ">>"
	d = d+1

#Variante voyelle d'appui
if len(variante_voyelle_appui) > 0:
	w+= "\n\n==== <<S|variantes>> ===="
	w+="\n* {} la voyelle d’appui <<lien|-o-|eo>> : <<lien|{}|eo>>".format(variante_voyelle_appui[0],variante_voyelle_appui[1])

# Synonymes
if len(synonymes) > 0:
	w+= "\n\n==== <<S|synonymes>> ===="
	for s in synonymes:
		w+= "\n* <<lien|{}|eo".format(s[0])
		if len(s) == 2:
			w+= "|sens=" + s[1]
		w+=">>"

# Antonymes
if len(antonymes) > 0:
	w+= "\n\n==== <<S|antonymes>> ===="
	for a in antonymes:
		w+= "\n* <<lien|{}|eo".format(a[0])
		if len(a) == 2:
			w+= "|sens=" + a[1]
		w+=">>"

# Apparentés
if len(racines) > 0:
	w+= "\n\n==== <<S|apparentés>> ===="
	for r in racines:
		w+= "\n<<liste dérivés racine|eo|{}>>".format(r)

# Vocabulaire
if glossaires != "":
	w+= "\n\n==== <<S|vocabulaire>> ===="
	w+= "\n<<glossaire|{}|eo>>".format(glossaires)

# Hyperonymes
if len(hyperonymes) > 0:
	w+= "\n\n==== <<S|hyperonymes>> ===="
	for a in hyperonymes:
		w+= "\n* <<lien|{}|eo".format(a[0])
		if len(a) == 2:
			w+= "|sens=" + a[1]
		w+=">>"

# Hyponymes
if len(hyponymes) > 0:
	w+= "\n\n==== <<S|hyponymes>> ===="
	for a in hyponymes:
		w+= "\n* <<lien|{}|eo".format(a[0])
		if len(a) == 2:
			w+= "|sens=" + a[1]
		w+=">>"

# Prononciation
w+="\n\n=== <<S|prononciation>> ==="
w+="\n* <<pron|{}|eo>>".format(pron)
w+="\n* <<écouter|lang=eo|France (Toulouse)|audio=LL-Q143 (epo)-Lepticed7-{}.wav>>\n<<ébauche-pron-audio|eo>>".format(forme)

# Voir aussi
if wp:
	w+="\n\n=== <<S|voir aussi>> ===\n* <<WP|lang=eo>>"

#Références
if len(references) > 0:
	w+= "\n\n=== <<S|références>> ==="
	w+= "\n==== <<S|bibliographie>> ===="
	if 'piv' in references:
		w+= "\n* <<R:PIV|mot={}>>".format(forme)
	if 'ret' in references:
		rac = varier(racines[-1],'x')
		w+= "\n* <<R:Retavort|rac={}|mot={}>>".format(rac,forme)
	if 'war' in references:
		w+= "\n* <<R:Waringhien1957>>"

if précence_car_special:
	w+= "\n\n<<clé de tri|{}>>".format(var_x)

w = wdecrypt(w)

copy(w)
print("\nCode wikisource copié dans le presse-papier.")





#
# Post-traitement :
# Pages annexes
#
#

current_step = "anx"

def w_var(forme,pron,système):  # Variante-x ou -h (ex regxo/regho)
	# fonction qui prend en entrée la forme, la pron du mot de base et le système duquel il est une variante
	# revoie le wikicode de la page associée
	sys_pr = système
	sys_sec = ['h', 'x']
	sys_sec.remove(système)
	sys_sec = sys_sec[0]
	v_pr = varier(forme, sys_pr)  #variante locale par système principal (indiqué par système)
	v_sec = varier(forme, sys_sec)  #variante locale par système secondaire
	wikicode = "== <<langue|eo>> =="
	wikicode+= "\n<<voir autres systèmes|eo|{}|{}>>".format(forme,v_sec)
	wikicode+= "\n=== <<S|variante typographique|eo>> ==="
	wikicode+= "\n'''{}''' <<pron|{}|eo>>".format(v_pr, pron)
	wikicode+= "\n# <<eo-sys-{}|{}>>.".format(système, forme)
	wikicode = wdecrypt(wikicode)
	return wikicode, v_pr

def w_flex(forme_base,pron_base,flexion):  #flexion (ex reĝoj, reĝon, reĝojn)
	# fonction qui prend en entrée la forme de base, la pron du mot de base et la flexion à lui appliquer
	# revoie le wikicode de la page associée
	txt = dict(j="Nominatif pluriel de",n="Accusatif singulier de", jn="Accusatif pluriel de")
	forme_flex = forme_base + flexion
	pron_flex = pron_base + flexion
	wikicode = "== <<langue|eo>> =="
	if précence_car_special:
		wikicode+= "\n<<voir autres systèmes|eo|{}|{}>>".format(varier(forme_flex,'x'),varier(forme_flex,'h'))
	wikicode+= "\n=== <<S|nom|eo|flexion>> ==="
	wikicode+= "\n<<eo-flexions|{}>>".format(pron_base)
	wikicode+= "\n'''{}''' <<pron|{}|eo>>".format(forme_flex, pron_flex)
	wikicode+= "\n# ''{} ''[[{}#eo|{}]].".format(txt[flexion], forme_base, forme_base)
	wikicode+= "\n#* <<exemple|lang=eo>>"
	if précence_car_special: 
		wikicode+= "\n\n<<clé de tri|{}>>".format(varier(forme_flex,'x'))
	wikicode = wdecrypt(wikicode)
	return wikicode, forme_flex, pron_flex
	

if précence_car_special:
	if saisir("\nGénérer les pages des variantes x et h ? (o/n) ") == "o":
		w_x, var_x = w_var(forme,pron,'x')
		copy(w_x)
		saisir("\t Page de {} copiée dans le presse-papier. [Entrée] pour continuer…".format(var_x))

		w_h, var_h = w_var(forme,pron,'h')
		copy(w_h)
		print("\t Page de {} copiée dans le presse-papier.".format(var_h))

if nature in ['nom', 'adjectif']:
	if saisir("Générer les pages des flexions -j, -n et -jn ? (o/n) ") == "o":
		if précence_car_special and saisir("\nGénérer aussi les variantes x et h de ces flexions ? (o/n) ") == "o":
			wj, flexj, pronj = w_flex(forme,pron,'j')
			copy(wj)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(flexj))

			wj_x, varj_x = w_var(flexj, pronj, 'x')
			copy(wj_x)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(varj_x))

			wj_h, varj_h = w_var(flexj, pronj, 'h')
			copy(wj_h)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(varj_h))



			wn, flexn, pronn = w_flex(forme,pron,'n')
			copy(wn)
			saisir("\n\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(flexn))

			wn_x, varn_x = w_var(flexn, pronn, 'x')
			copy(wn_x)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(varn_x))

			wn_h, varn_h = w_var(flexn, pronn, 'h')
			copy(wn_h)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(varn_h))



			wjn, flexjn, pronjn = w_flex(forme,pron,'jn')
			copy(wjn)
			saisir("\n\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(flexjn))

			wjn_x, varjn_x = w_var(flexjn, pronjn, 'x')
			copy(wjn_x)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(varjn_x))

			wjn_h, varjn_h = w_var(flexjn, pronjn, 'h')
			copy(wjn_h)
			print("\t Page de '{}' copiée dans le presse-papier.".format(varjn_h))

		else:
			wj, flexj = w_flex(forme,pron,'j')[:2]
			copy(wj)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(flexj))

			wn, flexn = w_flex(forme,pron,'n')[:2]
			copy(wn)
			saisir("\t Page de '{}' copiée dans le presse-papier. [Entrée] pour continuer…".format(flexn))

			wjn, flexjn = w_flex(forme,pron,'jn')[:2]
			copy(wjn)
			print("\t Page de '{}' copiée dans le presse-papier.".format(flexjn))