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}
Bonjour
Il semble que \let\textsc\mycommand (à la place du \renewcommand) fasse
le job.
François
Le 31/08/2023 à 14:25, Jacques André a écrit :
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}
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.
Le 31 août 2023 à 14:33, Pétiard François petiard.francois@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é
Le 5 sept. 2023 à 16:49, Thierry Bouche thierry.bouche@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
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
Le jeudi 31 août 2023, 15:30:44 CEST Jacques André a écrit :
Le 31 août 2023 à 14:33, Pétiard François
xyz@xyz.tld 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é
Le 31 août 2023 à 19:08, Thomas Savary compo85@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.