Page 1 sur 1

Texworks + Latexmk

Posté : mer. 29 févr. 2012, 18:18
par GM
Ce sujet ne parlera pas d'Asymptote : il est la reprise d'un message que j'ai écrit sur le forum mathematex... et traite plus spécifiquement la mise en place préalable du couple texworks/latexmk, avant d'envisager d'intégrer des figures Asymptote dans les documents latex.

Il existe un autre sujet relatif à TeXworks (et latexmk) sur ce forum, où il est question de surcroit de leur utilisation avec Asymptote : il faut d'abord lire celui-ci. ;-)

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


  • Il faut, avant tout, savoir, sans entrer dans les détails, qu'il peut y avoir des subtilités de syntaxes, légèrement différentes (essentiellement des problèmes de guillemets), pour les options de latexmk suivant que :
    • le système est windows ou unix/linux...
    • la saisie des options s'effectue
      • en console ;
      • dans texworks via les menus ;
      • directement dans le fichier de configuration tools.ini de texworks.

  • Les syntaxes (analogues pour latexmk-via-pdflatex et latexmk-via-latex) qui fonctionnent bien dans texworks sont :

    1. Si on saisit les profils via l'interface :
      1. Pour obtenir un pdf via pdflatex :

        Image

        Attention : Une mise en garde pour l'exemple ci-dessus et les exemples qui suivent !
        Il est possible de modifier l'ordre de certains arguments mais il y a quelque chose à comprendre sur -e, avant de se l'autoriser.
        Des explications suivent. Lire notamment le NOTA BENE de fin de message.

      2. Pour obtenir un pdf via latex/ps/pdf :

        Image
  • Si on saisit les profils directement dans tools.ini :

    1. Pour obtenir un pdf via pdflatex :

      Code : Tout sélectionner

      [001]
      name=LaTeXmk
      program=latexmk.exe
      arguments=-e, "$pdflatex=q/pdflatex -synctex=1 %O -shell-escape %S/", -pdf, $fullname
    2. Pour obtenir un pdf via latex/ps/pdf :

      Code : Tout sélectionner

      [002]
      name=LaTeXmkpspdf
      program=latexmk.exe
      arguments=-e, "$latex=q/latex -synctex=1 %O -shell-escape %S/", -pdfps, $fullname

    Attention : veiller à lire le Nota Bene qui suit... pour avoir conscience :
    • de la syntaxe de l'argument -e pour ne pas se méprendre sur ce que l'on peut inverser ou supprimer dans les exemples qui précédent ;
    • des différences de syntaxes entre MS-Windows et UNIX/LINUX pour les guillemets... !!

////////////////////////////////////
////////////////////////
////////////
NOTA BENE :

  • la virgule après -e est une astuce pour que cela se passe bien dans texworks... mais il ne faut pas que cela donne à croire que -e est une option à part entière : c'est le début d'une option dont la ligne suivante est la chaine de caractères qui s'y rattache.

    -e <code>

    Execute the specified initialization code before processing.
    The code is Perl code of the same form as is used in latexmk's initialization files -- for more details, see the information on the -r option, and the section about "Configuration/initialization (RC) files".
    The code is typically a sequence of assignment statements separated by semicolons.

    The code is executed when the -e option is encountered during latexmk's parsing of its command line.
    See the -r option for a way of executing initialization code from a file.
    An error results in latexmk stopping.
    Multiple instances of the -r and -e options can be used, and they are executed in the order they appear on the command line.

    Some care is needed to deal with proper quoting of special characters in the code on the command line.
    For example, suppose you want to set the latex command to use its -shell-escape option, then under UNIX/LINUX you could use the line

    Code : Tout sélectionner

    latexmk -e '$latex=q/latex %O -shell-escape %S/' file.tex


    Note that the single quotes block normal UNIX/LINUX command shells from treating the characters inside the quotes as special.
    (In this example, the q/.../ construct is a Perl idiom equivalent to using single quotes. This avoids the complications of getting a quote character inside an already quoted string in a way that is independent of both the shell and the
    operating-system.)

    The above command line will NOT work under MS-Windows with cmd.exe or command.com or 4nt.exe.

    For MS-Windows with these command shells you could use

    Code : Tout sélectionner

     latexmk -e "$latex=q/latex %O -shell-escape %S/" file.tex


    or

    Code : Tout sélectionner

     latexmk -e "$latex='latex %O -shell-escape %S'" file.tex


    The last two examples will NOT work with UNIX/LINUX command shells.


    A noter, dans l'explication ci-dessus, la différence de syntaxe entre MS-Windows et UNIX/LINUX pour les guillemets !!

  • la synchronisation via synctex (qui permet de faire des allers retours entre tex et pdf) fonctionne aussi bien avec les deux modes latexmk-via-pdflatex et latexmk-via-latexpspdf (alors qu'il a pu être écrit sur la toile que cela ne fonctionnait qu'en passant par pdflatex.

    Le sens le plus utile des deux étant celui, pour moi, qui consiste, en visualisant un pdf, à pouvoir faire un clic droit pour "Aller au source" (pour notamment modifier quelque chose ou récupérer un morceau de code) :

    Image

  • penser à supprimer l'extension .exe pour la ligne Programme... pour ceux qui ne sont pas sous windows ! ;-)

Re: Texworks + Latexmk

Posté : jeu. 1 mars 2012, 10:14
par GM
Petites modifications apportées au tutoriel précédent : avec toutes les alertes que j'ai mises... celui qui se fait avoir pour -e ou pour les guillemets... le fait exprès. :mrgreen: