Digitar apenas a primeira letra de um grupo

Digitar apenas a primeira letra de um grupo

Como posso digitar (imprimir) apenas a primeira letra de um grupo de texto?

Por exemplo, como biblatexdetermina bibtexas 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 \justfirstprecisa de seu argumentonãoentre colchetes, mas terminado por uma quantidade conhecida. Assim, \firstinitconspira com \justfirst, sem o conhecimento do usuário, para fornecê-lo exatamente assim, com a \relaxcomo 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}

insira a descrição da imagem aqui


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} 

insira a descrição da imagem aqui

informação relacionada