Ver código fonte

fichiers d'extraction

Thierry Dumont 1 mês atrás
pai
commit
1aa1185d56
3 arquivos alterados com 219 adições e 0 exclusões
  1. 13 0
      README.md
  2. 105 0
      extr.py
  3. 101 0
      tpl.tex

+ 13 - 0
README.md

@@ -0,0 +1,13 @@
+* un répertoire pas article
+
+  dans ce répertoire
+
+  - configurer data_titre
+  - python ../extr1.py
+
+
+* Dans le répertoire All
+
+  -configurer all_texts
+    python tout.py    fabrique le fichier final.tex
+   - compiler final.tex avec lualatex

+ 105 - 0
extr.py

@@ -0,0 +1,105 @@
+#!./venv/bin/python
+import sys,pypandoc,os,re,subprocess
+#
+def star_sec(l):
+    it=iter(L)
+    ret=[]
+    passed= False
+    for x in it:
+        if "begin{document" in x:
+            passed= True
+        if passed and "section[" in x:
+            s=x
+            while "label" not in x:
+                x=next(it)
+                s=s+" "+x
+
+            if not "}" in s:
+                x=next(it)
+                s=s+x
+            k=s.find("]")
+            r=(s[:k]+"}").replace("[","*{")+" "
+            ret.append(r)
+            ret.append("\n")
+        else:
+            ret.append(x)
+    return ret
+#
+
+#-----------------------------------------------------------------------
+with open("data_titre") as f:
+    lt=f.readlines()
+if (llt:=len(lt))!=6:
+    m=f"\nle fichier data-titre a {llt} lignes (il en faut 6)"
+    raise Exception(m)
+fich=lt[0].strip()
+le_titre="\\titre{"+"}{".join([x.replace("\n","") for x in lt[1:]])+"}"+"\n"
+print(le_titre)
+#
+template="../tpl.tex"
+#
+exten=fich.split(".")[-1]
+
+if exten=="docx" or exten=="odt":
+    futurTex= fich.replace(exten,"tex")
+else:
+    s=f"\n{fich} : extension incorrecte"
+    raise Exception(s)
+
+#répertoire pour les images
+images= fich.split(".")[0]+"-media"
+print("Répertoire des images : ",images)
+if not os.path.isdir(images):
+    os.mkdir(images)
+
+# conversion en latex
+#extra_args= ["-s",f"--extract-media={images}"]
+extra_args= ["-s",f"--template={template}",f"--extract-media={images}"]
+#extra_args= ["-s",f"--template={template}",f"--extract-media={images}",
+#             f"--lof=true"]
+L = pypandoc.convert_file(fich, 'tex',
+                          extra_args=extra_args).splitlines()
+
+#-----------------------------------------------------------------------
+
+# section -> section*
+rechsec= r"section[{\[]"
+rechsecc=re.compile(rechsec)
+
+# pour modifier le latex en changeant le chemin vers les images.
+if exten=="docx":
+    rechgra=r"includegraphics\[.*\]{media.*}"
+    repPath=("media",f"{images}/word/media")
+elif exten=="odt":
+    rechgra=r"includegraphics\[.*\]{Pictures.*}"
+    repPath=("Pictures",f"{images}/Pictures")
+    
+rechgrac=re.compile(rechgra)
+
+with open(futurTex,"w") as f:
+    L1=star_sec(L)
+
+    
+    rp0,rp1= repPath
+    for l in L1:
+        
+        while (q:=rechgrac.search(l)) != None:
+            l=l.replace(rp0,rp1)
+        l=l.replace("\\begin{quote}","")
+        l=l.replace("\\end{quote}","")
+        
+        f.write(l)
+        f.write("\n")
+
+        
+        if "pagestyle" in l:
+            f.write(le_titre)
+
+#---fin d'éciture du fichier tex
+#
+# lualatex, 2 fois:
+for i in {1,2}:
+    subprocess.run(["/usr/bin/lualatex", futurTex])
+#--- fin
+
+

