段落编号(段落的 lineno)

段落编号(段落的 lineno)

如何为段落添加边距编号?奇数页和偶数页应该交替(左页和右页)。因此基本上就像lineo使用切换选项一样,但针对的是段落而不是行。

答案1

更短更原始

\documentclass[twoside]{article}
\usepackage{lipsum}
\newcounter{mypara}
\setcounter{mypara}{0}

\begin{document}
  \everypar{\refstepcounter{mypara}
  \ifodd\value{page}
  \marginpar{\themypara}
  \else
  \marginpar{\makebox[\marginparwidth][r]{\themypara}}
  \fi}%
  \lipsum[1-100]
\end{document}

在此处输入图片描述

答案2

这利用了\everypar(利用大卫的回答为什么 \everypar 不起作用?) 使“某事”在每个段落发生。在这种情况下,发生的“某事”是\tabto移到页边距,其中放置了段落编号,然后返回到原始位置。我使用钩子everypage在每一页上切换页边距位置。

我将其全部包裹在一个enumpars环境中,以便您可以随意打开和关闭它。

\documentclass{article}
\usepackage{lipsum,tabto,everypage}
\def\TabMargLeft{-.5in}
\def\TabMargRight{\dimexpr\textwidth+.5in\relax}
\def\TabMargPos{\TabMargRight}
\AddEverypageHook{\ifdim\TabMargPos=\TabMargLeft\relax%
  \gdef\TabMargPos{\TabMargRight}\else%
  \gdef\TabMargPos{\TabMargLeft}\fi}
\newcounter{parcount}
\let\oldep\everypar%
\newenvironment{enumpars}
{\newtoks\everypar%
\setcounter{parcount}{0}%
\oldep{\the\everypar\stepcounter{parcount}%
  \tabto*{\TabMargPos}\makebox[0pt]{(\theparcount)}\tabto*{\TabPrevPos}}%
\par}{\global\let\everypar\oldep\par}
\begin{document}
\begin{enumpars}
\lipsum[1-5]
\end{enumpars}
\lipsum[6-8]
\begin{enumpars}
\lipsum[9-14]
\end{enumpars}
\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容