Avec PDFLaTeX, j'utilise le préambule suivant pour avoir la police KP-Fonts, sauf pour la famille monospace faite en LatinModern. J'ai accès à des petites capitales penchées en monospace. ECM1 :

% !TeX TS-program = pdflatex
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{kpfonts}
\renewcommand{\ttdefault}{lmtt}
\begin{document}
En slanted: \textsl{test \textsc{testsc \texttt{testsctt}}}
\end{document}

Avec LuaLaTeX, j'ai le préambule suivant qui, je le pensais, faisait la même chose (à part qu'il utilise NewComputerModern au lieu de LatinModern). Sauf qu'il ne trouve pas de petites capitales penchées en monospace. ECM2 :

% !TeX TS-program = lualatex
\documentclass{article}
\usepackage{kpfonts-otf}
\setmonofont{NewCMMono10-Regular}
\begin{document}
En slanted: \textsl{test \textsc{testsc \texttt{testsctt}}}
\end{document}

Or, si je charge NewComputerModern avec \usepackage, je constate que ces petites capitales existent bien... ECM3 :

% !TeX TS-program = lualatex
\documentclass{article}
\usepackage{newcomputermodern}
\begin{document}
En slanted: \textsl{test \textsc{testsc \texttt{testsctt}}}
\end{document}

J'en conclus que le \setmonofont{NewCMMono10-Regular} ne charge pas tout ce que je pensais :-(

Question 1 : que changer à mon ECM2 pour obtenir la police monospace de NewComputerModern avec des petites caps penchées ?

Question 2 (bonus!) : existe-t-il, pour chaque fonte, un recueil de tous les arguments que l'on peut mettre dans un setmainfont/setmonofont/ etc.? Dans la documentation de NewComputerModern, je n'ai pas trouvé :-( ; j'ai aussi parcouru les documents de Daniel Flipo (@dflipo : très utiles !) mais il n'y a que le nom des fontes, et non toutes leurs déclinaisons (ce qui m'a déjà bien aidé).

Edit (réponse) : j'utilise le mix ci-dessous des deux réponses proposées (je ne crée pas localement le fichier .fontspec car je travaille sur plusieurs ordinateurs différents ce qui complique la synchronisation) :

\usepackage[nott]{kpfonts-otf}
\setmonofont[%
  ItalicFont=NewCMMono10-Italic.otf,%
  BoldFont=NewCMMono10-Bold.otf,%
  BoldItalicFont=NewCMMono10-BoldOblique.otf,%
  SlantedFont=NewCMMono10-Regular.otf,%
  SlantedFeatures={FakeSlant=0.25},
  BoldSlantedFont=NewCMMono10-Bold.otf,%
  BoldSlantedFeatures={FakeSlant=0.25},
  SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular}

Posée 20 Jan, 17:53

Mathieu2L's gravatar image

Mathieu2L
316313
Taux d'acceptation : 75%

Modifiée 01 Fév, 11:04


L'extension newcomputermodern utilise fspolddefault.tex :

% !TeX TS-program = lualatex
\documentclass{article}
\usepackage{kpfonts-otf}

\setmonofont[%
ItalicFont=NewCMMono10-Italic.otf,%
BoldFont=NewCMMono10-Bold.otf,%
BoldItalicFont=NewCMMono10-BoldOblique.otf,%
SlantedFont=NewCMMono10-Regular.otf,%
SlantedFeatures={FakeSlant=0.25},
BoldSlantedFont=NewCMMono10-Bold.otf,%
BoldSlantedFeatures={FakeSlant=0.25},
SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular.otf}

\begin{document}
En slanted: \textsl{test \textsc{testsc \texttt{testsctt}}}
\end{document}

alt text

Lien permanent

Publiée 21 Jan, 13:12

samcarter's gravatar image

samcarter
8.2k2817
Taux d'acceptation : 57%

Modifiée 21 Jan, 13:20

1

Parfait. Toutefois, cela m'amène deux questions :

  • je m'attendais à ce qu'écrire \setmonofont{nom} charge la famille mono de nom avec toutes ses options par défaut : y a-t-il un intérêt à que ce ne soit pas le cas ?

  • le README du package newcomputermodern indique un chargement par \usepackage{newcomputermodern} ou par :

    \usepackage{fontspec}
    \setmainfont{NewCM10-Book}
    \setsansfont{NewCMSans10-Book}
    \setmonofont{NewCMMono10-Book}
    

Ce n'est donc pas vraiment correct, non ?

(23 Jan, 10:03) Mathieu2L Mathieu2L's gravatar image

Une solution simple :

\documentclass[a4paper]{article}

\usepackage{newcomputermodern}
\usepackage[nott]{kpfonts-otf}

\begin{document}
En slanted: \textsl{test \textsc{testsc \texttt{testsctt}}}
\end{document}

Pourquoi ça marche ? on charge d'abord newcomputermodern (en fait fspdefault.tex) qui inclut toutes les définitions nécessaires, en particulier celles décrites par @samcarter pour la fonte mono, et ensuite on charge kpfonts-otf sauf les fontes mono, ce qui redéfinit les polices Serif et Sans et Math.

Un commande brute \setmonofont{NewCMMono10-Book} suffirait si la fonte NewCMMono10-Book était accompagnée d'un fichier NewCMMono10-Book.fontspec qui contiendrait les options adéquates :

\defaultfontfeatures[NewCMMono10-Book]
  {
  Extension = .otf ,
  ItalicFont=NewCMMono10-Italic,
  BoldFont=NewCMMono10-Bold,
  BoldItalicFont=NewCMMono10-BoldOblique,
  SlantedFont=NewCMMono10-Regular,
  SlantedFeatures={FakeSlant=0.25},
  BoldSlantedFont=NewCMMono10-Bold,
  BoldSlantedFeatures={FakeSlant=0.25},
  SmallCapsFeatures={Numbers=OldStyle}]{NewCMMono10-Regular}
 }

Certaines polices sont accompagnées d'un tel fichier (Erewhon, XCharter, …), d'autres pas comme NewComputerModern, ce qui aboutit à des comportements différents selon les polices.

Rien n'empêche de créer un tel fichier et de le placer dans le répertoire courant (ou dans $TEXMFHOME ou $TEXMFLOCAL pour un usage global), ensuite l'ECM2 fonctionnera correctement. Cette solution me paraît préférable car elle évite de charger une fois pour rien les polices Serif, Sans et Math de NewComputerModern. Ajouter l'option nott lors du chargement de kpfonts-otf éviterait de charger la police mono deux fois.

Lien permanent

Publiée 27 Jan, 11:06

dflipo's gravatar image

dflipo
2813
Taux d'acceptation : 16%

Modifiée 27 Jan, 17:10

Merci pour l'explication très claire, en particulier le rôle du fichier .fontspec qui m'échappait !

(01 Fév, 10:26) Mathieu2L Mathieu2L's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.