我正在使用以下代码:
\documentclass[11pt]{amsart}
\setlength{\textheight}{23cm}
\setlength{\textwidth}{16cm}
\setlength{\topmargin}{-0.8cm}
\setlength{\parskip}{0.3\baselineskip}
\hoffset=-1.4cm
\usepackage{amsmath,amscd,amssymb}
\usepackage{hyperref}
\usepackage[running, pagewise]{lineno}
\linenumbers
\newtheorem{theorem}{Theorem}[section]
\newtheorem{conjecture}[subsection]{Conjecture}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{remark}[theorem]{Remark}
\numberwithin{equation}{section}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{example}[theorem]{Example}
\newtheorem{corollary}[theorem]{Corollary}
\renewcommand{\thefootnote}{\arabic{footnote}}
\input xy
\xyoption{all}
\begin{document}
la la la \\
\begin{theorem}
If this is true, then that is true.\
\end{theorem}
\begin{proof}
It's always true
\end{proof}
la la la
\end{document}
在 \begin{document} 之前,使用 lineno 包的输出是离散的。我想要所有行(包括段落之间的间隙)的行号(在左侧)。如果有办法解决这个问题,请告诉我。
我希望第 2、3 行和第 3、4 行和第 4、5 行之间以及第 5 行之后没有内容的每一行之间都有行号。有没有办法让它密集编号?这是期刊排版格式。由于论文很长,在我的代码或其他代码框架中使用类似于期刊样式的行号会很有用(不会妨碍编译)
答案1
以我在问题下的评论为例:计算机协会对正在审查的论文使用连续行号。这些行号与论文中的实际行无关,因此可能在垂直方向上错位。
在下面的代码中,我将 的相关部分添加acmart.cls
到问题的示例文档中。基本上,通过反复添加下一个数字直到框达到 ,可以构建一个带有行号的框\textheight
。然后使用 将此框添加到页面的左上角。通过使用 在标题规范中\put
添加命令,对每个页面重复此操作。\put
\fancyhdr
梅威瑟:
\documentclass[11pt]{amsart}
\usepackage{xcolor}
\setlength{\textheight}{23cm}
\setlength{\textwidth}{16cm}
\setlength{\topmargin}{-0.8cm}
\setlength{\parskip}{0.3\baselineskip}
\hoffset=-1.4cm
\usepackage{amsmath,amscd,amssymb}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{conjecture}[subsection]{Conjecture}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{remark}[theorem]{Remark}
\numberwithin{equation}{section}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{example}[theorem]{Example}
\newtheorem{corollary}[theorem]{Corollary}
\renewcommand{\thefootnote}{\arabic{footnote}}
\input xy
\xyoption{all}
\usepackage{fancyhdr}
\makeatletter
% the code below is modified from acmart.cls
% source: https://ctan.org/pkg/acmart
% licensed under LPPL 1.3
\newsavebox{\ACM@linecount@bx}
\newlength\ACM@linecount@bxht
\newcount\ACM@linecount
\ACM@linecount\@ne\relax
\def\ACM@mk@linecount{%
\savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
\normalsize
\setlength{\ACM@linecount@bxht}{0pt}%
\loop{\color{red}\scriptsize\the\ACM@linecount}\\
\global\advance\ACM@linecount by \@ne
\addtolength{\ACM@linecount@bxht}{\baselineskip}%
\ifdim\ACM@linecount@bxht<\textheight\repeat
{\color{red}\scriptsize\the\ACM@linecount}\hfill
\global\advance\ACM@linecount by \@ne}}}
\def\ACM@linecountL{%
\ACM@mk@linecount
\begin{picture}(0,0)%
\put(-26,-18){\usebox{\ACM@linecount@bx}}%
\end{picture}%
}
\pagestyle{fancy}
\fancyhead[L]{\ACM@linecountL}
% end of code modified from acmart.cls
\renewcommand{\headrulewidth}{0pt}
\fancypagestyle{plain}{}
\makeatother
\begin{document}
la la la \\
\begin{theorem}
If this is true, then that is true.\
\end{theorem}
\begin{proof}
It's always true
\end{proof}
la la la
\end{document}
结果:
有多种参数可供修改。
- 在第一行之前开始数字:调整
\put(x,y)
。在下面的代码中,\put(-26,-10)
将数字 1 放在第一行上方。 - 数字范围:由盒子的总高度决定。代码不使用实际高度,而是通过长度变量模拟,该变量在盒子开始时
\ACM@linecount@bxht
初始化为,并在每增加一个数字后增加。通过减少模拟的增加,您可以在盒子达到之前容纳更多数字。反复试验可得出数字 1-60。0pt
\baselineskip
\textheight
0.855\baselineskip
- 数字之间的距离:可以通过在每个数字后添加换行符的长度来设置
\\
。反复试验后,我们终于\\[-1.5pt]
将数字 60 放在了页面底部附近。 - 重置每页的数字:这可以通过将数字计数器初始化放在
\ACM@linecount\@ne\relax
为每个页眉调用的宏内来完成(\ACM@mk@linecount
,mk
表示“make”)。 - 第一页的行号:这些数字由页眉生成。仅当
\pagestyle{fancy}
有效时才显示此页眉。许多文档类\pagestyle{plain}
为第一页和/或整个文档设置。您可以重新定义plain
使用fancy
定义(即打印页眉并因此打印行号)\fancypagestyle{plain}{}
(注意:这已包含在上面第一个版本的答案中)。文档类还可能将页面样式设置为,empty
在这种情况下您应该相应地修改页眉设置。
修改后的代码:
\documentclass[11pt]{amsart}
\usepackage{xcolor}
\setlength{\textheight}{23cm}
\setlength{\textwidth}{16cm}
\setlength{\topmargin}{-0.8cm}
\setlength{\parskip}{0.3\baselineskip}
\hoffset=-1.4cm
\usepackage{amsmath,amscd,amssymb}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{conjecture}[subsection]{Conjecture}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{remark}[theorem]{Remark}
\numberwithin{equation}{section}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{example}[theorem]{Example}
\newtheorem{corollary}[theorem]{Corollary}
\renewcommand{\thefootnote}{\arabic{footnote}}
\input xy
\xyoption{all}
\usepackage{fancyhdr}
\usepackage{lipsum}
\makeatletter
% the code below is modified from acmart.cls
% source: https://ctan.org/pkg/acmart
% licensed under LPPL 1.3
\newsavebox{\ACM@linecount@bx}
\newlength\ACM@linecount@bxht
\newcount\ACM@linecount
%\ACM@linecount\@ne\relax
\def\ACM@mk@linecount{%
\ACM@linecount\@ne\relax % reset counter each page
\savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
\normalsize
\setlength{\ACM@linecount@bxht}{0pt}%
\loop{\color{red}\scriptsize\the\ACM@linecount}\\[-1.5pt] % vertical distance between numbers
\global\advance\ACM@linecount by \@ne
\addtolength{\ACM@linecount@bxht}{0.855\baselineskip}% reduce similated box height increase
\ifdim\ACM@linecount@bxht<\textheight\repeat
{\color{red}\scriptsize\the\ACM@linecount}\hfill
\global\advance\ACM@linecount by \@ne}}}
\def\ACM@linecountL{%
\ACM@mk@linecount
\begin{picture}(0,0)%
\put(-26,-10){\usebox{\ACM@linecount@bx}}% x,y coordinates of line number 1
\end{picture}%
}
\pagestyle{fancy}
\fancyhead[L]{\ACM@linecountL}
% end of code modified from acmart.cls
\renewcommand{\headrulewidth}{0pt}
\fancypagestyle{plain}{} % add numbers to plain pages (e.g., first page)
\makeatother
\begin{document}
la la la \\
\begin{theorem}
If this is true, then that is true.\
\end{theorem}
\begin{proof}
It's always true
\end{proof}
la la la
\lipsum[1-8]
\end{document}
结果(第 1 页结束,第 2 页开始):