É possível usar uma fonte diferente sempre que uma letra maiúscula/maiúscula aparecer no texto.
Portanto, se eu tiver uma frase "Este é um texto.", gostaria que o primeiro T tivesse uma fonte diferente do restante do texto.
Se eu tiver uma frase: "Este é um texto com uma sigla GMT", gostaria que o primeiro T e GMT tivessem uma fonte diferente do resto.
Da mesma forma, para "Este é um texto com um nome próprio: Londres", gostaria que o primeiro T e o L tivessem uma fonte diferente.
Estou compartilhando uma captura de tela do tipo de efeito que gostaria.
Preciso fazer isso para todo o meu documento (possivelmente vários capítulos). Espero encontrar uma maneira de fazer isso automaticamente, sem precisar alterar cada letra individualmente.
Responder1
Ao compilar com XeLaTeX você pode usar o \XeTeXinterchartoks
mecanismo.
A ideia é definir uma classe de caracteres composta por caracteres latinos maiúsculos, que possuem códigos de caracteres hexadecimais de 0041 (A) a 005A (Z).
Então você define uma transição de todos os outros personagens para esta nova classe. Os demais caracteres possuem classe 0 ou 4095 para limites de palavras. Nesta transição você pode inserir \cal
a próxima letra maiúscula como argumento. Se bem entendi, a inserção desta macro irá desencadear outra transição se houver mais letras maiúsculas após a primeira, então as letras subsequentes também serão exibidas como o argumento de \cal
.
MWE, em grande parte baseado emXeLaTeX: Como especificar uma família de fontes diferente para texto latino em texto não latino?eAlterando o tamanho dos dígitos da fonte principal no Xelatex:
\documentclass{article}
\XeTeXinterchartokenstate = 1\relax
\newXeTeXintercharclass\ucletterclass
\ExplSyntaxOn
\int_step_inline:nnnn {"0041}{1}{"005A}
{ \XeTeXcharclass #1 = \ucletterclass }
\ExplSyntaxOff
\def\mycal#1{$\cal{#1}$}
\XeTeXinterchartoks 0 \ucletterclass = {\mycal}
\XeTeXinterchartoks 4095 \ucletterclass = {\mycal}
\begin{document}
This is some text.
This is some text with an acronym in it GMT
This is some text with a proper name in it: London
\end{document}
Resultado:
Observe que você pode desativar temporariamente o mecanismo de transição \XeTeXinterchartokenstate = 0\relax
se precisar de letras maiúsculas inalteradas em algum lugar.
Responder2
Estou compartilhando meu código/solução caso isso ajude outra pessoa. Isso se baseia na resposta de Marijn e nos links dessa postagem.
\documentclass[a4paper,11pt]{book}
\usepackage[default]{frcursive}
\XeTeXinterchartokenstate = 1\relax
\newXeTeXintercharclass\ucletterclass
\ExplSyntaxOn
\int_step_inline:nnnn {"0041}{1}{"005A}
{ \XeTeXcharclass #1 = \ucletterclass }
\ExplSyntaxOff
\def\mycal#1{$\cal{#1}$}
\XeTeXinterchartoks 0 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 0 = {\endgroup}
\XeTeXinterchartoks 4095 \ucletterclass = {\begingroup \fontfamily{phv}\fontseries{m}\fontshape{n}\selectfont}
\XeTeXinterchartoks \ucletterclass 4095= {\endgroup}
\begin{document}
This is some text.
This is some text with an acronym in it GMT
This is some text with a proper name in it: London
\end{document}
Aqui está o resultado.