Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
2_programmation:syntaxe:commentaires:compilation_conditionnelle_et_commentaires [2018/05/25 23:18]
joseph.wright
2_programmation:syntaxe:commentaires:compilation_conditionnelle_et_commentaires [2021/03/29 13:51] (Version actuelle)
jejust Correction de lien interne. Mots-clefs OpenGraph. Balisage.
Ligne 1: Ligne 1:
---- +====== Comment obtenir des commentaires ou des plages de document compilables sous conditions? ======
-title: Conditional compilation and ''​comments''​ +
-category: usage +
-permalink: /​FAQ-conditional +
-date: 2014-06-10 +
----+
  
-# Conditional ​compilation ​and ''​comments''​+Bien que <​latex>​\LaTeX</​latex>​ (ou tout autre dérivé de <​latex>​\TeX</​latex>​) ne ressemble pas vraiment à un compilateur,​ des utilisateurs souhaitent en faire usage ainsi. Leurs besoins sont le plus souvent la « compilation ​conditionnelle » et les « commentaires en bloc ». Et plusieurs moyens ont été mis à disposition pour <​latex>​\LaTeX</​latex>​ à cette fin.
  
-While LaTeX (or any other TeX-derived package) isn't really like a +Les simples ​''​\newcommand{\commentaire}[1]{}'' ​et ''​\iffalse ... \fi'' ​ne sont pas vraiment satisfaisants pour faire des commentaires,​ puisque le bloc de texte ignoré est néanmoins analysé par <​latex>​\TeX</​latex>​. La présence de cette analyse impose des restrictions sur ce que vous êtes autorisé à éviter. Si ce n'est pas un problème //aujourd'hui//cela pourrait devenir une belle épine dans le pied demainComme dans le cas suivant : 
-compiler, people regularly want to do compiler-like things using it. +
-Common requirements are conditional ​''​compilation'' ​and ''​block +
-comments'', ​and several LaTeX-specific means to this end are available.+
  
-The simple `\newcommand{`\gobble`}`[1]`{}`  +<​code ​latex> 
-and `\iffalse`` ... ``\fi` aren't really satisfactory (as +\iffalse % ignore ce qui suit 
-a general solution) for comments, since the matter being skipped is +observons ce qui se passe si nous 
-nevertheless scanned by TeX, not always as you would expect. ​ The +utilisons ​\verb+\iftrue+. Oui, une 
-scanning imposes restrictions on what you're allowed to skip; this may +surprise.
-not be a problem in _today'​s_ job, but could return to bite you +
-tomorrow. ​ For an example of surprises that may come to bite you, +
-consider the following example (derived from real user experience):​ +
-```latex +
-\iffalse % ignoring this bit +
-consider what happens if we +
-use \verb+\iftrue+ ​-- a surprise+
 \fi \fi
-``` +</​code>​
-The `\iftrue` is spotted by TeX as it scans, ignoring the +
-`\verb` command; so the `\iffalse` isn't terminated by the +
-following `\fi`. ​ Also, `\gobble` is pretty inefficient at +
-consuming anything non-trivial,​ since all the matter to be skipped is +
-copied to the argument stack before being ignored.+
  
