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 好的明白。将命令写入辅助文件的方法还不太会,我研究一下。