作为一个乳胶新手,我对如何正确使用等感到困惑\IfEndWith
。\title{}
\chapter{}
这是我的代码:
\newcommand{\hero}{John}
\newcommand{\heroap}{\IfEndWith{\hero}{s}{\hero'}{\hero's}}
这些命令是在序言中设置的,我可以\heroap
在文档的任何位置使用而不会出现任何问题,除非我尝试在\title{}
或\chapter{}
(以及大概类似的内置构造)中使用它。
知道我做错了什么吗?我也很高兴收到替代方案的建议\IfEndWith
,它似乎正好适合我的用例。
答案1
以“安全”的方式定义命令\heroap
,即使用\NewDocumentCommand
。否则,当使用“老式”方式时,您必须\heroap
在非安全环境中添加前缀\protect
。
当代方法:
\documentclass{article}
\usepackage{xstring}
\newcommand{\hero}{John}
\NewDocumentCommand\heroap{}{\IfEndWith{\hero}{s}{\hero'}{\hero's}}
\begin{document}
\title{\heroap}
\author{\heroap}
\maketitle
\section{\heroap}
\end{document}
老式方法:
\documentclass{article}
\usepackage{xstring}
\newcommand{\hero}{John}
\newcommand\heroap{\IfEndWith{\hero}{s}{\hero'}{\hero's}}
\begin{document}
\title{\heroap}
\author{\heroap}
\maketitle
\section{\protect\heroap}
\end{document}
两种方法都会产生相同的输出: