判断某个命令是否在正文中被使用?

发布于 2024-10-15 22:34:51
OS: Win10; compiling: XeLaTeX

问题描述

以一个场景来举例。

首先自定义一个命令 \printing,可直接打印特定文本:

\newcommand{\printing}{Original content}

然后有如下需求:

  1. 当正文中使用\tableofcontents 命令时,重定义\printing 命令打印的文本为 “Yes”;
  2. 反之,重定义\printing 命令打印的文本为 “No”.

已尝试的方法

  1. \ifcsname命令:无效,貌似只能判断命令是否被定义而不是被使用;
  2. etoolbox 宏包中的条件命令:无效,情况同上.

小要求

优先用latex2e语法 >_<,实在不行再考虑l3语法...

MWE


\documentclass{article}

%\usepackage{etoolbox}
\newcommand{\printing}{Original content}

\begin{document}

\tableofcontents

\section{First section}

\printing

\end{document} 

查看更多

关注者
0
被浏览
289
1 个回答
雾月
雾月 2024-10-15
这家伙很懒,什么也没写!

用通用命令钩子 \AddToHook{cmd/<document cmd>/before}{<write to aux>} 在需要判断是否在正文使用了的命令前加上一段代码,在辅助文件中写入一些标记,然后在 begindocument 钩子(或 \AtBeginDocument,或 begindocument/after 钩子)判断是否有此标记,然后根据需要重定义命令即可。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览