我需要一个仅在主文档中(在章节标题内)执行然后消失(对于目录)的宏。
发生这种情况的一个简单的例子是:
\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
,而我需要在文档的其他地方使用它。(是的,我需要的txfonts
是newtxtext
/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