Page 1 sur 1

TexWorks (MikTeX2.9) pour compiler un TeX avec figures Asy

Posté : ven. 30 déc. 2011, 11:20
par GM
Commençons ce tutoriel :
  • en rappelant que l'éditeur Texworks s'installe, lors de l'installation de MikTeX 2.9, dans sa version 0.4 ;
  • en indiquant qu'il y a un deuxième sujet sur ce forum, traitant spécifiquement du couple texworks+latexmk, qu'il vaut peut-être mieux lire avant celui-ci.

Dans les modes de compilation proposés par défaut, on trouve ceci, via le menu Edition/Préférences/Composition :

Image


ce qui génère (à la première utilisation ou modification) un fichier tools.ini (qui atterrit dans C:\Users\VotrePseudoSousWindows\AppData\Local\MiKTeX\2.9\TeXworks\0.4 sous Windows7) avec le contenu suivant :

Code : Tout sélectionner

[001]
name=LaTeXmk
program=latexmk.exe
arguments=-e, "$pdflatex=q/pdflatex -synctex=1 %O %S/", -pdf, $fullname
showPdf=true

[002]
name=pdfTeX
program=miktex-pdftex.exe
arguments="-synctex=1", $fullname
showPdf=true

[003]
name=pdfLaTeX
program=miktex-pdftex.exe
arguments="-synctex=1", "-undump=pdflatex", $fullname
showPdf=true

[004]
name=pdfLaTeX+MakeIndex+BibTeX
program=texify.exe
arguments=--pdf, "--tex-option=-synctex=1", $fullname
showPdf=true

[005]
name=XeTeX
program=miktex-xetex.exe
arguments="-synctex=1", $fullname
showPdf=true

[006]
name=XeLaTeX
program=miktex-xetex.exe
arguments="-synctex=1", "-undump=xelatex", $fullname
showPdf=true

[007]
name=XeLaTeX+MakeIndex+BibTeX
program=texify.exe
arguments=--pdf, "--engine=xetex", "--tex-option=-synctex=1", $fullname
showPdf=true

[008]
name=ConTeXt (LuaTeX)
program=context.exe
arguments=--synctex, $fullname
showPdf=true

[009]
name=ConTeXt (pdfTeX)
program=texexec.exe
arguments=--synctex, $fullname
showPdf=true

[010]
name=ConTeXt (XeTeX)
program=texexec.exe
arguments=--synctex, --xtx, $fullname
showPdf=true

[011]
name=BibTeX
program=miktex-bibtex.exe
arguments=$basename
showPdf=false

[012]
name=MakeIndex
program=miktex-makeindex.exe
arguments=$basename


Il va être possible de modifier les modes de compilation par défaut... ou d'en ajouter ................. de deux façons différentes : par le menu Edition/Préférences/Composition... ou directement en éditant le fichier tools.ini.

Le mode de compilation préconisé pour compiler un fichier tex avec des figures en code Asymptote est : latexmk.

Précisons que latexmk est un script perl :

  • qui va nécessiter, pour un utilisateur de Windows, d'installer un compilateur perl qu'il pourra par exemple trouver dans le dossier le plus récent à cette adresse http://downloads.activestate.com/ActivePerl/releases/ où il trouvera un fichier ActivePerl-*.**.*.****-MSWin32-x64-******.msi ou ActivePerl-*.**.*.****-MSWin32-x86-******.msi, à choisir suivant la version de Windows.

  • qui va s'occuper, seul, de gérer les éventuelles compilations nécessaires suivant le contenu du fichier TeX.
    Notamment, si un fichier comporte des figures en langage Asymptote, latexmk se chargera de compiler uniquement le code des nouvelles figures ou des figures modifiées depuis la dernière compilation.


Il est conseillé de d'abord tester le fonctionnement de latexmk sans la moindre figure Asymptote :

Premier test - On obtient ceci :

Image


avec le code suivant :

Code : Tout sélectionner

