我正在尝试使用 来实现段落编号memoir
。我希望数字为
- 在外边缘,
- 与文本块齐平,并且
- 与段落第一行垂直对齐。
结合我在 Stack Exchange 上找到的各种代码,我得到了
\documentclass[12pt]{memoir}
\pagestyle{empty}
\usepackage{lipsum}
\strictpagecheck
\newcounter{PN}
\marginparmargin{outer}
%% ATTEMPT A
\newcommand{\pnum}{\addtocounter{PN}{1}\marginpar{\mpjustification\arabic{PN}}}
%% ATTEMPT B
%\newcommand{\pnum}{\addtocounter{PN}{1}\hspace{0pt}\marginpar{\mpjustification\arabic{PN}}}
\begin{document}
\pnum\lipsum[\value{PN}]
\pnum\lipsum[\value{PN}]
\end{document}
尝试 A 和尝试 B 都很接近。但是 A 将数字放得太高,以至于它们位于前一段的最后一行和当前段落的第一行之间,而 B 将数字放得太低,以至于它们位于当前段落的第一行和第二行之间。
任何建议,将不胜感激。
编辑:我对回复的回复
Mike Renfro 和 Gonzalo Medina 的建议都很有帮助(我标记了他们)。在我的实际文档中,我更改了章节标题的样式,出于某种原因,这会导致段落编号在每章的第一页上移动。(如果我不应用自定义章节样式,这个问题就会消失。)我最终选择了 Mike 的答案,因为它没有这个问题。感谢你们俩(和 lockstep)。另外,我不知道这个\stepcounter
命令;这更优雅。
答案1
根据 Gonzalo 的答案,但使用memoir
内置的边注功能(参见memoir
手动的):
\documentclass[12pt]{memoir}
\pagestyle{empty}
\usepackage{lipsum}
\newcounter{PN}
\sideparmargin{outer}
\newcommand\pnum{%
\stepcounter{PN}\sidepar{\arabic{PN}}}
\begin{document}
\pnum\lipsum[\value{PN}]
\pnum\lipsum[\value{PN}]
\end{document}
答案2
也许\marginnote
使用marginnote
包裹?
\documentclass[12pt]{memoir}
\pagestyle{empty}
\usepackage{marginnote}
\usepackage{lipsum}
\strictpagecheck
\newcounter{PN}
\marginparmargin{outer}
\newcommand\pnum{%
\stepcounter{PN}\marginnote{\mpjustification\arabic{PN}}}
\begin{document}
\pnum\lipsum[\value{PN}]
\pnum\lipsum[\value{PN}]
\end{document}
如果你想要一些自动化的东西(在一定程度上),你可以使用\everypar
:
\documentclass[12pt]{memoir}
\usepackage{lipsum}
\newcounter{PN}
\marginparmargin{outer}
\reversemarginpar
\newcommand\countpar{%
\everypar{\stepcounter{PN}\marginpar{\arabic{PN}}}%
}
\newcommand\mcountpar{%
\stepcounter{PN}\marginpar{\arabic{PN}}%
}
\pagestyle{empty}
\begin{document}
\countpar
\lipsum[1-2]
\begin{enumerate}
\item \mbox{}\mcountpar\lipsum[2]
\end{enumerate}
\end{document}
\stepcounter{PN}
\refstepcounter{PN}
如果想交叉引用段落,可以改为(感谢步调一致指出这一点)。