我需要重新定义命令,以便根据命令是否已发出来\chapter
更改命令。是否有“if”命令可以确定命令是否已发出?\addcontentsline
\appendix
答案1
一般来说,不是的,你无法\empty
从无到有地判断,然而至少report
你book
可以\appendix
通过查看\@chapapp
哪些具有定义\chaptername
或\appendixname
依赖性来判断是否已被使用。
答案2
一般来说,唯一的办法就是自己添加。例如,具体到\appendix
,你可以添加一个布尔开关,如下所示:
这是附录之前。
这是附录之后。
\documentclass{report}
\newif\ifinappendix% Default is \inappendixfalse
\let\oldappendix\appendix% Store \appendix
\renewcommand{\appendix}{% Update \appendix
\oldappendix% Default \appendix
\inappendixtrue% Set switch to true
}
\begin{document}
This is \ifinappendix after \else before \fi the appendix.
\appendix
This is \ifinappendix after \else before \fi the appendix.
\end{document}
etoolbox
还提供类似的“布尔标志”开关:
\documentclass{report}
\usepackage{etoolbox}
\newbool{inappendix}% Default is \boolfalse{inappendix}
\appto\appendix{\booltrue{inappendix}}% Add boolean switch to \appendix
\begin{document}
This is \ifbool{inappendix}{after}{before} the appendix.
\appendix
This is \ifbool{inappendix}{after}{before} the appendix.
\end{document}
扩展大卫的回答,这再次特定于您对的参考\appendix
,您可以检查的值\@chapapp
:
\documentclass{report}
\makeatletter
\newcommand{\inappendix}{TT\fi\expandafter\ifx\@chapapp\appendixname}
\makeatother
\begin{document}
This is \if\inappendix after \else before \fi the appendix.
\appendix
This is \if\inappendix after \else before \fi the appendix.
\end{document}
答案3
我能够直接使用命令 \ifx,但无法使用 \@chapapp 与 \chaptername 进行比较。为此,我定义了 \newcommand{\chapname}{Chapter}。具体来说,我使用了 \ifx\chaptername\chapname,效果非常好!