在以下示例中,如果变量 dia 是星期一,则我想写入星期二。以下示例写入其余内容,而不管变量 dia 的字符串如何。
\documentclass{article}
\def\dia#1{\if{#1=monday}{tuesday}\else{rest}\fi}
\begin{document}
\dia{monday}
\end{document}
答案1
有很多方法可以做到这一点。下面的方法也适用于纯 TeX,无需 e-TeX 或其他扩展。但是,它不可扩展,但这似乎在这里不需要。
\documentclass{article}
\newcommand*{\dia}[1]{%
\begingroup % keep macro definitions local
\def\param{#1}%
\def\monday{monday}%
\ifx\param\monday
Tuesday%
\else
Rest%
\fi
\endgroup
}
\begin{document}
\dia{monday}
\end{document}
链接:
无需直接字符串比较的可扩展解决方案:
\documentclass{article}
\makeatletter
\@namedef{dia@Monday}{Tuesday}
\@namedef{dia@Tuesday}{Wednesday}
\@namedef{dia@Wednesday}{Thursday}
\@namedef{dia@Thursday}{Friday}
\@namedef{dia@Friday}{Saturday}
\@namedef{dia@Saturday}{Sunday}
\@namedef{dia@Sunday}{Monday}
\newcommand*{\dia}[1]{%
\expandafter\ifx\csname dia@#1\endcsname\relax
Rest%
\else
\csname dia@#1\endcsname
\fi
}
\makeatother
\begin{document}
\dia{Monday}
\dia{\dia{Monday}}
\dia{\dia{\dia{Monday}}}
\dia{\dia{\dia{\dia{Monday}}}}
\dia{\dia{\dia{\dia{\dia{Monday}}}}}
\dia{\dia{\dia{\dia{\dia{\dia{Monday}}}}}}
\dia{\dia{\dia{\dia{\dia{\dia{\dia{Monday}}}}}}}
\dia{\dia{\dia{\dia{\dia{\dia{\dia{\dia{Monday}}}}}}}}
\end{document}