
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
(1 回)、 が必要です\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}