将 `\marginpar` 与章节标题对齐

将 `\marginpar` 与章节标题对齐

我尝试使用自定义命令,\marginpar在 内使用\section。根据另一个SE帖子,我必须\protect这样做。但在我的自定义包中反复试验后,如果我包含,它就会崩溃hyperref。有没有什么解决办法?

\documentclass{article}

%\usepackage{hyperref}

\newcounter{clecturesep}
\newcommand*{\lecturesep}[1]{%
    \stepcounter{clecturesep}%
    \marginpar{\small%
        Lect.~\theclecturesep{}\\
        {#1}
    }%
}

\begin{document}

\lecturesep{11.07.23} % Works as expected

% Only works if we comment out hyperref
\section{Heeeeeeeeeeeeeaaaaaaaaaaaadeeeeeeeeeeeeer\protect\lecturesep{11.07.23}}

\end{document}

答案1

我建议将你的\lecturesep部分作为章节标题的格式,而不是章节标题的一部分,以避免Ulrike 指出的问题

一种选择是使用titlesec

\documentclass{article}

\usepackage{titlesec}
\usepackage{hyperref}

\newcounter{clecturesep}
\newcommand*{\lecturesep}[1]{%
    \stepcounter{clecturesep}%
    \marginpar{\small%
        Lect.~\theclecturesep{}\\
        {#1}
    }%
}
\titleformat{\section}{\normalfont\Large\bfseries}{\thesection}{1em}{\showlecturedate\gdef\showlecturedate{}}
\titlespacing*{\section} {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\newcommand\showlecturedate{}
\newcommand\datedsection[1]{\def\showlecturedate{\lecturesep{#1}}\section}


\begin{document}

\tableofcontents

\vspace{10pt}

\datedsection{11.07.23}[short title]{long title}

\datedsection{11.08.23}{long title titletitletitle titletitle  title}

\section[another]{longer title titletitletitletitle titletitle}

\datedsection{11.09.23}*{a title}

\end{document}

得出

在此处输入图片描述

如果您想避免titlesec,可以使用article您可以定义的类

\documentclass{article}

\usepackage{hyperref}

\newcounter{clecturesep}
\newcommand*{\lecturesep}[1]{%
    \stepcounter{clecturesep}%
    \marginpar{\small%
        Lect.~\theclecturesep{}\\
        {#1}
    }%
}
\makeatletter
\newcommand\datedsection[1]{\@startsection {section}{1}{\z@}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2.3ex \@plus.2ex}%
                           {\normalfont\Large\bfseries\lecturesep{#1}}}
\makeatother

\begin{document}

\tableofcontents

\vspace{10pt}

\datedsection{11.07.23}[short title]{long title}

\datedsection{11.08.23}{long title titletitletitle titletitle  title}

\section[another]{longer title titletitletitletitle titletitle}

\section{longer title}

\datedsection{11.09.23}*{another section}

\end{document}

也可以很好地构建hyperref并产生

在此处输入图片描述

相关内容