将符号置于边缘

将符号置于边缘

我在用

\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}

在此处输入图片描述

相关内容