web-dev-qa-db-fra.com

Système de construction recommandé pour la latex?

J'essaie de comprendre le meilleur système de construction pour la latex.

Actuellement, j'utilise latex-makfile , édition dans VIM et visualisant les modifications de Okular ou GV. Le problème majeur est que cela se cache parfois des erreurs sur moi et je dois courir le latex manuellement. Les principaux avantages sont qu'il fait toute l'itération dont j'ai besoin et offre simplement pdf et ps.

Si vous avez de l'expérience avec

  • latex-mk
  • vim-latex
  • kile
  • lyx
  • miktex
  • latex-makefile
  • le filet de latex ultime
  • caoutchouc
  • des autres que je n'ai pas rencontré

Devriez-vous les recommander et pourquoi/pourquoi pas?

52
Paul Biggar

Après avoir examiné toutes ces options pendant un certain temps, je me suis installé avec la solution suivante.

  • Définissez Vim pour écrire en continu comme je tape .
  • Exécutez un script en arrière-plan pour créer continuellement, rafraîchir le PDF tel qu'il va. Latexmk est presque suffisamment bon, sauf que cela se développe en place, ce qui est rechargé à un mauvais moment dans Okular (mon spectateur).

Le script est disponible à https://github.com/pbiggar/texbuild .

Utilisez Caoutchouc-Info pour obtenir les erreurs et avertissements du fichier journal. Le script ci-dessus enregistre le fichier journal dans t.log. Dans Vim:

autocmd FileType tex set makeprg=rubber-info\ t.log
autocmd FileType tex set errorformat=%f:%l:\ %m
10
Paul Biggar

Je viens d'essayer la latexmk. Si tu fais

latexmk -pvc file.tex 

Ensuite, il sera aperçu automatique (DVI par défaut).

  • Gère les dépendances
  • DVI, PS ou PDF
  • ITerat bien.
  • Très configurable, voir man latexmk

Downsides:

  • Il ne condense pas d'erreurs, ce qui n'est pas extrêmement utile (solution de contournement: utiliser des informations en caoutchouc séparément)
  • Bug dans le fichier man: "Parfois, un spectateur (GV) tente de lire un fichier .PS ou an .pdf mis à jour après le début de sa création, mais avant que le fichier soit terminé. Travailler: Actualiser manuellement (ou rouvrer).". Il serait préférable de le construire via un fichier temporaire .pdf pour éviter cela.
  • Pas extrêmement convivial.
21
Paul Biggar

Je ne l'ai pas utilisé moi-même, mais j'ai entendu parler de caoutchouc comme une bonne alternative.

De leur site Web:

Le caoutchouc est un programme dont le but est de gérer toutes les tâches liées à la compilation des documents de latex. Cela inclut la compilation du document lui-même, bien sûr, suffisamment de fois afin que toutes les références soient définies et exécutant Bibtex pour gérer les références bibliographiques. L'exécution automatique de DVIPS pour produire des documents PostScript est également incluse, ainsi que l'utilisation de PDFLATEX à produire PDF Documents.

10
hsribei

J'utilise Eclipse avec le complément Texecplise pour avoir modifié mes fichiers Tex. Il a une surbrillance de la syntaxe pour la latex. Lorsque vous vous demandez un aperçu d'un fichier Tex non modifié et déjà compilé, il ouvre le fichier dans la visionneuse. Lorsque le fichier Tex a été modifié, il compila le fichier Tex avant de le visualiser. Il fait les itérations nécessaires, mais seulement si nécessaire.

Un autre avantage est que toutes les erreurs et les avertissements sont résumés dans une boîte et ils sont mis en évidence dans le fichier Tex! Ceci est un capture d'écran à partir de la page d'accueil Texeclipse page d'accueil.

5
Thierry

J'ai posté une réponse détaillée à l'aide de Scons sur tex.stackexchange .

Fondamentalement, vous mettez cela dans un fichier appelé SConstruct:

# make sure scons finds tex executables:
import os
env = Environment(ENV=os.environ)
# target and source:
pdf_output = env.PDF(target='main.pdf', source='main.tex')
# make sure that the pdf is reloaded properly (e.g., in Skim)
env.Precious(pdf_output)

Vous pouvez construire le PDF simplement en courant

scons

incroyablement , SCONS détectera les modifications apportées aux fichiers\inclus dans le main.tex Fichier et aussi le fichier de bibliographie!

5
Olivier Verdier

