编辑文档时,将一页上的所有行都编号(在左边距)很方便,这样审阅者可以在报告中参考它们。如何使用 LaTeX 实现这一点?
答案1
答案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 的循环来生成行号。我们可以使用\put
LaTeXpicture
环境中的 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}