我已经将此代码按段落编号以便于参考,但如果一个段落 ”正常启动“在新页面中,段落编号超出了页面范围。如果之前已发出\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}