Je compose un texte en romain pour lequel j'ai choisi la magnifique suite de polices kpfonts, de Christophe Caignaert.

Ce document comporte des tableaux. Pour ceux-ci, je souhaite utiliser des caractères sans empattements.

Comme l'atteste le premier tableau de l'ECM ci-dessous, le sélecteur \sffamily fonctionne très bien : le texte d'une cellule frappée par ce sélecteur est bien sans empattements.

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, 12pt, french, BCOR=0pt, DIV=15]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle, light, largesmallcaps]{kpfonts}
\usepackage{babel}
\begin{document}
\pagestyle{empty}
\setlength{\parindent}{0cm}

\begin{tabular}{ll}
Premier & tableau\\
\sffamily kpfonts & \sffamily sans empattements
\end{tabular}\\

\fontfamily{sffamily}\selectfont
\begin{tabular}{ll}
Deuxième & tableau\\
Computer Modern \emph{avec} empattements\dots & \sffamily ou kpfonts sans empattements !
\end{tabular}

\end{document}

Mais insérer des \sffamily à tout bout de champ est lassant.

Je me dis que je vais changer de police avant le tableau, puis immédiatement après : ça devrait faire l'affaire. Ainsi donc écris-je \fontfamily{sffamily}\selectfont en préambule du deuxième tableau de l'ECM.

Surprise : mon deuxième tableau est passé en Computer Modern ! Mais avec empattements !

Et re-surprise : insérer le sélecteur \sffamily dans une cellule fait repasser celle-ci en kpfonts (et sans empattements, heureusement) !

Pourquoi diantre l'effet produit par sffamily n'est-il pas le même, selon que l'on l'utilise après un antislash ou comme paramètre de la commande \fontfamily ? Pour un utilisateur lambda qui désire changer de famille de caractères, il serait logique que l'effet soit le même !

PS : j'aurais mieux fait de lire la doc de kpfonts, qui m'indique que j'aurais dû écrire \fontfamily{jkpss}\selectfont. Mais voilà, dans l'action, on ne prend pas toujours le temps de lire les docs ! Du coup on lève des lièvres qui font poster des questions sur texnique, on apprend des trucs, etc.

[EDIT] : cette question en a amené une autre, posée quelques jours plus tard.

Posée 02 Fév '17, 08:27

Pathe's gravatar image

Pathe ♦♦
7.5k43204251
Taux d'acceptation : 55%

Modifiée 09 Aoû '17, 19:45

1

Vous pouvez remplacer \fontfamily{sffamily}\selectfont par \sffamily. (et \normalfont après le tableau)

L'argument de la commande \fontfamily est (abréviation de nom) de la font par exemple cmr lmss ppl jkpss.

(02 Fév '17, 10:27) touhami touhami's gravatar image
2

Est-ce que tu souhaites utiliser la fonte sans empattements pour toutes les cellules du tableau ? Si oui, un moyen de n'appeler \sffamily qu'une seule fois par tableau est : \begingroup \sffamily \begin{tabular} ...\end{tabular} \endgroup

Voire même utiliser des macros ou le package etoolbox pour automatiser et simplifier tout ça.

(02 Fév '17, 10:32) jerome dequeker jerome%20dequeker's gravatar image

Dans ma question, je parle de la solution que j'ai trouvée pour avoir tous mes tableaux en kpfonts sans empattements.

Mais si je l'ai posée, c'est pour comprendre ce qui se passe !

Si je vous comprends bien, pour la commande \fontfamily, l'argument sffamily déclenche l'appel de la fonte Computer Modern sans empattements, à savoir cmss : \fontfamily{sffamily}\selectfont = \fontfamily{cmss}\selectfont. J'ai bon ?

(02 Fév '17, 10:44) Pathe ♦♦ Pathe's gravatar image
1

Non l'argument sffamily n'est pas reconnu pour \fontfamily donc la famille par défaut est utilisée à savoir cmr.

(02 Fév '17, 11:00) touhami touhami's gravatar image

Tout s'éclaire !

(02 Fév '17, 11:10) Pathe ♦♦ Pathe's gravatar image

Comme l'a montré touhami, la commande \fontfamily ne prend comme argument que le nom de bas niveau d'une fonte : par exemple jkpss (Johannes Kepler sans serif) pour kpfonts sans empattements, ou bien cmr pour computer modern romain.

Ces paramètres ne tombent pas sous le sens. Dans le cas d'un document où un seul ensemble de polices est utilisé, pour passer de caractères avec empattements à des caractères qui en sont dépourvus, le plus simple est d'utiliser la commande \sffamily, et de revenir aux caractères avec empattements avec \normalfont.

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, 12pt, french, BCOR=0pt, DIV=15]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle, light, largesmallcaps]{kpfonts}
\usepackage{lipsum}
\usepackage{babel}
\begin{document}
\pagestyle{empty}
\setlength{\parindent}{0cm}

\lipsum[1]

\sffamily
\begin{tabular}{ll}
Un & tableau\\
kpfonts & sans empattements
\end{tabular}

\normalfont
\lipsum[2] 
\end{document}
Lien permanent

Publiée 02 Fév '17, 11:42

Pathe's gravatar image

Pathe ♦♦
7.5k43204251
Taux d'acceptation : 55%

Modifiée 02 Fév '17, 13:50

1

Suivant le commentaire de @jerome dequeker il suffit d'ajouter \usepackage{etoolbox} \AtBeginEnvironment{tabular}{\sffamily} au préambule.

(03 Fév '17, 11:48) touhami touhami's gravatar image

L'ajout de commandes de formatage dans le corps du document (que ce soit directement dans chaque cellule ou avant et après le tableau) n'est pas recommandé (un oubli est si vite arrivé).

Modifier le code de l'environnement tabular pour qu'il utilise systématiquement une police sans empattement ne l'est pas non plus, car quelqu'un qui relirait le code ne comprendrait pas ce comportement spécial (dans le document).

Je conseille donc la création d'un nouvel environnement nommé sftabular de la manière suivante (à placer dans le préambule) :

Ouvrir dans l'éditeur Overleaf
\newenvironment{sftabular}{\sffamily\begin{tabular}}{\end{tabular}}

Votre document d'exemple deviendrait donc :

Ouvrir dans l'éditeur Overleaf
\documentclass[a4paper, 12pt, french, BCOR=0pt, DIV=15]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[fulloldstyle, light, largesmallcaps]{kpfonts}
\usepackage{babel}

\newenvironment{sftabular}{\sffamily\begin{tabular}}{\end{tabular}}

\pagestyle{empty}
\setlength{\parindent}{0cm}
\begin{document}

Avant (avec empattements)

\begin{sftabular}{ll}
Premier & tableau\\
kpfonts & sans empattements
\end{sftabular}

Après (avec empattements)
\end{document}
Lien permanent

Publiée 04 Fév '17, 13:12

Paul%20Gaborit's gravatar image

Paul Gaborit
2.0k16
Taux d'acceptation : 30%

Modifiée 28 Avr '17, 09:53

Pathe's gravatar image

Pathe ♦♦
7.5k43204251

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.