% !TEX TS-program = latexmk
% !TEX encoding = UTF-8
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[upright]{fourier}
\usepackage[a4paper,%
            hmargin={1cm,1cm},%
            vmargin={1cm,1cm},%
            nohead,nofoot]{geometry}
\setlength{\parindent}{0pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
Test de TexWorks, avec compilation via LaTeXmk

\[ \int_{0}^{1}1+\frac{x}{x^2+1}
   = \left[x+\frac{\ln\left(x^2+1\right)}{2}\right]_{0}^{1}
   = 1 + \frac{\ln(2)}{2}
\]
\end{document}


Si la compilation de l'exemple précédent se passe mal, peut-être faut-il revoir spécifiquement la configuration du couple texworks+latexmk, par le biais de l'autre sujet de ce forum qui l'évoque et dont le lien vient d'être donné.

/////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////
///////////////////////

Pour la compilation, via latexmk, d'un fichier TeX comportant au moins une figure en langage Asymptote, il va être préalablement nécessaire :

  • d'indiquer à latexmk ce qu'il doit faire des environnements asy.

    Un réglage préalable consiste donc à copier le fichier latexmkrc (fourni dans le dossier d'installation d'Asymptote) dans votre dossier personnel C:\Users\VotrePseudoSousWindows\ (à adapter si votre version de Windows n'est pas Seven).

    Ce fichier latexmkrc contient ceci par défaut :

    Code : Tout sélectionner

    sub asy {return system("asy '$_[0]'");}
    add_cus_dep("asy","eps",0,"asy");
    add_cus_dep("asy","pdf",0,"asy");
    add_cus_dep("asy","tex",0,"asy");


    ... mais il pourra être modifié pour passer des options particulières à latexmk.
    Notamment, il sera expliqué ultérieurement comme le modifier pour déplacer les fichiers asy et pdf des images Asymptote dans un sous-dossier /asypdf/ du dossier où se trouve le fichier TeX que l'on compile.

  • de... rien faire de plus ! J'allais suggérer d'ajouter -shell-escape dans la ligne de commande du profil de latexmk dans Texworks... mais c'est apparemment inutile.


Deuxième test - On obtient ceci :

Image


avec le code suivant :

Code : Tout sélectionner

% !TEX TS-program = latexmk
% !TEX encoding = UTF-8
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[upright]{fourier}
\usepackage[a4paper,%
            hmargin={1cm,1cm},%
            vmargin={1cm,1cm},%
            nohead,nofoot]{geometry}
\setlength{\parindent}{0pt}
 
\usepackage{asymptote}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
Test de TexWorks, avec compilation via LaTeXmk,
d'un fichier \TeX{} comportant une figure...

\begin{asy}
size(3cm);
draw(unitcircle,2bp+red);
\end{asy}

... et même une deuxième figure Asymptote :

\hfil
\begin{asy}
size(3cm);
draw(unitsquare,blue+dashed);
\end{asy}

\end{document}


Si la liste des fichiers produits est longue :

TestTexworksLatexmkAsy.aux
TestTexworksLatexmkAsy.fdb_latexmk
TestTexworksLatexmkAsy.log
TestTexworksLatexmkAsy.pdf
TestTexworksLatexmkAsy.pre
TestTexworksLatexmkAsy.tex
TestTexworksLatexmkAsy.synctex.gz
TestTexworksLatexmkAsy-1.asy
TestTexworksLatexmkAsy-1.pdf
TestTexworksLatexmkAsy-2.asy
TestTexworksLatexmkAsy-2.pdf
texput.aux
texput.log


... il va être possible de :
  • faire en sorte que les fichiers liés aux deux images
    TestTexworksLatexmkAsy-1.asy
    TestTexworksLatexmkAsy-1.pdf
    TestTexworksLatexmkAsy-2.asy
    TestTexworksLatexmkAsy-2.pdf

    ainsi que tous les fichiers asy et pdf liés aux images inclus dans les tex d'un dossier... atterrissent dans un même sous dossier /asypdf/.
  • de modifier le fichier latexmkrc pour mettre en place une procédure de suppression de tous les fichiers temporaires voulus, avec une seule commande.

Voir la suite pour des détails sur les deux remarques précédentes.

A noter la présence d'un fichier dont l'extension est fdb_latexmk, qu'il peut-être utile de supprimer... quand on veut que latexmk recompile tout sans tenir compte de compilations précédentes.

------------

Voilà un premier jet de ce tutoriel. Il sera édité ultérieurement pour être complété.

Les éventuelles questions ou suggestions sont à faire dans un sujet disjoint de celui-ci, ou éventuellement par MP... pour que j'ajoute ce qu'il manque au tutoriel.

Re: TexWorks (MikTeX2.9) pour compiler un TeX avec figures Asy

Posté : ven. 30 déc. 2011, 12:44
par GM
Personnalisation des compilations TeX+Asy via Texworks+Latexmk :

  1. Personnalisation du fichier latexmkrc

    1. Pour que tous les fichiers asy et pdf relatifs aux figures Asymptote soient mises dans un sous dossier /asypdf/ :

      • on remplacera les lignes suivantes du fichier latexmkrc

        Code : Tout sélectionner

        sub asy {return system("asy '$_[0]'");}
        add_cus_dep("asy","eps",0,"asy");
        add_cus_dep("asy","pdf",0,"asy");
        add_cus_dep("asy","tex",0,"asy");

        par celles-ci :

        Code : Tout sélectionner

        sub asy {return system("asy -o asypdf/ '$_[0]'");}
        add_cus_dep("asy","eps",0,"asy");
        add_cus_dep("asy","pdf",0,"asy");
        add_cus_dep("asy","tex",0,"asy");

      • et, il faudra alors ajouter la ligne suivante dans les fichiers tex à compiler :

        Code : Tout sélectionner

        \usepackage{asymptote}
        \def\asydir{asypdf} %% <<<< ligne à ajouter
    2. Pour supprimer tous les fichiers temporaires d'un dossier :

      • la commande utile est :

        Code : Tout sélectionner

        latexmk -C

      • et on ajoute une ligne dans le fichier latexmkrc pour préciser les fichiers à supprimer :

        Code : Tout sélectionner

        $clean_ext = "ext1 ext2 ext3 ext4 ...";

        en spécifiant la liste des extensions non désirées.
  2. Modification ou ajout de profils de compilation dans TexWorks

    1. Pour modifier ou créer des profils de compilation impliquant le script latexmk, il sera utile préalablement :

      • de veiller à ce que soit installée une version de latexmk suffisamment récente ;

      • d'en connaitre les principaux arguments :

        Code : Tout sélectionner

        Latexmk 4.28a: Automatic LaTeX document generation routine

        Usage: latexmk [latexmk_options] [filename ...]

          Latexmk_options:
           -aux-directory=dir or -auxdir=dir
                         - set name of directory for auxiliary files (aux, log)
                         - Currently this only works with MiKTeX
           -bibtex       - use bibtex when needed (default)
           -bibtex-      - never use bibtex
           -bibtex-cond  - use bibtex when needed, but only if the bib files exist
           -bm <message> - Print message across the page when converting to postscript
           -bi <intensity> - Set contrast or intensity of banner
           -bs <scale> - Set scale for banner
           -commands  - list commands used by latexmk for processing files
           -c     - clean up (remove) all nonessential files, except
                    dvi, ps and pdf files.
                    This and the other clean-ups are instead of a regular make.
           -C     - clean up (remove) all nonessential files
                    including aux, dep, dvi, postscript and pdf files
                    and file of database of file information
           -CA     - clean up (remove) all nonessential files.
                    Equivalent to -C option.
           -CF     - Remove file of database of file information before doing
                    other actions
           -cd    - Change to directory of source file when processing it
           -cd-   - Do NOT change to directory of source file when processing it
           -dependents or -deps - Show list of dependent files after processing
           -dependents- or -deps- - Do not show list of dependent files
           -deps-out=file - Set name of output file for dependency list,
                            and turn on showing of dependency list
           -dF <filter> - Filter to apply to dvi file
           -dvi   - generate dvi
           -dvi-  - turn off required dvi
           -e <code> - Execute specified Perl code (as part of latexmk start-up
                       code)
           -f     - force continued processing past errors
           -f-    - turn off forced continuing processing past errors
           -gg    - Super go mode: clean out generated files (-CA), and then
                    process files regardless of file timestamps
           -g     - process regardless of file timestamps
           -g-    - Turn off -g
           -h     - print help
           -help - print help
           -jobname=STRING - set basename of output file(s) to STRING.
                    (Like --jobname=STRING on command line for many current
                    implementations of latex/pdflatex.)
           -l     - force landscape mode
           -l-    - turn off -l
           -latex=<program> - set program used for latex.
                              (replace '<program>' by the program name)
           -new-viewer    - in -pvc mode, always start a new viewer
           -new-viewer-   - in -pvc mode, start a new viewer only if needed
           -nobibtex      - never use bibtex
           -nodependents  - Do not show list of dependent files after processing
           -norc          - omit automatic reading of system, user and project rc files
           -output-directory=dir or -outdir=dir
                          - set name of directory for output files
           -pdf   - generate pdf by pdflatex
           -pdfdvi - generate pdf by dvipdf
           -pdflatex=<program> - set program used for pdflatex.
                              (replace '<program>' by the program name)
           -pdfps - generate pdf by ps2pdf
           -pdf-  - turn off pdf
           -ps    - generate postscript
           -ps-   - turn off postscript
           -pF <filter> - Filter to apply to postscript file
           -p     - print document after generating postscript.
                    (Can also .dvi or .pdf files -- see documentation)
           -print=dvi     - when file is to be printed, print the dvi file
           -print=ps      - when file is to be printed, print the ps file (default)
           -print=pdf     - when file is to be printed, print the pdf file
           -pv    - preview document.  (Side effect turn off continuous preview)
           -pv-   - turn off preview mode
           -pvc   - preview document and continuously update.  (This also turns
                        on force mode, so errors do not cause latexmk to stop.)
                    (Side effect: turn off ordinary preview mode.)
           -pvc-  - turn off -pvc
           -quiet    - silence progress messages from called programs
           -r <file> - Read custom RC file
                       (N.B. This file could override options specified earlier
                       on the command line.)
           -recorder - Use -recorder option for (pdf)latex
                       (to give list of input and output files)
           -recorder- - Do not use -recorder option for (pdf)latex
           -rules    - Show list of rules after processing
           -rules-   - Do not show list of rules after processing
           -silent   - silence progress messages from called programs
           -time     - show CPU time used
           -time-    - don't show CPU time used
           -use-make - use the make program to try to make missing files
           -use-make- - don't use the make program to try to make missing files
           -v        - display program version
           -verbose  - display usual progress messages from called programs
           -version      - display program version
           -view=default - viewer is default (dvi, ps, pdf)
           -view=dvi     - viewer is for dvi
           -view=none    - no viewer is used
           -view=ps      - viewer is for ps
           -view=pdf     - viewer is for pdf
           filename = the root filename of LaTeX document

        -p, -pv and -pvc are mutually exclusive
        -h, -c and -C override all other options.
        -pv and -pvc require one and only one filename specified
        All options can be introduced by '-' or '--'.  (E.g., --help or -help.)

      • d'avoir conscience qu'il existe une documentation sur latexmk très détaillée (pdf de 30 pages à ce jour), où sont détaillés énormément de paramètres supplémentaires, susceptibles d'aider à la personnalisation du fichier latexmkrc.

      (Explications complémentaires à venir dans un futur plus ou moins proche)

    2. D'autres profils, n'impliquant pas latexmk, peuvent être intéressants à créer :

      (Explications à venir dans un futur plus ou moins proche)