J'ai besoin de mettre en évidence le code source dans LaTeX. Le paquetlistings
semble être le meilleur choix pour la plupart des cas d'utilisation et pour moi, il l'était jusqu'à présent.
Cependant, maintenant j'ai besoin de plus de flexibilité. Généralement, ce que je recherche, c'est un vrai lexer. En particulier, j'ai besoin (pour une définition de langage propre) de définir (et de mettre en évidence!) Ses propres styles de nombres. listings
ne permet pas de surligner les nombres dans le code. Cependant, je dois produire quelque chose comme ceci:
listings
ne peut pas non plus gérer les délimiteurs arbitraires pour les chaînes. Considérez le code Ruby valide suivant:
s = %q!this is a string.!
Ici, !
peut être remplacé par presque tout délimiteur.
(Cela listings
ne peut pas gérer Unicode est également assez vexant, mais c'est un autre problème.)
Idéalement, je recherche une extension listings
qui me permette de fournir des règles de lexing plus complexes. Mais sauf cela, je recherche également des alternatives viables.
D'autres discussions ont suggéré d'utiliser des Pygments qui peuvent produire une sortie LaTeX. Il existe même un package - texments
- pour faciliter la transition.
Cependant, cela manque cruellement de fonctionnalités. En particulier, je m'intéresse à la listings
numérotation des lignes -style, aux références de ligne de code source et à la possibilité d'incorporer LaTeX dans le code source (options texcl
et mathescape
dans listings
).
À titre d'exemple, voici une composition de code source listings
qui montre certaines des choses qu'un remplacement devrait également fournir:
[«Ajout latéral» modifié à partir de piratages Bit Twiddling]
la source
Réponses:
Prenant à cœur les conseils de Norman, j'ai piraté une solution qui utilisait (un correctif ) Pygments pour mettre en évidence et insérer autant de fonctionnalités que possible sans éclatement ;-)
J'ai également créé un package LateX, une fois mon patch Pygments sorti en version 1.2 …
Présentation frappée
minted est un package qui utilise Pygments pour fournir une coloration syntaxique de premier ordre dans LaTeX. Par exemple, il autorise la sortie suivante.
Voici un fichier minimal pour reproduire le code ci-dessus (notez que l'inclusion de caractères Unicode peut nécessiter XeTeX)!
Cela peut être composé à l'aide de la commande suivante:
(Mais minted fonctionne aussi avec
latex
etpdflatex
…)minted.sty
fonctionne similaire àtexments.sty
mais permet des fonctionnalités supplémentaires.Comment l'obtenir
minted est listé sur CTAN ( informations sur le package )
la documentation est bien entendu incluse.
minted est maintenant entretenu par Geoffrey Poore. La version de développement, y compris le dernier
.sty
fichier , est disponible sur github.com/gpoore/minted et peut être clonée à partir de là.Encore une fois, merci à Norman de m'avoir motivé à produire ce package.
la source
easy_install
) le processus ne sera jamais très fluide.TeX est (célèbre) Turing-complet, mais je suis sûr que vous devrez écrire cette extension vous-même. La documentation indique clairement que l'auteur d'origine de l'
listings
orphelin en 2004 et qu'il n'a pas été mis à jour depuis 2006. Le package n'a pas été conçu pour remplacer la mise en forme des littéraux numériques, mais vous pouvez peut-être le modifier en changeant le Définition de\lst@ProcessDigit
. Si cela ne fonctionne pas, vous devrez comprendre en détail le fonctionnement des options de "style d'identifiant" et vous devrez dupliquer cette machine pour vos littéraux numériques.Je ne comprends pas très bien pourquoi vous êtes si réticent à introduire un outil externe dans votre chaîne d'outils, mais parce que vous l'êtes, vous devrez faire un travail supplémentaire. Après avoir regardé le code source, je m'attends à ce que la modification
listings
soit possible, mais je choisirais personnellement de prétraiter mon LaTeX à la place.la source
\label
s dans le code.listings
, j'ai déjà jeté un œil à sa source - et malheureusement, je ne le comprends pas du tout. Mes compétences TeX sont loin de ce niveau. Jusqu'à présent, je n'ai de toute façon jamais utilisé le sous-ensemble LaTeX de TeX.minted
le processus de publication LNCS de Springer.Ce s'agit d'un package qui convertit le code source en TeX et LaTeX avec mise en évidence de la syntaxe. Il est possible d'ajouter facilement des définitions de langage de programmation personnalisées.
Highlight prend en charge 100 langages de programmation et comprend 50 thèmes de couleurs. Il comporte un reformatage et une mise en retrait du code.
Je ne l'ai pas utilisé pour savoir comment ça fonctionne BIEN, mais quelqu'un d'autre que je connais a dit que cela fonctionnait assez bien. Si j'en ai l'occasion, je vais l'essayer moi-même et voir.
la source
highlight
partage cependant tous les problèmes des Pygments. En particulier, ce n'est pas un package LaTeX , malgré ce que dit sa description. Il s'agit simplement d'un programme autonome. Le problème, tout comme avec Pygments, est de savoir comment l'utiliser de manière significative à partir de LaTeX et fournir toutes les bonnes choses quilistings
ont.