我在用
\def\margin_symbol{\rlap{\protect\makebox[-3cm]{X}}}
我在部分中使用它来\section{\margin_symbol My Header}
在边缘左侧放置一个 3 厘米的 X;然而,我的问题是我在部分和小节中都使用它,因此符号放置在不同的水平位置。
我是否可以以某种方式将其放置在边缘的绝对位置,而不是像现在这样放置在左侧 3 厘米处?
答案1
此tabto
包的实现将受到某些限制。首先,当\marginsymbol
出现在任何分段宏参数中时,它必须是参数中的最后一项。其次,如果您使用目录或章节页眉,则需要使用分段宏的可选参数来排除边距标记。
\documentclass{book}
\usepackage{tabto,lipsum}
\def\marginsymbol{\protect\marginsymbolhelper}
\def\marginsymbolhelper{\tabto*{-1cm}\makebox[0cm]{$\bullet$}\tabto*{\TabPrevPos}}
\begin{document}
\section[My Header]{My Header\marginsymbol}
\subsection{My subsection Header\marginsymbol}
this is an inline \marginsymbol test. \lipsum[1]
\subsection{My subsubsection Header\marginsymbol}
\end{document}
跟进:
OP 询问是否也可以对目录进行此操作。这里有一种方法,但它没有解决我上面提到的章节页标题问题。因此,对于类article
,这不是直接问题,我提供了一个修订版本,其中包含\marginsymbol[<length>]
一个可选的长度参数,该参数仅在目录中作为添加的向左偏移量应用,以便处理目录子类别的交错条目。
\documentclass{article}
\usepackage{tabto}
\newcommand\marginsymbol[1][0pt]{%
\tabto*{0cm}\makebox[\dimexpr-1cm-#1\relax][r]{$\bullet$}\tabto*{\TabPrevPos}}
\begin{document}
\tableofcontents
\bigskip
\renewcommand\marginsymbol[1][0pt]{%
\tabto*{0cm}\makebox[-2cm][c]{$\bullet$}\tabto*{\TabPrevPos}}
\section{My Header\marginsymbol}
\subsection{My subsection Header\marginsymbol[23pt]}
\subsubsection{My subsubsection Header\marginsymbol[55pt]}
\section{My New Header\marginsymbol}
\end{document}