-If your requirement is for a document from which whole chapters (or +Le ''​\iftrue''​ est repéré par <​latex>​\TeX<​/latex> pendant qu'il scanne, ignorant la commande ''​\verb''​Aussi, le ''​\iffalse''​ n'est pas terminé par le ''\fi''​ suivant. Pour sa partla commande ''\commentaire''​ définie plus haut ne se montre pas très efficace pour traiter tout ce qui n'est pas trivialpuisque tout ce qui doit être ignoré est copié dans la pile d'arguments avant d'être ignoré
-the like) are missing, consider the LaTeX +
-`\include`/`\includeonly` system If you `\include` your +
-files (rather than `\input` them&​nbsp;&​mdash;​ see  +
-[What's going on in my `\include` commands?​](/​FAQ-include)), +
-LaTeX writes macro traces of what's going on at the end of each +
-chapter to the `aux` file; by using `\includeonly`you can give +
-LaTeX an exhaustive list of the files that are needed. ​ Files that +
-don't get `\include`are skipped entirely, but the document +
-processing continues as if they _were_ there, and page, footnote, +
-and other numbers are not disturbed. ​ Note that you can choose which +
-sections you want included interactively,​ using the +
-[`askinclude`](https://​ctan.org/​pkg/​askinclude) package.+
  
-A variant on the `\includeonly` mechanism is offered by the +===== Par l'insertion conditionnelle de fichiers =====
-[`stampinclude`](https://​ctan.org/​pkg/​stampinclude) package, which takes advantage of the pdfTeX +
-`\pdffilemoddate` command. ​ When an `\include`d file is +
-processed in a LaTeX document, an `aux` file is created +
-holding data such as page-number ranges and chapter/​section numbers. +
-When `\stampinclude` is included in a document, it compares the +
-file system modification times for each file and its corresponding +
-`aux` file; the file is only compiled in ''this run''​ of the +
-document if the file is newer than its corresponding `aux` +
-file.  The package requires a current pdfTeX, and will also run on +
-LuaTeX if the [`pdftexcmds`](https://​ctan.org/​pkg/​pdftexcmds) package is available +
-([`pdftexcmds`](https://​ctan.org/​pkg/​pdftexcmds) emulates the requisite pdfTeX commands using +
-`lua`. ​ Apart from this requirement,​ [`stampinclude`](https://​ctan.org/​pkg/​stampinclude) is +
-a low-maintenace object; include it in your document and it silently +
-does its job.  When you want a final version of your document, delete +
-all the `aux` files, and and [`stampinclude`](https://​ctan.org/​pkg/​stampinclude) won'​t +
-interfere.)+
  
-The inverse can be done using the [`excludeonly`](https://​ctan.org/​pkg/​excludeonly) package: this +==== Avec les commandes “\include” et “\includeonly” ====
-allows you to exclude a (list of) `\include`d files from your +
-document, by means of an `\excludeonly` command.+
  
-If you want to select particular pages of your document, ​use Heiko +Si vous avez besoin d'​un ​document ​où vous pouvez escamoter des chapitres entiers (ou portions similaires de texte)essayez le système <​latex>​\LaTeX</​latex>​ des commandes ​''​\include''​ et ''​\includeonly''​ (en tenant compte des remarques de la question « [[3_composition:​texte:​document:​que_fait_vraiment_include|Que fait la commande “\include” ?]] »). 
-Oberdiek'[`pagesel`](https://ctan.org/pkg/pagesel) or the [`selectp`](https://​ctan.org/pkg/selectp) packages You + 
-can do something similar with an existing PDF document (which +Si vous utilisez ''​\include''​ vos fichiers ​(plutôt que ''​\input''​),​ <​latex>​\LaTeX<​/latex> constitue une trace de ce qui se passe à la fin de chaque chapitre dans le fichier ''​aux''​. Ensuite, avec la commande ''​\includeonly'',​ vous pouvez donner à <​latex>​\LaTeX<​/latex> une liste exhaustive des fichiers que vous voulez intégrer dans le documentLes fichiers qui n'​obtiennent pas ''​\include''​ sont entièrement ignorés, mais le traitement du document continue ​//comme s'ils étaient là// et les numéros de page, de note de bas de page et autres ne sont pas perturbés. Notez que vous pouvez choisir les sections que vous souhaitez inclure de manière interactive,​ en utilisant l'​extension ​[[ctanpkg>​askinclude|askinclude]].  
-you may have compiled using `pdflatex` in the first place), + 
-using the [`pdfpages`](https://​ctan.org/​pkg/​pdfpages) package. ​ The job is then done with a +==== Avec l'​extension “stampinclude” ​(et “pdftexcmds”) ==== 
-document ​looking like+ 
-```latex+Une variante du mécanisme ''​\includeonly''​ est proposée par l'​extension [[ctanpkg>​stampinclude|stampinclude]] qui tire parti de la commande ''​pdfTeX''​ ''​\pdffilemoddate''​Lorsqu'​un fichier inséré avec la commande ''​\include''​ est traité dans un document <​latex>​\LaTeX<​/latex>, un fichier ''​aux''​ est créé contenant des données telles que des plages de numéros de page et des numéros de chapitre/sectionLorsque ''​\stampinclude''​ est inclus dans un document, il compare les heures de modification pour chaque fichier inséré et son fichier ''​aux''​ correspondant. Le fichier n'est compilé dans "cette exécution"​ du document que si le fichier est plus récent que son fichier ''​aux''​ correspondant. L'​extension nécessite une version récente de ''​pdfTeX''​ et fonctionne également avec ''​LuaTeX''​ si l'​extension [[ctanpkg>​pdftexcmds|pdftexcmds]] est disponible ​(elle émule les commandes ''​pdfTeX''​ requises à l'aide de ''​lua''​. Hormis cet éventuel réglage, [[ctanpkg>​stampinclude|stampinclude]] nécessite peu d'​attention : incluez-le dans votre document et il fait son travail en silence. Lorsque vous voulez une version finale de votre document, supprimez tous les fichiers ''​aux''​ fichiers, et [[ctanpkg>​stampinclude|stampinclude]] n'​interférera pas.  
 + 
 +==== Avec l'​extension “excludeonly” ==== 
 + 
 +Une fonctionnalité inverse peut être obtenue avec l'​extension [[ctanpkg>​excludeonly|excludeonly]] : cela vous permet d'​exclure une liste de fichiers insérés avec ''​\include'',​ au moyen d'une commande ''​\excludeonly''​.  
 + 
 +==== Avec les extensions “pagesel” et “selectp” ==== 
 + 
 +Si vous souhaitez sélectionner des pages particulières de votre document, utilisez les extensions [[ctanpkg>​pagesel|pagesel]] ou [[ctanpkg>​selectp|selectp]] de Heiko Oberdiek. Vous pouvez faire quelque chose de similaire, à savoir insérer des pages d'un document PDF existant (que vous avez peut-être compilé en utilisant ''​pdflatex''​ en premier lieudans votre documenten utilisant l'​extension [[ctanpkg>​pdfpages|pdfpages]]Le travail est ensuite fait avec un document ​ressemblant à :  
 + 
 +<​code ​latex>
 \documentclass{article} \documentclass{article}
 \usepackage[final]{pdfpages} \usepackage[final]{pdfpages}
 \begin{document} \begin{document}
-\includepdf[pages=30-40]{yoursource.pdf}+\includepdf[pages=30-40]{votresource.pdf}
 \end{document} \end{document}
-``` +</​code>​
-(To include all of the document, you write +
-```latex +
-\includepdf[pages=-]{yoursource.pdf} +
-``` +
-omitting the start and end pages in the optional argument.)+
  
-If you want flexible facilities for including or excluding small +Pour inclure toutvous pouvez saisir la commande sans indiquer le numéro de première et de dernière page :
-portions of a fileconsider the [`comment`](https://​ctan.org/​pkg/​comment),​ [`version`](https://​ctan.org/​pkg/​version) or +
-[`optional`](https://​ctan.org/​pkg/​optional) packages.+
  
-The [`comment`](https://​ctan.org/​pkg/​comment) package allows you to declare areas of a document to be +<code latex> 
-included or excluded; you make these declarations in the preamble of +\includepdf[pages=-]{votresource.pdf
-your file.  The command `\includecomment{version-name}` +</​code>​
-declares an environment `version-name` whose content will +
-be included in your document, while +
-`\excludecomment{version-name}` defines an environment whose +
-content will be excluded from the document. ​ The package uses a method +
-for exclusion that is pretty robust, and can cope with ill-formed +
-bunches of text (e.g., with unbalanced braces or `\if` commands).+
  
-(These FAQs employ the [`comment`](https://​ctan.org/​pkg/​comment) package to alter layout +===== Par l'​insertion conditionnelle de morceaux de texte =====
-between the printed (two-column) version and the PDF version +
-for browsing; there are `narrowversion` and +
-`wideversion` for the two versions of the file.)+
  
-[`version`](https://​ctan.org/​pkg/​version) offers similar facilities to `comment.sty` +==== Avec l'​extension “comment” ====
-(i.e., `\includeversion` and `\excludeversion` commands);​ +
-it's far ''​lighter weight'',​ but is less robust (and in particular,​ +
-cannot deal with very large areas of text being included/​excluded).+
  
-A significant development of [`version`](https://​ctan.org/​pkg/​version),​ confusingly called +L'​extension ​[[ctanpkg>​comment|comment]] vous permet de déclarer les zones d'un document à inclure ou à exclureVous faites ces déclarations dans le préambule de votre dossierLa commande ''​ \includecomment{nom-version} ''​ déclare un environnement ''​nom-version''​ dont le contenu sera inclus dans votre documenttandis que ''​\excludecomment{nom-version}''​ définit un environnement dont le contenu sera être exclu du document. L'​extension utilise une méthode d'​exclusion assez robuste et peut faire face à des groupes de texte mal formés (par exempleavec des accolades déséquilibrées ou des commandes ''​\if''​
-[`versions`](https://​ctan.org/​pkg/​versions) (i.e., merely a plural of the old package name). +
-[`Versions`](https://​ctan.org/​pkg/​Versions) adds a command +
-`\markversion{version-name}` which defines an environment +
-that prints the included textwith a clear printed mark around it.+
  
-[`optional`](https://​ctan.org/​pkg/​optional) defines a command `\opt`; its first argument is +==== Avec les extensions “version” et “versions” ====
-an ''​inclusion flag'',​ and its second is text to be included or +
-excluded. ​ Text to be included or excluded must be well-formed +
-(nothing mismatched),​ and should not be too big&​nbsp;&​mdash;​ if a large body of +
-text is needed, `\input` should be used in the argument. +
-The documentation (in the package file itself) tells you +
-how to declare which sections are to be included: this can be done in +
-the document preamble, but the documentation also suggests ways in +
-which it can be done on the command line that invokes LaTeX, or +
-interactively.+
  
-And, not least of this style of conditional compilation,​ +L'​extension [[ctanpkg>​version|version]] offre des fonctionnalités similaires à celles de [[ctanpkg>​comment|comment]]c'​est-à-dire les commandes ''​\includeversion''​ et ''​\excludeversion''​Cette extension prend moins de place mais s'​avère moins robuste ​en particulier,​ elle ne peut pas traiter de très grandes zones de texte incluses/exclues
-[`verbatim`](https://​ctan.org/​pkg/​verbatim) (which should be available in any distribution) +
-defines a `comment` environmentwhich enables the +
-dedicated user of the source text editor to suppress bits of a +
-LaTeX source file The [`memoir`](https://​ctan.org/​pkg/​memoir) class offers the same +
-environment.+
  
-An interesting variation is the [`xcomment`](https://ctan.org/​pkg/​xcommentpackage This +Une évolution de [[ctanpkg>​version|version]], appelée [[ctanpkg>​versions|versions]],​ ajoute une commande ''​\markversion{nom-version}''​ qui définit un environnement qui imprime le texte inclus, avec une marque claire autour.  
-defines an environment whose body is all excluded, apart from + 
-environments named in its argument. ​ Sofor example+==== Avec l'​extension “optional” ==== 
-```latex+ 
 +L'​extension [[ctanpkg>​optional|optional]] définit une commande ''​\opt''​ : son premier argument est un « indicateur d'​inclusion » et son second est le texte à inclure ou à exclure. Le texte à inclure ou à exclure doit être bien correct ​(les accolades bien appariées par exemple) et ne doit pas être trop conséquent. Si un texte volumineux est nécessaire,​ la commande ''​\input''​ doit être utilisée dans l'​argument. La [[texdoc>​optional|documentation de l'​extension]] vous indique comment déclarer quelles sections doivent être incluses ​cela peut être fait dans le préambule du document mais la documentation suggère également des moyens de le faire dans la ligne de commande appelant <​latex>​\LaTeX<​/latex>, ou de manière interactive 
 + 
 +==== Avec l'​extension “verbatim” ==== 
 + 
 +Autre extension, et pas des moindres, [[ctanpkg>​verbatim|verbatim]] définit un environnement ''​comment''​ qui permet à l'​utilisateur de mettre en commentaire facilement (s'il sait bien utiliser son éditeur de textedes morceaux d'un fichier source <​latex>​\LaTeX</​latex>​. La classe [[ctanpkg>​memoir|memoir]] offre le même environnement.  
 + 
 +==== Avec l'​extension “xcomment” ==== 
 + 
 +Une variante intéressante est proposée par l'​extension [[ctanpkg>​xcomment|xcomment]]. Elle définit un environnement dont tout le corps est exclu, à l'​exception des environnements nommés dans son argument. ​Ainsipar exemple ​:  
 + 
 +<​code ​latex>
 \begin{xcomment}{figure,​table} \begin{xcomment}{figure,​table}
-  ​This text is not included+  ​Ce texte n'est pas inclus
   \begin{figure}   \begin{figure}
-    ​This figure ​is included+    ​Cette figure ​est incluse
   \end{figure}   \end{figure}
-  ​This is not included, either+  ​Ce texte n'est pas plus inclus
   \begin{table}   \begin{table}
-    ​This table also included+    ​Cette table est incluse
   \end{table}   \end{table}
-  ... 
 \end{xcomment} \end{xcomment}
-```+</​code>​
  
-The [`tagging`](https://​ctan.org/​pkg/​tagging) package offers another neat set of syntax, which +==== Avec l'​extension “tagging” ====
-allow the user to apply ''​tags''​ to chunks of text, and to include and +
-exclude tagged text, according to the tags.  For example, the user may +
-''​use''​ text marked with some tags, and to ''​drop''​ marked with others: +
-```latex +
-\usetag{<​tag list>} +
-\droptag{<​tag list>} +
-``` +
-(the tag lists consist of comma-separated single words).+
  
-There are then commands +L'​extension [[ctanpkg>tagging|tagging]] met en place une syntaxe qui permet à l'​utilisateur d'​appliquer des « balises » à des morceaux de texte et d'​inclure ou exclure du texte balisé en fonction des balises. Par exemplel'​utilisateur peut « activer » du texte marqué avec certaines balises et « supprimer » du texte marqué avec d'​autres : 
-```latex +
-\tagged{<​tag list>}{<​text>​} +
-``` +
-which reproduces the text only if the &​lsaquo;​_tag list_&​rsaquo;​ contains at +
-least one tag listed in the `\usetag` comandand +
-```latex +
-\untagged{<​tag list>​}{<​text>​} +
-``` +
-which only reproduces the text unless the &​lsaquo;​_tag list_&​rsaquo;​ contains +
-none of the tags mention in the `\droptag` command.+
  
-Further commands offer an if-then-else setup, and specify +<code latex> 
-`taggedblock` and `untaggedblock` environments +\usetag{<​liste de balises>​} 
-that.+\droptag{<​liste de balises>​} 
 +</​code>​
  
-Another valuable aspect of the problem is covered by the +Dans les listes, les balises sont séparées par des virgules. Les commandes de balisage du texte sont ici : 
-[`extract`](https://ctan.org/pkg/extract) package The package allows you to produce a + 
-''​partial copy'' ​of an existing document:  +<code latex> 
-the package was developed to permit production of a ''​book of +\tagged{<​liste de balises>​}{<​texte>​} 
-examples'' ​from set of lecture ​notes. ​ The package ​documentation +\untagged{<​liste de balises>​}{<​texte>​} 
-shows the following usage+</code> 
-```latex+ 
 +La première commande affiche le //texte// si la //liste de balises// contient une des balises présentes dans la commade ''​usetag''​La seconde commande ne produit le texte que si la //liste de balises// ne contient aucune des balises mentionnées dans la commande ''​\droptag''​.  
 + 
 +D'autres commandes proposent une configuration si-alors-sinon et spécifient des environnements ​''​taggedblock'' ​et ''​untaggedblock''​. 
 + 
 +===== Par une extraction de code, avec l'extension “extract” ===== 
 + 
 +Un autre aspect important du problème est couvert par l'extension [[ctanpkg>​extract|extract]]. Elle vous permet de produire une « copie partielle » d'un document existant. Elle été développée pour permettre la production d'un « livre d'​exemples » à partir d'un ensemble de notes de coursLa [[texdoc>​extract|documentation ​de l'​extension]] montre l'​utilisation suivante ​:  
 + 
 +<​code ​latex>
 \usepackage[ \usepackage[
   active,   active,
-  generate=foobar,+  generate=demonstration,
   extract-env={figure,​table},​   extract-env={figure,​table},​
   extract-cmd={chapter,​section}   extract-cmd={chapter,​section}
 ]{extract} ]{extract}
-``` +</​code>​ 
-which will cause the package to produce a file `foobar.tex+ 
-containing all the `figure` and `table+Ceci crée un fichier ''​demonstration.tex ''​ contenant tous les environnements ''​figure''​ et ''​table''​ ainsi que toutes les commandes ''​\chapter''​ et ''​\section''​ du document ​en cours de traitementLe fichier ''​demonstrationr.tex '' ​est généré au cours d'une compilation ordinaire du document ​principalCette extension fournit un bon nombre d'​autres fonctionnalitésy compris des plages ​(numériques ou étiquetéesd'​environnements à extraire et un environnement ''​extract''​ que vous pouvez utiliser pour créer des documents <​latex>​\LaTeX</​latex>​ complets prêts à l'​emploi avec les éléments que vous avez extraits. ​ 
-environments,​ and the `\chapter` and `\section` commands, from + 
-the document ​being processed The new file `foobar.tex` is +----- 
-generated in the course of an otherwise ordinary run on the ''​master'+//Source:// [[faquk>​FAQ-conditional|Conditional compilation and “comments”]].
-document. ​ The package provides a good number of other facilities, +
-including ​(numeric or labelledranges of environments to extract, and +
-an `extract` environment which you can use to create complete +
-ready-to-run LaTeX documents with stuff you've extracted.+
  
 +{{htmlmetatags>​metatag-keywords=(LaTeX,​compilation conditionnelle,​différents PDF à partir d'un document LaTeX,​compiler des parties d'un document)
 +metatag-og:​title=(Comment obtenir des commentaires ou des plages de document compilables sous conditions)
 +metatag-og:​site_name=(FAQ LaTeX francophone)
 +}}
  
2_programmation/syntaxe/commentaires/compilation_conditionnelle_et_commentaires.1527283095.txt.gz · Dernière modification: 2018/05/25 23:18 par joseph.wright
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0