테스트된 문자열 내부의 각주

테스트된 문자열 내부의 각주

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}

답변2

여기에 이미지 설명을 입력하세요

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

관련 정보