我使用在这个网站上找到的自定义命令和环境来对段落进行编号。我已按自己喜欢的方式设置了文档,但数字后的间距除外。
我希望从数字到段落开头的间距对于单位数和两位数的段落编号都相等。
目前,两位数段落的段落开头比一位数段落的段落开头稍微靠右一些。
我怎样才能均匀地将它们分开,以便每个段落从边距开始距离相等,同时像本例中那样在数字和段落之间保持一定的空间?
\documentclass{article}
\usepackage{lipsum}
\setlength\parindent{0cm}
\newcommand{\pn}{\bfseries\arabic{pc}}
\newcounter{pc}
\newenvironment{pns}{
\par
\everypar{\noindent\stepcounter{pc}\leavevmode\textsuperscript{\pn\hspace{1.5em}}}
\setcounter{pc}{0}
}{}
\begin{document}
\begin{pns}
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
this is a paragraph
\end{pns}
\end{document}
这是现在的样子:
答案1
编辑后注释:
这个答案现在证明
- 如何使用数字测试来对齐段落编号
\hphantom
; - 下一部分(第一次编辑)修剪代码并演示其在较长文本中的应用;
- 最后,它展示了一种略有不同的方法,使用类将注释放在双列布局的外部边缘
memoir
。
pc
您所要做的就是使用测试值\ifnum
;如果它小于 10,则使用 留下一个额外的空格\hphantom{0}
;否则,不执行任何操作(\relax
);然后打印计数器的值pc
。
当然,您可以在数字的两侧添加幻像空格。
\newcommand{\pn}{%
\bfseries%
\ifnum\value{pc} < 10 \hphantom{0}%
\else\relax\fi%
\thepc%
}
编辑
这是使用虚拟文本的精简版本。我可能错了,但我认为您不需要环境中的所有代码pns
,至少没有它我看不出有什么区别。如果这是针对整个文档的,您可能会使用AtBeginDocument
,所以您甚至不需要该环境。
我注意到 LaTeX 将\quad
跳过定义为\hskip 1em\relax
,因此我\hspace
用基于此的命令替换了您的命令。
\documentclass{article}
\usepackage{lipsum}
\setlength\parindent{0cm}
\newcounter{pc}
\newcommand{\pn}{%
\textbf{\thepc}%
\ifnum\value{pc} < 10 \hphantom{0}%
\else\relax\fi%
\hskip 1.5em\relax%
}
\newenvironment{pns}{%
\everypar{\noindent\stepcounter{pc}\pn}%
}{}
\begin{document}
\begin{pns}
\lipsum[1-15]
\end{pns}
\end{document}
编辑2
您可以使用该类将数字放在两列布局的外部边距中memoir
。
\documentclass[twocolumn]{memoir}
\usepackage{lipsum}
\setlrmarginsandblock{1.5in}{1in}{*}
\setmarginnotes{1.5em}{4em}{\onelineskip}
\marginparmargin{inner}
\setmpjustification{\raggedleft}{\raggedright}
\checkandfixthelayout
\newcounter{pc}
\newcommand{\pn}{%
\marginpar{\mpjustification\textbf{\thepc}}%
}
\newenvironment{pns}{%
\everypar{\noindent\stepcounter{pc}\pn}%
}{}
\begin{document}
\begin{pns}
\lipsum[1-15]
\end{pns}
\end{document}