Remplir des champs identiques dans des fichiers .tex
Fermé
masal1
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un programme qui modifie automatiquement des champs déjà définis dans plusieurs
Par exemple, dans mon modèle, j'ai défini un champ
Parfois les substitutions sont communes entre les différents fichiers, il est donc inutile de les remplir plusieurs fois. comment puis-je résoudre ce problème ?
J'ai un programme qui modifie automatiquement des champs déjà définis dans plusieurs
template .text.
Par exemple, dans mon modèle, j'ai défini un champ
def\clients{#.......#}le code demande avec quoi je veux le remplacer .
Parfois les substitutions sont communes entre les différents fichiers, il est donc inutile de les remplir plusieurs fois. comment puis-je résoudre ce problème ?
import os, subprocess, re def find_occurrences(template_tex): # Open template.tex with open(template_tex, "r") as f: filedata = f.read() # Find occurrences of #item# return set(re.findall("\#(.*?)\#", filedata)) def prompt_replacements(occurrences): replacements = dict() # Replacing fields for occurrence in occurrences: replaceby = input("Replace " + occurrence + " by: " ) replacements[occurrence] = replaceby return replacements def clean_latex_temporary_files(result_tex): filename_wext = result_tex[:result_tex.rfind(".")] for ext in ["tex", "aux", "log"]: print("rm", filename_wext + "." + ext) os.remove(filename_wext + "." + ext) def compile_latex(result_tex): # Convert result.tex to result.pdf proc = subprocess.Popen(["pdflatex", "-interaction=nonstopmode", result_tex]) proc.communicate() clean_temporary_files(result_tex) def make_replaced_latex(template_tex, result_tex, replacements): # Write results with open(template_tex, "r") as f: filedata = f.read() for (occurrence, replaceby) in replacements.items(): filedata = filedata.replace("#" + occurrence + "#", replaceby) with open(result_tex, "w") as f: f.write(filedata) def main(): map_template_result = { "template1.tex" : "result1.tex", "template2.tex" : "result2.tex", "template3.tex" : "result3.tex", } occurrences = set() for template_tex in map_template_result.keys(): occurrences |= find_occurrences(template_tex) replacements = prompt_replacements(occurrences) for (template_tex, result_tex) in map_template_result.items(): make_replaced_latex(template_tex, result_tex, replacements) compile_latex(result_tex) clean_temporary_files(result_tex) main()
A voir également:
- Remplir des champs identiques dans des fichiers .tex
- Renommer des fichiers en masse - Guide
- Lire des fichiers epub - Guide
- Gestion des fichiers - Télécharger - Gestion de fichiers
- Vérificateur des fichiers système - Guide
- Comment ouvrir des fichiers .docx - Guide