J'essaie du caoutchouc pendant un moment. Je condenserai les résultats ici:

  • Le caoutchouc convertira automatiquement les fichiers .eps en .pdfs pour pfdlatex. Cependant, il semble que cela ne fait que cela pour les macros inclusegraphics. Si vous avez votre propre macro, il n'y a pas.
  • caoutchouc-info est super, qui est magique. C'est certainement meilleur que tout ce que j'ai vu pour obtenir un message d'erreur et des lignes. Et vous n'avez pas besoin d'utiliser du caoutchouc pour construire pour l'utiliser.
  • Il ne semble pas savoir quand arrêter de itération, s'arrêtant souvent tôt.
  • Il écrase votre PDF tel qu'il construit, qui est irritant (il manque une belle fonctionnalité du filet de latex où il le construit dans un fichier temporaire).
4
Paul Biggar

Je voulais utiliser le script que vous avez publié dans votre Réponse finale .

Malheureusement, cela n'a pas fonctionné avec mon cadre (Macvim avec Vim-Latexsuite, Skim comme Viewer et Xetex). J'utilise aussi la recherche avant (c'est-à-dire que j'utilise la fonctionnalité qui appuyait sur \ls dans VIM va passer au point correspondant du PDF Document dans la visionneuse ouverte).

En outre, mon document n'est pas appelé thesis.tex (grande surprise; ce n'est pas une thèse). J'ai donc fait plus de travail de configuration que je voudrais partager. Attention, mes compétences de bash sont horribles.

#!/bin/bash

set -x
ulimit -t 10 # sometimes pdflatex gets stuck

if [ "$1" = "" ]; then
    echo "No target name specified"
    exit 1
fi

TARGET=$1
SOURCE=$1.tex
TMPSOURCE=_$TARGET.tex
TMPTARGET=_$TARGET

while [ 1 ]; do
    # Compile a different file ($TMPSOURCE.pdf) so that it doesn't reload mid-compile
    cp $SOURCE $TMPSOURCE
    # better than running pdflatex manually, as this wont rebuild if there's nothing there.
    latexmk -pdf -silent $TMPTARGET > /dev/null

    # For rubber-info
    cp $TMPTARGET.log $TARGET.log

    if [ -e $TMPTARGET.pdf ]; then # Check the compile succeeded first
        # No output file yet.
        [ ! -e $TARGET.pdf ]
        HASNOPDF=$?
        # ignore if it's unchanged.
        # OS X diff doesn't consider binary files. Single-line output, return value 2
        diff $TARGET.pdf $TMPTARGET.pdf
        OUTPUTDIFFERS=$?
        if [ $HASNOPDF -eq 0 -o $OUTPUTDIFFERS -ne 0 ]; then
            # Do NOT RM since Skim cannot deal with this.
            cp $TMPTARGET.pdf $TARGET.pdf
        fi
    fi

    sleep 1 # give it time to be killed by a CTRL-C
done

