% -------------------- % % -- RESOURCES USED -- % % -------------------- % \begin{filecontents*}[overwrite]{examples-focus-exa.tex} Bla, bla, bla... \begin{tdocexa} Ble, ble, ble... \end{tdocexa} \begin{tdocexa}[Magnifique] Bli, bli, bli... \end{tdocexa} \begin{tdocexa} Blo, blo, blo... \end{tdocexa} \begin{tdocexa}[Superbe] Blu, blu, blu... \end{tdocexa} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-focus-exa-leavevmode.tex} \begin{tdocexa} \leavevmode \begin{enumerate} \item Point 1. \item Point 2. \end{enumerate} \end{tdocexa} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-focus-rmk.tex} \begin{tdocrem} Juste une remarque... \end{tdocrem} \begin{tdocrem}[Mini titre] Utile ? \end{tdocrem} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-focus-tip.tex} \begin{tdoctip} Une astuce. \end{tdoctip} \begin{tdoctip}[Mini titre] Utile ? \end{tdoctip} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-focus-note.tex} \begin{tdocnote} Un truc utile à vous dire... \end{tdocnote} \begin{tdocnote}[Mini titre] Utile ? \end{tdocnote} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-focus-important.tex} \begin{tdocimportant} Un truc important sans danger. \end{tdocimportant} \begin{tdocimportant}[Mini titre] Utile ? \end{tdocimportant} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-focus-caution.tex} \begin{tdoccaution} Prudence, prudence... \end{tdoccaution} \begin{tdoccaution}[Mini titre] Utile ? \end{tdoccaution} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-focus-warn.tex} \begin{tdocwarn} Evitez les dangers... \end{tdocwarn} \begin{tdocwarn}[Mini titre] Utile ? \end{tdocwarn} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-showcase-default.tex} \begin{tdocshowcase} \bfseries Un peu de code \LaTeX. \bigskip \emph{\large Fin de l'affreuse démo.} \end{tdocshowcase} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-showcase-customized.tex} \begin{tdocshowcase}[before = Mon début, after = Ma fin à moi, color = red] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \end{tdocshowcase} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-showcase-hook.tex} \begin{tdocshowcase} \string[Cela fonctionne...] \end{tdocshowcase} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-showcase-no-clrstrip.tex} \begin{tdocshowcase}[nostripe] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \end{tdocshowcase} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-showcase-no-clrstrip-customized.tex} \begin{tdocshowcase}[nostripe, before = Mon début, after = Ma fin à moi, color = green] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \end{tdocshowcase} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-showcase-external.tex} Blablobli, blablobli, blablobli, blablobli, blablobli, blablobli... \end{filecontents*} \begin{filecontents*}[overwrite]{examples-listing-ABC.tex} \begin{tdoclatex}[sbs] $A = B + C$ \end{tdoclatex} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-listing-strange.tex} \begin{tdoclatex}[std] [Étrange... Ou pas !] \end{tdoclatex} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-listing-strange-bis.tex} \begin{tdoclatex} \string[Étrange... Ou pas !] \end{tdoclatex} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-listing-xyz.tex} % Juste une démo. $x y z = 1$ \end{filecontents*} \begin{filecontents*}[overwrite]{examples-listing-latexshow-options.tex} \tdoclatexshow[explain = Ce qui vient est coloré..., before = Rendu ci-après., after = Rendu fini., color = orange] {examples-listing-xyz.tex} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-dating.tex} Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \medskip % ATTENTION ! Ceci évite le chevauchement. \tdocdate{2023-09-24} Ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \medskip % ATTENTION ! Ceci évite le chevauchement. \tdocdate[gray]{2020-05-08} Bli, bli, bli, bli, bli, bli, bli, bli, bli, bli, bli, bli, bli... Blo, blo, blo, blo, blo, blo, blo, blo, blo, blo, blo, blo, blo... Blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu, blu... \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-versioning.tex} \tdocversion[red]{10.2.0-beta}[2023-12-01] Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla... \bigskip % ATTENTION ! Ceci évite le chevauchement. \tdocversion{10.2.0-alpha} Ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble, ble... \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-new.tex} \begin{tdocnew} \item Info 1... \item Info 2... \end{tdocnew} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-update.tex} \begin{tdocupdate} \item Info 1... \item Info 2... \end{tdocupdate} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-break.tex} \begin{tdocbreak} \item Info 1... \item Info 2... \end{tdocbreak} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-pb.tex} \begin{tdocprob} \item Info 1... \item Info 2... \end{tdocprob} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-fix.tex} \begin{tdocfix} \item Info 1... \item Info 2... \end{tdocfix} \end{filecontents*} \begin{filecontents*}[overwrite]{examples-version-n-change-unclassifiable.tex} \begin{tdoctopic}{Inclassable} % Ici le point s'impose. \item Info 1... \item Info 2... \end{tdoctopic} \end{filecontents*} % ------------------------ % % -- SOURCE FOR THE DOC -- % % ------------------------ % \documentclass[10pt, a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel, varioref} \usepackage{enumitem} \frenchsetup{StandardItemLabels=true} % Package documented. \usepackage[lang = french]{tutodoc} % Source. % * https://tex.stackexchange.com/a/604698/6880 \NewDocumentCommand{ \tdocdocbasicinput }{ m }{% Considérons le code suivant. \tdoclatexinput[code]{#1} Ceci produira ce qui suit. \input{#1} } % Source. % * https://tex.stackexchange.com/a/604698/6880 \NewDocumentCommand{ \tdocdocextraruler }{ m }{% \par { \centering \color{green!50!black}% \leavevmode \kern.075\linewidth \leaders\hrule height3.25pt\hfill\kern0pt \footnotesize\itshape\bfseries\space\ignorespaces#1\unskip\space \leaders\hrule height3.25pt\hfill\kern0pt \kern.075\linewidth \par } } \NewDocumentEnvironment{ tdoc-doc-showcase } { O{ Début du rendu dans cette doc. } O{ Fin du rendu dans cette doc. } }{ \tdocdocextraruler{#1} \nopagebreak\smallskip\nopagebreak }{ \nopagebreak\smallskip\nopagebreak \tdocdocextraruler{#2} } \begin{document} \title{Le package \texttt{tutodoc} - Documentation de type tutoriel} \author{Christophe BAL} \date{1\ier{} Janv. 2024 - Version 1.1.0} \maketitle \begin{abstract} Le package \tdocpack{tutodoc} \footnote{ Le nom vient de \tdocquote{\tdocprewhy{tuto.rial-type} \tdocprewhy{doc.umentation}} se traduit en \tdocquote{documentation de type tutoriel}. } est utilisé par son auteur pour produire de façon sémantique des documentations de packages et de classes \LaTeX\ dans un style de type tutoriel \footnote{ L'idée est de produire un fichier \texttt{PDF} efficace à parcourir pour des besoins ponctuels. C'est généralement ce que l'on attend d'une documentation liée au codage. }, et avec un rendu sobre pour une lecture sur écran. \begin{tdocnote} Ce package impose un style de mise en forme. Dans un avenir plus ou moins proche, \tdocpack{tutodoc} sera sûrement éclaté en une classe et un package. \end{tdocnote} \tdocsep {\small\itshape \textbf{Abstract.} The \tdocpack{tutodoc} package \footnote{ The name comes from \tdocquote{\tdocprewhy{tuto.rial-type} \tdocprewhy{doc.umentation}}. } is used by its author to semantically produce documentation of \LaTeX\ packages and classes in a tutorial style \footnote{ The idea is to produce an efficient \texttt{PDF} file that can be browsed for one-off needs. This is generally what is expected of coding documentation. }, and with a sober rendering for reading on screen. \begin{tdocnote} This package imposes a formatting style. In the not-too-distant future, \tdocpack{tutodoc} will probably be split into a class and a package. \end{tdocnote} } \end{abstract} \newpage \tableofcontents \newpage \section{Mises en forme générales imposées} \subsection{Géométrie de la page} Le package \tdocpack{geometry} est chargé avec les réglages suivants. \begin{tdoclatex}[code] \RequirePackage[ top = 2.5cm, bottom = 2.5cm, left = 2.5cm, right = 2.5cm, marginparwidth = 2cm, marginparsep = 2mm, heightrounded ]{geometry} \end{tdoclatex} \subsection{Titre et table des matières} Les packages \tdocpack{titlesec} et \tdocpack{tocbasic} sont réglés comme suit. \begin{tdoclatex}[code] \RequirePackage[raggedright]{titlesec} % ... \ifcsundef{chapter}% {}% {\renewcommand\thechapter{\Alph{chapter}.}} \renewcommand\thesection{\Roman{section}.} \renewcommand\thesubsection{\arabic{subsection}.} \renewcommand\thesubsubsection{\roman{subsubsection}.} \titleformat{\paragraph}[hang]% {\normalfont\normalsize\bfseries}% {\theparagraph}{1em}% {} \titlespacing*{\paragraph}% {0pt}% {3.25ex plus 1ex minus .2ex}% {0.5em} % Source % * https://tex.stackexchange.com/a/558025/6880 \DeclareTOCStyleEntries[ raggedentrytext, linefill = \hfill, indent = 0pt, dynindent, numwidth = 0pt, numsep = 1ex, dynnumwidth ]{tocline}{ chapter, section, subsection, subsubsection, paragraph, subparagraph } \DeclareTOCStyleEntry[indentfollows = chapter]{tocline}{section} \end{tdoclatex} \subsection{Liens dynamiques} Le package \tdocpack{hyperref} est importé en coulisse avec les réglages ci-dessous. \begin{tdoclatex}[code] \hypersetup{ colorlinks, citecolor = orange!75!black, filecolor = orange!75!black, linkcolor = orange!75!black, urlcolor = orange!75!black } \end{tdoclatex} \section{Choisir la langue au chargement du package} La présente documentation utilise le français via \tdocinlatex|\usepackage[lang = french]{tutodoc}| . Pour le moment, on a juste les deux choix suivants. \begin{enumerate} \item \tdocinlatex|english| est la valeur par défaut. \item \tdocinlatex|french| est pour \tdocinEN{français}. \end{enumerate} \begin{tdocnote} Les noms des langues sont ceux proposés par le package \tdocpack{babel}. \end{tdocnote} \section{Cela veut dire quoi en \tdocquote{anglais}} Penser aux non-anglophones est bien, même si ces derniers se font de plus en plus rares. \begin{tdoclatex} Cool et top signifient \tdocinEN*{cool} et \tdocinEN{top}. \end{tdoclatex} La macro \tdocmacro{tdocinEN} et sa version étoilée s'appuient sur \tdocmacro{tdocquote} : par exemple, \tdocquote{sémantique} s'obtient via \tdocinlatex|\tdocquote{sémantique}| . \begin{tdocnote} Le texte \tdocquote{en anglais} est traduit dans la langue indiquée lors de l'importation de \tdocpack{tutodoc}. \end{tdocnote} \section{Mettre en avant du contenu} \begin{tdocnote} Les environnements présentés dans cette section \footnote{ La mise en forme provient du package \tdocpack{amsthm}. } ajoutent un court titre indiquant le type d'informations fournies. Ce court texte sera toujours traduit dans la langue indiquée lors du chargement du package \tdocpack{tutodoc}. \end{tdocnote} % ------------------ % \subsection{Des exemples} Des exemples numérotés, ou non, s'indiquent via l'environnement \tdocenv{tdocexa} qui propose deux arguments optionnels. \begin{enumerate} \item Le 1\ier{} argument entre chevrons \tdocinlatex#<...># peut prendre au choix les valeurs \tdocinlatex#nb# pour numéroter, réglage par défaut, et \tdocinlatex#nonb# pour ne pas numéroter. \item Le 2\ieme{} argument entre crochets \tdocinlatex#[...]# sert à ajouter un mini-titre. \end{enumerate} Voici différents emplois possibles. \tdoclatexinput[sbs]{examples-focus-exa.tex} % ------------------ % \begin{tdocimportant} La numérotation des exemples est remise à zéro dès qu'une section de niveau au moins égale à une \tdocinlatex|\subsubsection| est ouverte. \end{tdocimportant} % ------------------ % \begin{tdoctip} Il peut parfois être utile de revenir à la ligne dès le début du contenu. Voici comment faire (ce tour de passe-passe reste valable pour les environnements présentés dans les sous-sections suivantes). Noter au passage que la numérotation suit celle de l'exemple précédent comme souhaité. \tdoclatexinput[sbs]{examples-focus-exa-leavevmode.tex} \end{tdoctip} \subsection{Des remarques} Tout se passe via l'environnement \tdocenv{tdocrem} comme dans l'exemple suivant. \tdoclatexinput[sbs]{examples-focus-rmk.tex} \subsection{Une astuce} L'environnement \tdocenv{tdoctip} sert à donner des astuces. Voici comment l'employer. \tdoclatexinput[sbs]{examples-focus-tip.tex} \subsection{Note informative} L'environnement \tdocenv{tdocnote} sert à mettre en avant des informations utiles. Voici comment l'utiliser. \tdoclatexinput[sbs]{examples-focus-note.tex} \subsection{Un truc important} L'environnement \tdocenv{tdocimportant} permet d'indiquer quelque chose d'important mais sans danger. \tdoclatexinput[sbs]{examples-focus-important.tex} \subsection{Avertir d'un point très délicat} L'environnement \tdocenv{tdoccaution} sert à indiquer un point délicat à l'utilisateur. Voici comment l'employer. \tdoclatexinput[sbs]{examples-focus-caution.tex} \subsection{Avertir d'un danger} L'environnement \tdocenv{tdocwarn} sert à avertir l'utilisateur d'un piège à éviter. Voici comment l'employer. \tdoclatexinput[sbs]{examples-focus-warn.tex} \section{Indiquer des packages, des classes, des macros ou des environnements} Voici ce qu'il est possible de taper de façon sémantique. \begin{tdoclatex}[sbs] \tdoccls{maclasse} sert à... \tdocpack{monpackage} est pour... \tdocmacro{unemacro} permet de... \tdocenv{env} produit... On a aussi : \tdocenv[{[opt1]}]{env} \end{tdoclatex} \begin{tdocrem} L'intérêt des macros précédentes vis à vis de l'usage de \tdocmacro{tdocinlatex}, voir la section \ref{tdoc-listing-inline} page \pageref{tdoc-listing-inline}, est l'absence de coloration. De plus, la macro \tdocmacro{tdocenv} demande juste de taper le nom de l'environnement \footnote{ De plus, \tdocinlatex{\tdocenv{monenv}} produit \tdocenv{monenv} avec des espaces afin d'autoriser des retours à la ligne si besoin. } avec des éventuelles options en tapant les bons délimiteurs \footnote{ Se souvenir que tout est possible ou presque dorénavant. } à la main. \end{tdocrem} \begin{tdocwarn} L'argument optionnel de la macro \tdocmacro{tdocenv} est copié-collé lors du rendu. Ceci peut donc parfois nécessiter d'utiliser des accolades protectrices comme dans l'exemple précédent. \end{tdocwarn} % -------------------- % \section{Origine d'un préfixe ou d'un suffixe} Pour expliquer les noms retenus, rien de tel que d'indiquer et expliciter les courts préfixes et suffixes employés. Ceci se fait facilement comme suit. \begin{tdoclatex}[sbs] \tdocpre{sup} est relatif à... \tdocprewhy{sup.erbe} signifie... \emph{\tdocprewhy{sup.er} pour...} \end{tdoclatex} \begin{tdocrem} Le choix du point pour scinder un mot permet d'utiliser des mots avec un tiret comme dans \tdocinlatex+\tdocprewhy{ca.sse-brique}+ qui donne \tdocprewhy{ca.sse-brique}. \end{tdocrem} \section{Un rendu en situation réelle} \label{tdoc-showcase} Il est parfois utile d'obtenir directement le rendu d'un code dans la documentation. Ceci nécessite que ce type de rendu soit dissociable du texte donnant des explications. % ------------------ % \subsection{Avec une bande colorée} \begin{tdocexa}[Avec les textes par défaut] Il peut être utile de montrer un rendu réel directement dans un document \footnote{ Typiquement lorsque l'on fait une démo. }. Ceci se tape via \tdocenv{tdocshowcase} comme suit. \tdoclatexinput[code]{examples-showcase-default.tex} On obtient alors le rendu suivant \footnote{ En coulisse, la bande est créée sans effort grâce au package \tdocpack{clrstrip}. }. \medskip \input{examples-showcase-default.tex} \end{tdocexa} \begin{tdocrem} Voir la section \ref{tdoc-latexshow} page \pageref{tdoc-latexshow} pour obtenir facilement un code suivi de son rendu réel comme dans l'exemple précédent. \end{tdocrem} \begin{tdocnote} Les textes explicatifs s'adaptent à la langue choisie lors du chargement de \tdocpack{tutodoc}. \end{tdocnote} % ------------------ % \begin{tdocexa}[Changer la couleur et/ou les textes par défaut] \leavevmode \tdoclatexinput[code]{examples-showcase-customized.tex} Ceci produira ce qui suit. \medskip \input{examples-showcase-customized.tex} \end{tdocexa} \begin{tdocnote} Vous avez sûrement noté que l'on n'obtient pas un rouge pur : en coulisse les macros développables \tdocmacro{tdocbackcolor} et \tdocmacro{tdocdarkcolor} sont utilisées pour créer celles du fond et des titres respectivement à partir de la couleur proposée à \tdocenv{tdocshowcase}. Ces macros à un seul argument, la couleur choisie, admettent les codes suivants. \begin{tdoclatex}[code] \NewExpandableDocumentCommand{\tdocbackcolor}{m}{#1!5} \NewExpandableDocumentCommand{\tdocdarkcolor}{m}{#1!50!black} \end{tdoclatex} \end{tdocnote} % ------------------ % \begin{tdocwarn} Avec les réglages par défaut, si le code \LaTeX\ à mettre en forme commence par un crochet ouvrant, il faudra user de \tdocmacro{string} comme dans l'exemple suivant. \tdoclatexinput[code]{examples-showcase-hook.tex} Ceci produira ce qui suit. \medskip \input{examples-showcase-hook.tex} \end{tdocwarn} \begin{tdocnote} Il faut savoir qu'en coulisse la macro \tdocmacro{tdocruler} est utilisée. \begin{tdoclatex}[std] \tdocruler{Un pseudo-titre décoré}{red} \end{tdoclatex} \end{tdocnote} \subsection{Sans bande colorée} Le rendu de \tdocenv{tdocshowcase} avec une bande colorée peut ne pas convenir, ou parfois ne pas être acceptable malgré le travail fait par \tdocpack{clrstrip}. Il est possible de ne pas utiliser une bande colorée comme nous allons le voir tout de suite. \begin{tdocexa} L'emploi de \tdocenv[{[nostripe]}]{tdocshowcase} demande de ne pas faire appel à \tdocpack{clrstrip}. Voici un exemple d'utilisation. \tdoclatexinput[code]{examples-showcase-no-clrstrip.tex} Ceci produira ce qui suit. \medskip \input{examples-showcase-no-clrstrip.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Changer la couleur et/ou les textes par défaut] \leavevmode \tdoclatexinput[code]{examples-showcase-no-clrstrip-customized.tex} Ceci produira ce qui suit. \medskip \input{examples-showcase-no-clrstrip-customized.tex} \end{tdocexa} \subsection{En important le code \LaTeX} Pour obtenir des rendus en important le code depuis un fichier externe, au lieu de le taper, il suffit d'employer la macro \tdocmacro{tdocshowcaseinput} dont l'option reprend la syntaxe de celle de \tdocenv{tdocshowcase} et l'argument obligatoire correspond au chemin du fichier. \begin{tdocexa} Ce qui suit a été obtenu via \tdocinlatex+\tdocshowcaseinput{external.tex}+. \medskip \tdocshowcaseinput{examples-showcase-external.tex} \medskip Quant à \tdocinlatex+\tdocshowcaseinput[color = orange]{external.tex}+\,, ceci produira le changement de couleur observable ci-après. \medskip \tdocshowcaseinput[color = orange]{examples-showcase-external.tex} \end{tdocexa} \section{Cas d'utilisation en \LaTeX} Documenter un package ou une classe se fait efficacement via des cas d'utilisation montrant à la fois du code et le résultat correspondant. % ------------------ % \subsection{Codes \tdocquote{en ligne}} \label{tdoc-listing-inline} La macro \tdocmacro{tdocinlatex} \footnote{ Le nom de la macro \tdocmacro{tdocinlatex} vient de \tdocquote{\tdocprewhy{in.line} \LaTeX} soit \tdocinEN{\LaTeX\ en ligne}. } permet de taper du code en ligne via un usage similaire à \tdocmacro{verb}. Voici des exemples d'utilisation. \begin{tdoclatex}[sbs] 1: \tdocinlatex|$a^b = c$| 2: \tdocinlatex+\tdocinlatex|$a^b = c$|+ \end{tdoclatex} \begin{tdocnote} La macro \tdocmacro{tdocinlatex} est utilisable dans une note de pied de page : voir plus bas \footnote{ \tdocinlatex+$minted = TOP$+ a été tapé \tdocinlatex|\tdocinlatex+$minted = TOP$+| dans cette note de bas de page.. }. De plus, une couleur de fond est volontairement utilisée pour subtilement faire ressortir les codes \tdocinlatex#\LaTeX#\,. \end{tdocnote} % ------------------ % \subsection{Codes tapés directement} \begin{tdocexa}[Face à face] Via \tdocenv[{[sbs]}]{tdoclatex}, on affichera un code et son rendu côte à côte. Indiquons que \tdocinlatex#sbs# est pour \tdocquote{\tdocprewhy{s.ide} \tdocprewhy{b.y} \tdocprewhy{s.ide}} soit \tdocinEN{côte à côte}. \tdocdocbasicinput{examples-listing-ABC.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[À la suite] \tdocenv{tdoclatex} produit le résultat suivant qui correspond à l'option par défaut \tdocinlatex#std# \footnote{ \tdocinlatex{std} fait référence au comportement \tdocquote{standard} de \tdocpack{tcolorbox} vis à vis de la librairie \tdocpack{minted}. }. \begin{tdoclatex} $A = B + C$ \end{tdoclatex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Juste le code] Via \tdocenv[{[code]}]{tdoclatex}, on aura juste le code comme ci-après. \begin{tdoclatex}[code] $A = B + C$ \end{tdoclatex} \end{tdocexa} % ------------------ % \begin{tdocwarn} Avec la mise en forme par défaut, si le code commence par un crochet ouvrant, il faudra indiquer explicitement l'option par défaut. \tdocdocbasicinput{examples-listing-strange.tex} \smallskip Une autre méthode consiste à utiliser la primitive \tdocmacro{string}. \tdocdocbasicinput{examples-listing-strange-bis.tex} \end{tdocwarn} \subsection{Codes importés} Pour les codes suivants, on considère un fichier de chemin relatif \verb+examples-listing-xyz.tex+, et ayant le contenu suivant. \tdoclatexinput[code]{examples-listing-xyz.tex} \medskip La macro \tdocmacro{tdoclatexinput}, présentée ci-dessous, attend le chemin d'un fichier et propose les mêmes options que l'environnement \tdocenv{tdoclatex}. % ------------------ % \begin{tdocexa}[Face à face] \leavevmode \begin{tdoclatex}[code] \tdoclatexinput[sbs]{examples-listing-xyz.tex} \end{tdoclatex} Ceci produit la mise en forme suivante. \tdoclatexinput[sbs]{examples-listing-xyz.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[À la suite] \leavevmode \begin{tdoclatex}[code] \tdoclatexinput{examples-listing-xyz.tex} \end{tdoclatex} Ceci produit la mise en forme suivante où l'option employée par défaut est \tdocinlatex#std#. \tdoclatexinput{examples-listing-xyz.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Juste le code] \leavevmode \begin{tdoclatex}[code] \tdoclatexinput[code]{examples-listing-xyz.tex} \end{tdoclatex} Ceci produit la mise en forme suivante. \tdoclatexinput[code]{examples-listing-xyz.tex} \end{tdocexa} % ------------------ % \subsection{Codes importés et mis en situation} \label{tdoc-latexshow} \begin{tdocexa}[Showcase] Ce qui suit s'obtient via \tdocinlatex+\tdoclatexshow{examples-listing-xyz.tex}+. \medskip \begin{tdoc-doc-showcase} \tdoclatexshow{examples-listing-xyz.tex} \end{tdoc-doc-showcase} \end{tdocexa} \begin{tdocnote} Les textes par défaut tiennent compte de la langue choisie lors du chargement du package \tdocpack{tutodoc}. \end{tdocnote} % ------------------ % \begin{tdocexa}[Changer le texte explicatif] Via la clé \tdocinlatex|explain|, on peut utiliser un texte personnalisé. Ainsi, \tdocinlatex|\tdoclatexshow[explain = Voici le rendu réel.]{examples-listing-xyz.tex}| produira ce qui suit. \medskip \begin{tdoc-doc-showcase} \tdoclatexshow[explain = Voici le rendu réel.]{examples-listing-xyz.tex} \end{tdoc-doc-showcase} \end{tdocexa} % ------------------ % \begin{tdocexa}[Les options disponibles] En plus du texte explicatif, il est aussi possible d'utiliser toutes les options de \tdocenv{tdocshowcase}, voir \ref{tdoc-showcase} page \pageref{tdoc-showcase}. Voici un exemple illustrant ceci. \medskip \tdoclatexinput[code]{examples-listing-latexshow-options.tex} \medskip Ceci va produire ce qui suit. \medskip \begin{tdoc-doc-showcase} \input{examples-listing-latexshow-options.tex} \end{tdoc-doc-showcase} \end{tdocexa} \section{Indiquer les changements} Afin de faciliter le suivi d'un package, il est indispensable de fournir un historique indiquant les changements effectués lors de la publication d'une nouvelle version. % ------------------ % \subsection{À quel moment ?} On peut au choix dater quelque chose, ou bien le versionner, dans ce second cas le numéro de version pourra éventuellement être daté. % ------------------ % \begin{tdocexa}[Dater des nouveautés] La macro \tdocmacro{tdocdate} permet d'indiquer une date dans la marge comme dans l'exemple suivant. \tdoclatexshow{examples-version-n-change-dating.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Versionner des nouveautés en les datant événtuellement] Associer un numéro de version à une nouveauté se fait via la macro \tdocmacro{tdocversion}, la couleur et la date étant des arguments optionnels. \tdoclatexshow{examples-version-n-change-versioning.tex} \end{tdocexa} \begin{tdocimportant} \leavevmode \begin{enumerate} \item Les macros \tdocmacro{tdocdate} et \tdocmacro{tdocversion} nécessitent deux compilations. \item Comme la langue indiquée pour cette documentation est le français, la date dans le rendu final est au format \texttt{JJ/MM/AAAA} alors que dans le code celle-ci devra toujours être saisie au format anglais \texttt{AAAA-MM-JJ}. \end{enumerate} \end{tdocimportant} \begin{tdocwarn} Seul l'emploi du format numérique \tdocinlatex+YYYY-MM-DD+ est vérifié \footnote{ Techniquement, vérifier la validité d'une date, via \LaTeX3, ne présente pas de difficulté. }, et ceci est un choix ! Pourquoi cela ? Tout simplement car dater et versionner des explications devrait se faire de façon semi-automatisée afin d'éviter tout bug humain. % \footnote{ % L'auteur de \tdocpack{tutodoc} est entrain de mettre en place un ensemble d'outils permettant une telle semi-automatisation. % }. \end{tdocwarn} \subsection{Quoi de neuf ?} \tdocpack{tutodoc} propose différents environnements pour indiquer rapidement et clairement ce qui a été fait \footnote{ L'utilisateur n'a pas besoin de tous les détails techniques. } lors des derniers changements. \begin{tdocexa}[Pour les nouveautés] \leavevmode \tdoclatexinput[sbs]{examples-version-n-change-new.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Pour les mises à jour] \leavevmode \tdoclatexinput[sbs]{examples-version-n-change-update.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Pour les bifurcations] \leavevmode \tdoclatexinput[sbs]{examples-version-n-change-break.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Pour les problèmes] \leavevmode \tdoclatexinput[sbs]{examples-version-n-change-pb.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Pour les réparations] \leavevmode \tdoclatexinput[sbs]{examples-version-n-change-fix.tex} \end{tdocexa} % ------------------ % \begin{tdocexa}[Thématiques aux choix] \leavevmode \tdoclatexinput[sbs]{examples-version-n-change-unclassifiable.tex} \end{tdocexa} \newpage \section{Décorations} Finissons cette documentation avec de petites outils de mise en forme pouvant rendre de grands services. \begin{tdoclatex}[sbs] Bla, bla, bla... \tdocsep % Pratique pour délimiter. Ceci fonctionne avec des énumérations. \begin{itemize} \item Point souligné. \item Autre chose utile. \end{itemize} \tdocsep % Un comportement uniforme. Ble, ble, ble... Bli, bli, bli... \tdocxspace % Espace subtile % mais utile. Blo, blo, blo... Blu, blu, blu... \end{tdoclatex} \newpage \section{Historique} \tdocversion{1.1.0}[2024-01-06] \begin{tdocnew} \item Journal des changements : deux nouveaux environnements. \begin{enumerate} \item \tdocenv{tdocbreak} pour les \tdocquote{bifurcations}\,, soit les modifications non rétrocompatibles. \item \tdocenv{tdocprob} pour les problèmes repérés. \end{enumerate} \item \tdocmacro{tdocinlatex}: un jaune léger est utilisé comme couleur de fond. \end{tdocnew} \tdocsep \tdocversion{1.0.1}[2023-12-08] \begin{tdocfix} \item \tdocmacro{tdocenv}: l'espacement est maintenant correct, même si le paquet \tdocpack{babel} n'est pas chargé avec la langue française. \item \tdocenv[{[nostripe]}]{tdocshowcase}: les sauts de page autour des lignes \tdocquote{cadrantes} devraient être rares dorénavant. \end{tdocfix} \tdocsep \tdocversion{1.0.0}[2023-11-29] Première version publique du projet. \end{document}