我尝试使用自定义命令,\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
并产生