[gut] Fausses petites caps et espaces

0 views
Skip to first unread message

Jacques André

unread,
Aug 31, 2023, 8:25:58 AM8/31/23
to g...@ens.fr
Bonjour,

Je dois utiliser une fonte qui ne dispose pas de small caps et suis bien obligé de les simuler (je ne peux pas changer de fonte et ne peux pas non plus utiliser fontforge par exemple pour modifier la fonte).

J’ai trouvé sur le web une macro qui marche bien (même si elle donne des résultats horribles).
Si maintenant, pour ne pas toucher à mon source, je redéfinis

\renewcommand{\textsc}[1]{\mycommand[#1]}

mes fausses petites caps sont bien créées mais je perd les espaces…

Ci-joint exemple (source et pdf).

Si quelqu’un peut me dire comment faire, merci…

Jacques André


\documentclass{article}
\usepackage{fontspec}
\def\mycommand{\bgroup\obeyspaces\mycommandaux}
\def\mycommandaux#1{\mycommandauxii #1\relax\relax\egroup}
\def\mycommandauxii#1{%
\ifx\relax#1\else \ifcat#1\@sptoken{} \expandafter\expandafter\expandafter\mycommandauxii\else
\ifnum`#1=\uccode`#1 {\normalsize #1}\else {\footnotesize \uppercase{#1}}\fi \expandafter\expandafter\expandafter\mycommandauxii\expandafter\fi\fi}
\renewcommand{\textsc}[1]{\mycommand{#1}}
\begin{document}
\mycommand{Ça Marche Comme Espéré}

\textsc{Mais Plus du Tout Ici}

\end{document}

ec-fakesc.pdf

Pétiard François

unread,
Aug 31, 2023, 8:33:43 AM8/31/23
to g...@ens.fr
Bonjour

Il semble que \let\textsc\mycommand  (à la place du \renewcommand) fasse
le job.

François

Jacques André

unread,
Aug 31, 2023, 9:31:09 AM8/31/23
to g...@ens.fr


> Le 31 août 2023 à 14:33, Pétiard François <petiard....@gmail.com> a écrit :
>
> Bonjour
>
> Il semble que \let\textsc\mycommand (à la place du \renewcommand) fasse le job.

Oui, parfait chez moi aussi. Merci...

Bonsoir…

Jacques André

Thomas Savary

unread,
Aug 31, 2023, 1:08:48 PM8/31/23
to g...@ens.fr
Bonjour, Jacques,
Bonjour, la liste,

Si jamais ça peut servir, voici la commande que j’ai créée voilà
quelques années, alors que j’étais moi aussi obligé d’utiliser une
police sans petites capitales (nécessite fontspec, microtype et
graphics).

\newcommand{\smcap}[1]{%
{\fontsize{8pt}{10pt}\selectfont% selon hauteur d’x
\addfontfeature{FakeBold=1.08}% selon graisse
\textls[100]{\scalebox{1.08}[1]{\MakeUppercase{#1}}}% selon chasse
}%
}

Le corps choisi dépendra de la hauteur d’x de la police sans petites
capitales ; le faux gras dépendra quant à lui de la graisse de celle-
ci ; l’élargissement avec \scalebox et l’interlettrage avec \textls
dépendront de sa chasse et de ses approches.

Inconvénient : il faut exclure de la commande les grandes capitales. Au
lieu de saisir \textsc{Paris}, il faut écrire P\smcap{aris}.

Bonne soirée !

Thomas Savary
1 le Grand-Plessis
F-85340 L’Île-d’Olonne
Tél. 06 22 82 61 34
https://compo85.fr/

Jacques André

unread,
Aug 31, 2023, 1:26:02 PM8/31/23
to g...@ens.fr


> Le 31 août 2023 à 19:08, Thomas Savary <com...@correctionpro.fr> a écrit :
>
> Bonjour, Jacques,
> Bonjour, la liste,
Salut Thomas,
>
> Si jamais ça peut servir, voici la commande que j’ai créée voilà
> quelques années, alors que j’étais moi aussi obligé d’utiliser une
> police sans petites capitales (nécessite fontspec, microtype et
> graphics).
>
> \newcommand{\smcap}[1]{%
> {\fontsize{8pt}{10pt}\selectfont% selon hauteur d’x
> \addfontfeature{FakeBold=1.08}% selon graisse
> \textls[100]{\scalebox{1.08}[1]{\MakeUppercase{#1}}}% selon chasse
> }%
> }

Tu pourrais encore améliorer cette macro en modifiant légèrement la baseline par raisebox… (ton scalebox ne se fait pas
comme on voudrait).


>
> Inconvénient : il faut exclure de la commande les grandes capitales. Au
> lieu de saisir \textsc{Paris}, il faut écrire P\smcap{aris}.

Dans mon cas, c’est hélas impossible. J’ai des \textsc{ } en grand nombre, et utilise beaucoup les sc dans la biblio…

Merci quand même…

J.A.

Thierry Bouche

unread,
Sep 5, 2023, 10:38:42 AM9/5/23
to g...@ens.fr
Bonjour,

Le jeudi 31 août 2023 à 14:25:28, Jacques André écrivit :

J> Je dois utiliser une fonte qui ne dispose pas de small caps et suis bien obligé de les simuler (je ne peux pas changer de fonte et ne peux pas non plus utiliser fontforge par exemple pour modifier la fonte).

mais tu pourrais faire une fonte virtuelle pour un résultat plus robuste et utilisable dans plus de situations. Le code que tu as trouvé risque de donner des choses bizarres s'il y a autre chose que du texte dedans et n'importe quoi si le texte concerné n'est pas en \normalsize...

Sinon ça m'étonnerait qu'il n'y ait pas déjà quelque chose dans la nature (en gros il faut ce qu'il y a déjà dans le package ulem pour parser une chaîne de caractères).

Bonne chance quand même !

Th.


Michel Bovani

unread,
Sep 5, 2023, 11:37:38 AM9/5/23
to g...@ens.fr
Le 5 sept. 2023 à 16:49, Thierry Bouche <thierry...@univ-grenoble-alpes.fr> a écrit :
>
> Bonjour,
>
> Le jeudi 31 août 2023 à 14:25:28, Jacques André écrivit :
>
> J> Je dois utiliser une fonte qui ne dispose pas de small caps et suis bien obligé de les simuler (je ne peux pas changer de fonte et ne peux pas non plus utiliser fontforge par exemple pour modifier la fonte).
>
> mais tu pourrais faire une fonte virtuelle pour un résultat plus robuste et utilisable dans plus de situations.

Oui mais Jacques parle d’une fonte opentype si j’ai bien suivi. Il
Y aurait des opentype virtuelles et on ne m’aurait rien dit ?


> Sinon ça m'étonnerait qu'il n'y ait pas déjà quelque chose dans la nature (en gros il faut ce qu'il y a déjà dans le package ulem pour parser une chaîne de caractères).

De toute façon ça doit être à la portée de quelqu’un qui sait utiliser \expandafter\expandafter\expandafter

Michel
Reply all
Reply to author
Forward
0 new messages