每页都按行编号

每页都按行编号

编辑文档时,将一页上的所有行都编号(在左边距)很方便,这样审阅者可以在报告中参考它们。如何使用 LaTeX 实现这一点?

答案1

正如 Martin Scharrer 所指出的——也是对这个一般性问题的一劳永逸的回答——:使用lineno包裹。(包裹允许编号每一个行,如其文档中所示。)请参阅查看 TeX FAQ 以了解可能出现的陷阱和替代方案。

在 tex 文件中添加以下内容将导致出现行号(至少在使用 xelatex 的 scrbook 类中)

\usepackage{lineno}
\linenumbers

答案2

与 Lockstep 指出的常见问题解答略有不同的方法。

首先,我们需要建立一个 3em 宽的盒子来保存所有行号。这个盒子稍后会放置在左边距并拆开。

 \newsavebox{\@linebox}
 \savebox{\@linebox}[3em][t]{\parbox[t]{3em}{%
   \@tempcnta\@ne\relax
   \loop{\underline{\scriptsize\the\@tempcnta}}\\
     \advance\@tempcnta by \@ne\ifnum\@tempcnta<48\repeat}}

我们使用 Knuth 的循环来生成行号。我们可以使用\putLaTeXpicture环境中的 thr 命令来定位框并排版行号(尽管 TikZ 爱好者可以使用 TikZ)。由于我们在每个页面上都需要这个框,因此我们使用包fancyhdr来实现这一点,而不是弄乱输出例程。其他可能性是background包等。

\fancyhead[LO]{%
\begin{picture}(0,0)%
  \put(-18,-25){\usebox{\@linebox}}%
 \end{picture}}

您应该将整个代码放在条件中,以根据您的课程在草稿和最终模式之间切换。完整的极简代码如下所示。

\documentclass[10pt]{article}
\usepackage{fancyhdr,lipsum}
\makeatletter

 \newsavebox{\@linebox}
 \savebox{\@linebox}[3em][t]{\parbox[t]{3em}{%
   \@tempcnta\@ne\relax
   \loop{\underline{\scriptsize\the\@tempcnta}}\\
     \advance\@tempcnta by \@ne\ifnum\@tempcnta<48\repeat}}

 \pagestyle{fancy}
 \fancyhead{}
 \fancyfoot{}
 \fancyhead[CO]{\scriptsize How to Count Lines}
 \fancyhead[RO,LE]{\footnotesize\thepage}
%% insert this block within a conditional
 \fancyhead[LE]{\footnotesize\thepage\begin{picture}(0,0)%
      \put(-26,-25){\usebox{\@linebox}}%
      \end{picture}}

 \fancyhead[LO]{%
    \begin{picture}(0,0)%
      \put(-18,-25){\usebox{\@linebox}}%
     \end{picture}}
\fancyfoot[C]{\scriptsize Draft copy}
%% end conditional
\makeatother
\begin{document}
\section*{Lorem Ipsum}
\lipsum
\end{document}

相关内容