Je n'arrive pas à afficher des blocs de code dans le document PDF que je génère avec Pandoc à partir d'un fichier Markdown. Aucun problème avec le code en ligne cependant. Pour info, voici le fichier YAML : lang: FR-fr documentclass: book fontsize: 11pt csquotes: true toc: true toc-title: "Table des matières" cover-image: "cover.png" # Image pour la couverture (1ère de couverture) back-cover-image: "backcover.png" # Image pour la 4ème de couverture Et voici le code du template LaTeX : % ============================= % Mise en forme du code inline et des blocs de code % ============================= % Charger le package pour la coloration et le fond des blocs de code \usepackage[listings, skins, breakable]{tcolorbox} % Chargement avec les bonnes options % Définition de la police Hack pour le code \newfontfamily\codeFont{Hack} % ============================= % Code inline (fond gris, arrondi, police Hack) % ============================= \DeclareTotalTCBox{\texttt}{m}{% fontupper=\codeFont, colback=gray!10, % Fond gris arc=4pt, % Coins arrondis boxrule=0pt, % Pas de bordure left=4pt, right=4pt, % Espacement horizontal interne top=0pt, bottom=0pt, % Espacement vertical interne boxsep=0.5pt, % Espacement autour du texte on line}{\strut#1} % ============================= % Blocs de code (fond gris, arrondi, police Hack) % ============================= \DeclareTCBListing{verbatim}{}{ colback=gray!10, % Fond gris clair pour le bloc arc=4pt, % Coins arrondis (4px) boxrule=0pt, % Épaisseur de la bordure listing only, % Pas d'espace supplémentaire autour breakable, % Autoriser la coupure sur plusieurs pages fontupper=\codeFont\ttfamily, % Appliquer Hack enhanced, % Améliore le rendu du fond et des bordures listing engine=listings } Actuellement j'ai une font a chasse fixe (celle par défaut je pense), mais ni fond gris, ni la bonne font (a savoir Hack). Si il y a des options aussi pour activer la numérotation de ligne et la coloration syntaxique, je prends. |
Voici un code surce et le résultat.
% !TEX xelatex \documentclass{article} \usepackage{fontspec} \setmainfont{Playfair Display} \usepackage[listings, skins, breakable]{tcolorbox} \newfontfamily\codeFont{Hack} % ============================= \DeclareTotalTCBox{\texttt}{m}{% fontupper=\codeFont, colback=gray!10, % Fond gris arc=4pt, % Coins arrondis boxrule=0pt, % Pas de bordure left=4pt, right=4pt, % Espacement horizontal interne top=0pt, bottom=0pt, % Espacement vertical interne boxsep=0.5pt, % Espacement autour du texte on line}{\strut#1} % ============================= % Blocs de code (fond gris, arrondi, police Hack) % ============================= \DeclareTCBListing{verbatim}{}{ colback=gray!10, % Fond gris clair pour le bloc arc=4pt, % Coins arrondis (4px) boxrule=0pt, % Épaisseur de la bordure listing only, % Pas d'espace supplémentaire autour breakable, % Autoriser la coupure sur plusieurs pages fontupper=\codeFont, % Appliquer Hack enhanced, % Améliore le rendu du fond et des bordures listing engine=listings, listing options={basicstyle=\codeFont\small} } \begin{document} \texttt{foo\_bar} and \begin{verbatim} for bar \i in {1,2,10} do this \end{verbatim} \end{document} Remarque: essayer de supprimer \renewcommand{\ttdefault}{lmtt} \lstset{basicstyle=\codeFont\small} Puis à la définition de |
OK, alors j'ai pris en compte les modifications suivantes : Puis à la définition de \DeclareTCBListing{verbatim} remplacer fontupper=\codeFont\ttfamily par fontupper=\codeFont et ajouter listing options={basicstyle=\codeFont\small} Mais je n'ai toujours pas la bonne police, ni le fond gris. Pour le fond gris, je suspecte que c'est cette option que je n'ai pas intégrée : Car j'ai actuellement ceci : \documentclass[ $for(babel-otherlangs)$ $babel-otherlangs$, $endfor$ $if(babel-lang)$ $babel-lang$, $endif$ $if(fontsize)$ $fontsize$, $endif$ $for(classoption)$ $classoption$$sep$, $endfor$ ]{$documentclass$} Et je pense que je doit le garder car j'utilise des éléments dans le fichier YAML (j'avais essayé de les transférer dans le template, sans succès). Si je supprime ce code pour mettre à la place Error producing PDF. ! LaTeX Error: Command \chaptermark undefined. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. ... l.262 \renewcommand{\chaptermark} Par contre je ne comprends pas ce que je dois faire de ça : \renewcommand{\ttdefault}{lmtt} \lstset{basicstyle=\codeFont\small} Et dernier point, j'utilise le moteur OK, je viens de générer directement le fichier .tex a la place du PDF et j'obtiens ceci : \begin{Shaded} \begin{Highlighting}[] \NormalTok{Je test un **bloc** de code.} \NormalTok{0 de la font Hack} \end{Highlighting} \end{Shaded} Shaded au lieu de verbatim, je vais creuser. |
Déjà, les lignes documentclass: book et la commande documentclass{article} ne semblent pas cohérentes.
Pouvez-vous me donner plus de détails ? Je ne comprends pas le lien avec documentclass{article}. J’ai vérifié, et je ne l’ai nulle part, y compris dans le fichier .tex généré après transformation.
Pour information le code en ligne fonctionne parfaitement, seul les blocs de code ne sont pas fonctionnel. Le code provient des conseils de @touhami.