
Me gustaría crear una nota al pie dentro de un comando que pruebe la cadena principal (usando xstring
), como por ejemplo:
\documentclass{article}
\usepackage{etex}
\usepackage{xstring}
\begin{document}
\newcommand{\lymessage}{This is my\footnote{footnote text} message.}
\IfEndWith{\lymessage}{message}{It might be true.}{It is definitely false.}
\end{document}
Sé que las notas a pie de página son frágiles en general, pero todas las variaciones de esto que he probado no se han podido compilar. Si elimino la nota a pie de página, funciona de maravilla.
Busqué respuestas en Internet y no encontré este caso/problema exacto en ninguna parte y, desafortunadamente, el par de soluciones para otros casos ligeramente relacionados no se han aplicado a este.
¡Gracias de antemano por cualquier ayuda! Haré un seguimiento si encuentro una solución yo mismo.
Respuesta1
La configuración estándar de xstring
es \fullexpandarg
; Dependiendo de cómo necesites usarlo, puedes ir
\documentclass{article}
\usepackage{xstring}
\noexpandarg % don't do full expansion in `purple' arguments
\begin{document}
\newcommand{\lymessage}{This is my\footnote{footnote text} message.}
\expandafter\IfEndWith\expandafter{\lymessage}{message}{It might be true.}{It is definitely false.}
\end{document}
Los \noexpandarg
argumentos que en la documentación (sección 3.1.1) están impresos en color violeta no están sujetos a ampliación. Para expandirnos \lymessage
(una vez), necesitamos \expandafter
.
De lo contrario, puede optar \expandarg
por realizar un único paso de expansión en el primer token de cada argumento "púrpura".
\documentclass{article}
\usepackage{xstring}
\expandarg % expand just once the `purple' arguments
\begin{document}
\newcommand{\lymessage}{This is my\footnote{footnote text} message.}
\IfEndWith{\lymessage}{message}{It might be true.}{It is definitely false.}
\end{document}
O, si lo necesita en otro lugar \fullexpandarg
, puede desactivar la función localmente:
\documentclass{article}
\usepackage{xstring}
\begin{document}
\newcommand{\lymessage}{This is my\footnote{footnote text} message.}
\saveexpandmode\expandarg
\IfEndWith{\lymessage}{message}{It might be true.}{It is definitely false.}
\restoreexpandmode
\end{document}