nota de rodapé dentro de uma string testada

nota de rodapé dentro de uma string testada

Gostaria de criar uma nota de rodapé dentro de um comando que teste a string pai (usando xstring), como:

\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}

Eu sei que as notas de rodapé são frágeis em geral, mas todas as variações que tentei não foram compiladas. Se eu tirar a nota de rodapé, funciona perfeitamente.

Procurei respostas na Internet e não encontrei esse caso/problema exato levantado em lugar nenhum e, infelizmente, algumas soluções alternativas para outros casos ligeiramente relacionados não foram aplicáveis ​​a isso.

Agradecemos antecipadamente por qualquer ajuda! Farei o acompanhamento se encontrar uma solução sozinho.

Responder1

A configuração padrão xstringé \fullexpandarg; dependendo de como você precisa usá-lo, você pode 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}

Os \noexpandargargumentos que na documentação (seção 3.1.1) são impressos na cor roxa não estão sujeitos a expansão. Para expandir \lymessage(uma vez), precisamos \expandafter.

Caso contrário, você pode prosseguir com \expandarguma única etapa de expansão no primeiro token em cada argumento “roxo”.

\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}

Ou, se precisar de outro lugar \fullexpandarg, você pode desativar o recurso 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}

Responder2

insira a descrição da imagem aqui

\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}

informação relacionada