我尝试制作一个具有不同行为的命令,具体取决于它是否在主要区域执行。
因此我使用\if@mainmatter
主题中描述的命令检查主要内容
但是,当我在以下 MWE 中使用它时:
\documentclass{book}
\newcommand\foo{
\makeatletter
\if@mainmatter
{We are on mainmatter}
\else%
{We are \textbf{not} on mainmatter}
\fi%
\makeatother
}
\begin{document}
\frontmatter
lorem ipsum dolor \foo
\mainmatter
lorem ipsum dolor \foo
\end{document}
我得到以下渲染:
lorem ipsum dolor 我们是不是关注主要内容
(分页符)
lorem ipsum dolor 我们是不是关注主要内容
该命令根本没有对主要物质区域和无主要物质区域做出任何区分。
那么如何使用它来根据 foo 命令是否在主区域执行来改变其行为?
答案1
你必须把\makeatletter
外部 \newcommand
。
\documentclass{book}
\makeatletter
\newcommand\foo{
\if@mainmatter
{We are on mainmatter}
\else%
{We are \textbf{not} on mainmatter}
\fi%
}
\makeatother
\begin{document}
\frontmatter
lorem ipsum dolor \foo
\mainmatter
lorem ipsum dolor \foo
\end{document}