假设我正在写一本书,其中有些章节特别重要。我希望*
在目录中的页码后面用 来标识这些章节。我该如何实现呢?
我可以将额外的内容放入目录中,方法是将其\addtocontents
放入文本中的适当位置。因此,在这种情况下,我可能会\addtocontents{\protect\marginpar{*}}
在文本中的适当位置写一些类似的东西。
但这是不对的,因为\marginpar
试图将其内容放入外边距。我总是想将其放入*
右边距,无论我在偶数页还是奇数页。
看起来这应该非常容易做到,但我不知道该怎么做。有什么建议吗?
答案1
使用\marginpar
可能不是最好的方法,但实际上设置起来并不太难(假设 TOC 范围内没有任何其他\marginpar
s,但通常不会有)。
那么需要做什么呢?基本上,当遇到时,我们必须阻止 LaTeX 选择外部边距。相反,我们必须让它执行未选择\marginpar
该选项时的操作。这基本上是在排版目录之前将开关设置为 false,之后设置为 true(如果文档中的 s 应该切换边距)。然后可能看起来像这样:twoside
@mparswitch
\marginpar
\documentclass[twoside]{article}
\usepackage{fixltx2e}
\MakeRobust\marginpar
\makeatletter
\def\marginparright{\@mparswitchfalse}
\def\marginparoutside{\@mparswitchtrue}
\makeatother
\usepackage{lipsum}
\begin{document}
\marginparright \tableofcontents \marginparoutside
\section{foo}
\lipsum[2]
\section[Important\marginpar{*}]{Important}
test \marginpar{outside?}
\lipsum[1]
\addtocontents{toc}{\protect\newpage} % generate a pagebreak in toc for testing
\section[Again Important\marginpar{*}]{Again Important on page 2 in TOC}
test \marginpar{outside?}
\newpage
\lipsum[1]\marginpar{outside?}
\end{document}
结果(第二页)将是: