我想在测试父字符串的命令中创建一个脚注(使用xstring
),例如:
\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}
我知道脚注通常很脆弱,但我尝试过的所有变体都无法编译。如果我删除脚注,它就会变得非常好用。
我已在互联网上搜索答案,但没有在任何地方发现出现过这个确切的案例/问题,而且不幸的是,针对其他略微相关的案例的几种解决方法并不适用于此。
在此先感谢您的帮助!如果我自己找到解决方案,我会跟进。
答案1
标准设置xstring
是\fullexpandarg
;根据你的使用需要,你可以
\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}
文档(第 3.1.1 节)中以\noexpandarg
紫色印刷的参数不进行扩展。为了扩展\lymessage
(一次),我们需要\expandafter
。
否则,您可以继续\expandarg
对每个“紫色”参数中的第一个标记执行单个扩展步骤。
\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}
或者,如果您在其他地方需要\fullexpandarg
,您可以在本地禁用该功能:
\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}