nota al pie dentro de una cadena probada

nota al pie dentro de una cadena probada

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 xstringes \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 \noexpandargargumentos 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 \expandargpor 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}

Respuesta2

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{etex}
\usepackage{xstring}

\begin{document}

\newcommand{\lymessage}{This is my\footnote{footnote text} message.}

\begingroup
\def\footnote#1{}%
\IfEndWith{\lymessage}{message}{It might be true.}{It is definitely false.}%
\endgroup

\lymessage

\end{document}

información relacionada