为什么 `parskip` 包会导致边注错位?

为什么 `parskip` 包会导致边注错位?

我必须合并两个很长的文件,其中一个文件正在使用软件包marginnote,另一个文件需要软件包parskip。如果我同时使用它们,那么我在页边空白处标记年份的命令(\years例如)将无法正常工作。

下面我展示一个代码作为示例。

\documentclass{article} 
\usepackage{marginnote,parskip}
\reversemarginpar
\newcommand{\years}[1]{\marginnote{#1}}
\newcommand{\degree}[5][in]{\years{#2}\textsc{#3} #1 \emph{#4}, \textsc{#5}\\}
\begin{document}

\section*{Degrees}
\degree[on]{2017--2018}{Postdoctoral Research}{Computational Mathematics}{Somewhere}
\degree{2011--2017}{PhD}{Computational Commutative Algebra}{Somewhere}
\degree{1999--2002}{M.Sc.}{General Topology}{Somewhere}
\degree{1995--1999}{B.Sc.}{Pure Mathematics w/ minor in physics}{Somewhere}


\end{document}

你可以比较一下上面代码的结果和下面代码的结果:

\documentclass{article} 
\usepackage{marginnote}
\reversemarginpar
\newcommand{\years}[1]{\marginnote{#1}}
\newcommand{\degree}[5][in]{\years{#2}\textsc{#3} #1 \emph{#4}, \textsc{#5}\\}
\begin{document}

\section*{Degrees}
\degree[on]{2017--2018}{Postdoctoral Research}{Computational Mathematics}{Somewhere}
\degree{2011--2017}{PhD}{Computational Commutative Algebra}{Somewhere}
\degree{1999--2002}{M.Sc.}{General Topology}{Somewhere}
\degree{1995--1999}{B.Sc.}{Pure Mathematics w/ minor in physics}{Somewhere}


\end{document}

有人可以帮忙吗?

答案1

在您的示例中,您缺少 \degree 命令的一个参数:它有 5 个强制参数,但只给出了 4 个。

\marginnote除此之外,当段落尚未开始时,通常最好不要在垂直模式下发出。将命令移到第一个单词后面,或者使用例如\leavevmode。我也会\degree\par而不是来结束\\

\documentclass{article}
\usepackage{marginnote,parskip}
\reversemarginpar
\newcommand{\years}[1]{\marginnote{#1}}
\newcommand{\degree}[6][in]{\leavevmode\years{#2}\textsc{#3} #1 \emph{#4}, #5, \textsc{#6}\par}
\begin{document}

\section*{Degrees}

\degree[on]{2017--2018}{Postdoctoral Research}{Computational Mathematics}{Somewhere}{}
\degree{2011--2017}{PhD}{Computational Commutative Algebra}{Somewhere}{}
\degree{1999--2002}{M.Sc.}{General Topology}{Somewhere}{}
\degree{1995--1999}{B.Sc.}{Pure Mathematics w/ minor in physics}{Somewhere}{}


\end{document}

在此处输入图片描述

相关内容