OS: Win10; compiling: XeLaTeX
以一个场景来举例。
首先自定义一个命令 \printing,可直接打印特定文本:
\newcommand{\printing}{Original content}然后有如下需求:
\tableofcontents 命令时,重定义\printing 命令打印的文本为 “Yes”;\printing 命令打印的文本为 “No”.\ifcsname命令:无效,貌似只能判断命令是否被定义而不是被使用;etoolbox 宏包中的条件命令:无效,情况同上.优先用latex2e语法 >_<,实在不行再考虑l3语法...
\documentclass{article}
%\usepackage{etoolbox}
\newcommand{\printing}{Original content}
\begin{document}
\tableofcontents
\section{First section}
\printing
\end{document}
谢谢~ 不过由于
.aux文件中途会被清掉,我考虑在.tex文件中用布尔值做标记(基于etoolbox宏包)。但遇到了一个问题不知如何解决:已提前赋值为true、但条件判断后输出了false的结果。
做过以下尝试:
\tableofcontents换成其他命令(e.g.\LaTeX):failed\AddToHook,\apptocmd,pretocmd):failedMWE:
@u64726
\tableofcontents还没执行的时候,重定义已经发生,不可能提前知道还没有发生的行为,只能通过写入辅助文件的方式判断。@u10307 好的明白。将命令写入辅助文件的方法还不太会,我研究一下。