
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 \noexpandarg
argumentos 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 \expandarg
uma ú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}