
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}
\noexpandarg
문서(섹션 3.1.1)에서 보라색으로 인쇄된 인수는 확장 대상이 아닙니다 . \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}