Como posso digitar (imprimir) apenas a primeira letra de um grupo de texto?
Por exemplo, como biblatex
determina bibtex
as primeiras iniciais de um nome?
MWE para começar:
\documentclass[]{article}
\begin{document}
This prints \firstinit{just the first letter}.
My hero is \firstinit{John} \firstinit{Paul} Jones.
\end{document}
Responder1
A rotina \justfirst
precisa de seu argumentonãoentre colchetes, mas terminado por uma quantidade conhecida. Assim, \firstinit
conspira com \justfirst
, sem o conhecimento do usuário, para fornecê-lo exatamente assim, com a \relax
como terminador, porque é improvável que apareça no texto do usuário.
\documentclass[]{article}
\def\firstinit#1{\justfirst#1\relax}
\def\justfirst#1#2\relax{#1}
\begin{document}
This prints \firstinit{just the first letter}.
My hero is \firstinit{John} \firstinit{Paul} Jones.
\end{document}
Claro, se você pretendia que frases com várias palavras produzissem a primeira letra docadapalavra, isso é um pouco mais difícil. REVISADO para aproveitar a recursão; RE-REVISADO para eliminar o uso de pacotes. RE-RE-REVISADO para evitar a derrota por uma "lhama".
\documentclass[]{article}
\def\firstinit#1{\justfirst#1 \relax\relax}
\def\justfirst#1#2 #3\relax{#1\if\relax#3\else{} \justfirst#3\relax\fi}
\begin{document}
This prints \firstinit{just the first llama in the list}.
My hero is \firstinit{John} \firstinit{Paul} Jones.
\end{document}