当段落开始于一页时不显示段落编号

当段落开始于一页时不显示段落编号

我已经将此代码按段落编号以便于参考,但如果一个段落 ”正常启动“在新页面中,段落编号超出了页面范围。如果之前已发出\clearpage或,则编号可以正常工作。\linebreak

请注意,第 7 段未显示在边距上,而其他段落均正常:

\documentclass[a4paper,12pt,twoside]{report} 
\usepackage[width=159.2mm,top=25.4mm,bottom=25.4mm]{geometry} 
%I'm using width to make room for the binding of the thesis and still keeping the 25.4mm for the side margins
\usepackage{lipsum}

% % Set Numbering to Paragraphs % %
%\reversemarginpar %Use this to keep \marginpar in left margin
\newcounter{parnum}
\newcommand{\n}{%
\leavevmode\refstepcounter{parnum}%
\ifodd\value{page} %For twosided pages until \fi
     \marginpar{\makebox[\marginparwidth][l]{\scriptsize{\textsection\theparnum}}}
\else
     \marginpar{\makebox[\marginparwidth][r]{\scriptsize{\textsection\theparnum}}}
\fi}

\begin{document}
\n\lipsum[1]
\n\lipsum[2]
\n\lipsum[3]
\n\lipsum[4]
\n\lipsum[5]
\n\lipsum[6]
\n\lipsum[7]
\n\lipsum[8]
\n\lipsum[9]
\n\lipsum[10]
\end{document}

这是 bug 吗,还是我做错了什么?感谢您的帮助和关注!

答案1

在您的布局中,边距注释比外边距更宽。首先,如果您制作了自定义边距,请尝试使用\marginparwidth\marginparsep长度来在这些边距中找到适合您注释的布局(该软件包layout可以在此测试步骤中提供很大帮助)。

另一方面,\ifodd\value这里是无用的,因为\marginpar已经考虑到了twoside报告中的奇数/偶数页。此外,这种方式注意§7不是按\else ...宏的一部分打印,而是按第一部分打印(即,当评估时,\lipsum[7]仍然在第一页),因此是左对齐的,但由于 \marginparwidth太长,计数器会打印在纸上。

因此,您的宏可以简化为没有条件的宏,并且只有一个\marginpar而没有任何\makebox内部条件,即使奇数页和偶数页的注释不一样,如下例所示:

喵喵

\documentclass[a4paper,12pt,twoside]{report} 
\usepackage[width=159.2mm,top=25.4mm,bottom=25.4mm]{geometry} 
\usepackage{lipsum}
\marginparwidth=30pt\marginparsep=20pt
\newcounter{parnum}
\newcommand{\n}{\refstepcounter{parnum}\leavevmode%
\marginpar[\theparnum\S\hfill]{\hfill\S\theparnum}}
\begin{document}
\n\lipsum[1]
\n\lipsum[2]
\n\lipsum[3]
\n\lipsum[4]
\n\lipsum[5]
\n\lipsum[6]
\n\lipsum[7]
\n\lipsum[8]
\n\lipsum[9]
\n\lipsum[10]
\end{document}

相关内容