在 \section 命令中使用的宏在目录中无效

在 \section 命令中使用的宏在目录中无效

我需要一个仅在主文档中(在章节标题内)执行然后消失(对于目录)的宏。

发生这种情况的一个简单的例子是:

\documentclass[12pt]{memoir}
\usepackage{fixltx2e}[2006/09/13]
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{txfonts}


\begin{document}

\tableofcontents

\section{The only section}

Text.

\section{The only section [\textsl{continued}]}

More text.

\section{The only section [\textsl{continued\hspace{0.13ex}}]}

An attempted fix.

\end{document}

第一节标题中的“[继续]”字距调整得很糟糕。手动调整(\hspace{0.13ex})可以解决问题,但不幸的是,这会导致目录中的空间过多。我希望额外的空间只应用于文档正文中的实际节标题。(我尝试了\/\hspace和的所有可能组合\protect;但都不起作用。)

罪魁祸首(导致字距调整消失的原因)显然是加载了txfonts,而我需要在文档的其他地方使用它。(是的,我需要的txfontsnewtxtext/newtxmath原因不太清楚,与字体加载顺序有关,我不想深入探讨,并规避了潜在的问题无论如何都会是另一个问题。我的示例代码是一个有用的例子。)如果我省略txfonts,问题就会消失,这意味着我首先不需要插入手动空格。(这可能指向另一个问题。)

有关的:

答案1

仅为“完整性”而添加

对于这个特定问题,您可以使用

\section[<stuff for the toc>]{<Actual section heading>}

答案2

有点不同的方法:我们写入\dcorr文件.toc,但我们\let\relax期间\tableofcontents

\documentclass[12pt]{memoir}
\usepackage{fixltx2e}[2006/09/13]
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{txfonts}

\DeclareRobustCommand{\dcorr}{\hspace*{0.13ex}}

\begin{document}

\begingroup
\let\dcorr\relax
\tableofcontents
\endgroup

\section{The only section}

Text.

\section{The only section [\textsl{continued}]}

More text.

\section{The only section [\textsl{continued}\dcorr]}
% If one keeps \dcorr within the \textsl macro,
% one needs either a larger value (0.23ex works)
% or one needs to put an italic correction (\/)
% at the beginning of the definition of \dcorr.

An attempted fix.

\end{document}

答案3

就像 tohecz 写的:“这有点像XY问题“。他的回答解决了 OP 的真正问题,但要回答“仅在第一次执行然后消失的宏”的问题:

\documentclass{article}

% method 1:
\newcommand{\mnc}{example%
  \renewcommand{\mnc}{}%
  }

% method 2:
\def\mnd{elpmaxe%
  \gdef\mnd{}%
  }

\begin{document}

A\mnc B\mnd C
% output: AexampleBelpmaxeC

D\mnc E\mnd F
% output: DEF

A\mnc B\mnd C
% output: ABC

\end{document}

输出

(放在和{}后面的分别空格应被保留。)\mnc\mnd

相关内容