+ 101 - 0
tpl.tex

@@ -0,0 +1,101 @@
+\documentclass[10pt]{book}
+\usepackage{geometry}
+\geometry{
+total={130mm,212mm},
+  }
+%\usepackage[showframe,b5paper]{geometry}
+%
+%\setcounter{secnumdepth}{-4}
+%\setcounter{tocdepth}{0}
+\usepackage{mfirstuc}
+%
+%\usepackage[fontsize=10]{fontsize}
+%
+%\sepackage[cam]{crop}
+%\usepackage[cross,b5,center]{crop}
+%\usepackage[showframe,b5paper,verbose]{geometry}
+\counterwithin{figure}{section}
+%\usepackage{fontspec}
+%\usepackage{lmodern}
+%\usepackage{ebgaramond}
+%\usepackage{ebgaramond-maths}
+%\usepackage{times}
+\usepackage[export]{adjustbox}
+\usepackage{wrapfig}
+% \usepackage{fourier}
+%\usepackage[T1]{fontenc}
+
+\usepackage[french]{babel}
+%\frenchsetup{og=«, fg=»} % inutile avec lualatex
+
+\usepackage{textcomp}
+\usepackage{epigraph,csquotes,verse}
+
+\usepackage{graphicx}
+\usepackage{layout}
+
+%
+\usepackage{titlesec}
+\usepackage{chngcntr}
+\usepackage{upquote}
+\usepackage{microtype}
+\usepackage{xcolor}
+\usepackage{longtable}
+\usepackage{booktabs}
+\usepackage{bookmark}
+\usepackage{array}
+\usepackage{calc}
+
+%\usepackage{footnotehyper}
+%\usepackage{footnote}
+\usepackage{soul}
+\usepackage{multirow}
+\usepackage{placeins}
+
+\providecommand{\tightlist}{%
+	   \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
+
+% \renewcommand{\thesection}{}
+% \renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}}
+% \makeatletter
+% \def\@seccntformat#1{\csname #1ignore\expandafter\endcsname\csname the#1\endcsname\quad}
+% \let\sectionignore\@gobbletwo
+% \let\latex@numberline\numberline
+% \def\numberline#1{\if\relax#1\relax\else\latex@numberline{#1}\fi}
+% \makeatother
+
+\newcommand{\mysection}[2]{\section*{ #2}}
+
+\newcommand{\titre}[5]{% date / type /auteur/ membre/ titre
+  %\section*[{\bfseries #1.} \capitalisewords{#2} par #3, #4.\\#5]{}%
+  %{\raggedright\sl\bfseries #1}%
+  {\raggedright{\textsl{\bfseries\large \capitalisewords{#1}}}}\\%
+  {\raggedright{\bfseries\large \capitalisewords{{#2}} de #3,} \textsl{#4}}%
+   \addcontentsline{toc}{section}{{\bfseries #1.} \capitalisewords{#2} par #3, #4.\\#5}%
+  \vspace*{24pt}%
+  \begin{center}{\Large\bfseries #5}\end{center}%
+  \vspace*{5mm}%
+}
+% \makeatletter
+
+% \renewcommand\section{\@startsection {section}{1}{\z@}%
+%                                    {-3.5ex \@plus -1ex \@minus -.2ex}%
+%                                    {-1em}%
+%                                    {\normalfont\large\scshape}}
+
+% \makeatother
+%\titleformat{\section}[block]{\normalsize\scshape\filcenter}{}{1em}{}
+\titleformat{\section}[block]{\large\bfseries}{}{100em}{}
+\titleformat{\subsection}{\normalsize\bfseries}{}{}{}
+%
+
+%
+\begin{document}%\layout
+\pagestyle{plain}
+\newcounter{none}
+% \maketitle
+
+
+$body$
+\tableofcontents
+\end{document}