Cela compilait un fichier temporaire et la copie à tout nom donné (au lieu de l'inverse de votre script); Utilisation du script:

./scriptname project

project est le nom du fichier Tex, sans extension de fichier.

J'ai aussi changé le rubber-info ligne:

autocmd FileType tex exe "set makeprg=rubber-info\\ _" . expand("%:t:r") . ".log"

Et j'avais besoin de corriger mon latexmk pour utiliser Xetex car le nom de l'exécutable était codé dur.

Malheureusement, cela détruit toujours la sortie PDF lorsque j'ai enregistré mon document avant de terminer une déclaration, puisque latexmk semble toujours Produire a PDF fichier, même sur erreur - et son code de retour est toujours 0, ce qui suce.

(Pour clarifier cela, disons que je viens de taper emph{ dans mon document et le sauvegarder. Le script de fond compilera rapidement le document et échouera. Mais il produira toujours un fichier de sortie (largement vide)).

En outre, la recherche vers l'avant ne fonctionne plus correctement; Il saute essentiellement à un mauvais point dans le document. Je soupçonne que cela a quelque chose à voir avec mon copiant le document avant la compilation.

Il s'agit donc toujours d'une solution complètement insatisfaisante, même si je n'avais même pas activé une économie continue sur la frappe à Macvim.

2
Konrad Rudolph

Auctex & Aperçu-Latex avec Emacs Une autre option.

Vous pouvez également disposer d'Emacs ouvrir le fichier DVI ou PDF résultant, et si vous tournez le mode de revenir automatique pour ce tampon, les modifications seront rendues chaque fois que vous recompilez le document.

1
mhb

((Ceci est un travail en cours

J'essaie du vim-latexsuite pour le moment. Il transforme essentiellement Vim en un IDE pour latex.

Courbe d'apprentissage:

  • Très inincutrice, mais après le tutoriel, cela semble bien.
  • Il redéfinit certaines clés que j'aime et je n'arrive pas à les résoudre.

Saisie automatique:

  • Fait en utilisant des macros intégrées plus simples
  • L'ajout << + >> pour pour les macros utilisateur est très gênant.
  • Remplacer "avec` `` et similaire est agréable jusqu'à ce que vous le souhaitez "pour une raison quelconque, alors son exercice de frustration.
  • Son autocomplete peut aussi être ennuyeux. Je dois me reprogrammer pour travailler en latex.

Système de construction:

  • Affreux
  • quickfix ne fonctionne pas - cela me met souvent dans le mauvais fichier
  • Lorsque la latex signale des erreurs avec le résultat divisé sur 2 lignes, cela ne le détecte pas.
1
Paul Biggar

"Mieux" est un terme très relatif ... que voulez-vous faire d'autre? Il semble que ce maquillage gère un peu un peu, et cela me donne envie de courir un * Nix au travail au lieu de Windows ... S'il y a plus de choses que vous devez gérer avec le maquillage, pourquoi ne pas les ajouter?

Pour le faire "mieux", vous auriez besoin de fournir plus de détails sur ce que vous faites exactement.

Par exemple, vous pouvez utiliser le fichier .log avec Grep, rechercher des erreurs ou des avertissements, de les jeter dans un autre fichier, puis ouvrez le nouveau fichier afin que vous puissiez lire les erreurs.

Tout dépend de ce que vous voulez faire ...

0
Mica

J'utilise le Latex-Makefile pendant un moment. C'est très bien si vous essayez d'utiliser un cycle d'édition-compile-aperçu:

  • Prend presque zéro configuration.
  • Construit .ps ou .pdf.
  • Gère toute l'itération nécessaire. Je dois littéralement écrire rien d'autre.
  • Assez robuste, mais parfois les erreurs et les avertissements se font mutiller.
  • Il ne tue pas l'ancien PDF tant que le nouveau est construit.
  • Il construit d'autres fichiers, comme la génération de EPS de GNUPLOT. Je n'ai pas trouvé cela énormément utile cependant.
  • L'auteur est très rapide de répondre aux demandes de fonctionnalités.
  • Je peux reproduire les avantages de la latexmk assez facilement avec:

    while [ 1 ]; do /usr/bin/make; done
    

Quelques inconvénients:

  • Il n'autorise que la génération PDF via DVI -> PS -> PDF, au lieu de passer directement via PDFTEX.
  • Sa sortie d'erreur n'est pas identique à celle du latex standard, de sorte que vim n'est pas en mouvement à la bonne ligne.
  • Cela ne recompilate pas toujours sur les changements de Bibtex et d'autres sources non-Tex.
  • Si je supprimais un fichier, il ne supprime pas la dépendance sans faire propre.
0
Paul Biggar

Jetez un coup d'œil à Texmaker . :-)

caractéristiques (de wiki):

  • Vérification orthographique en ligne.
  • Un éditeur UNICODE pour écrire des fichiers source de latex (Syntaxe en surbrillance, Annuler-Redo, Recherche-Remplacement, Checker orthographique ...)
  • Les étiquettes de latex et les symboles mathématiques peuvent être entrés avec une souris
  • Modèles de documents et de section
  • Les programmes liés au latex peuvent être lancés
  • Gestion de la base de données BIBTEX
  • Un contour ou "vue de structure"
  • Logfiles lors de la compilation de latex et la possibilité de "intervenir" des erreurs de source découvertes par le compilateur
  • Un latex intégré à l'outil de conversion HTML

caractéristiques (de moi):

  • assistants utiles pour l'insertion de tables, de citation, de référencement
  • support bidirectionnel
  • raccourcis de clavier utiles
  • Les mots complets automatiques (spécialement utile avec référencement)
  • définir vos propres instructions
0
sorush-r

J'utilise miktex en combinaison avec texniccenter . Cela fonctionne bien pour mes besoins. Je n'ai jamais eu le système cacher des erreurs ou des avertissements. Les scripts de construction personnalisés sont faciles à créer et à configurer.

0
Martijn