从边距宽度中排除行号

从边距宽度中排除行号

我使用 lineno 包在双面文档上添加行号。但是,我有一个限制,必须留出 2.5 厘米内边距和 4 厘米外边距。这必须是完全自由的空间。

但是 lineno 包的行号被添加到这两个边距中。

  1. 我能否以某种方式指定将行号添加到文档主体而不是页边距?
  2. 如果不是,我该如何设置文档的边距,以便有正确的空间容纳内容?

我曾经想过只将行号宽度添加到边距,但是由于行号始终位于偶数页和奇数页的左边距,因此我不得不为双面文档交替使用这个额外的边距。

这是一个简单的例子:

\documentclass[12pt,twoside,ngerman]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{verbose,
    tmargin=2.5cm,
    bmargin=2.5cm,
    lmargin=4cm,
    rmargin=2.5cm,
    nomarginpar,
    showframe}
\usepackage{fancyhdr}
\pagestyle{fancy}

\usepackage{lineno}
\usepackage{lipsum}

\renewcommand{\linenumberfont}{\footnotesize}

\begin{document}

\linenumbers
\lipsum

\end{document}

该截图说明了我的问题:

边距

橙色线显示 4cm / 2.5cm 走了多远,蓝色线显示它们实际上应该走多远。线号应该更靠右。

答案1

重新定义\makeLineNumber左边距并留出更多空间:

\documentclass[12pt,twoside,ngerman]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{verbose,
    tmargin=2.5cm,
    bmargin=2.5cm,
    lmargin=5cm,
    rmargin=2.5cm,
    nomarginpar,
    headheight=14.5pt,
    heightrounded,
    showframe}
\AtBeginDocument{\addtolength{\evensidemargin}{1cm}}
\usepackage{fancyhdr}
\pagestyle{fancy}

\usepackage{lineno}
\usepackage{lipsum}

\renewcommand{\makeLineNumber}{\llap{\linenumberfont\rlap{\LineNumber}\hspace{1cm}}}

\renewcommand{\linenumberfont}{\footnotesize}

\begin{document}

\linenumbers

\noindent% just to make a rule
\llap{\vrule height 1pt width 3.9cm\hskip1cm}%
\lipsum[1-6]

\noindent% just to make a rule
\llap{\vrule height 1pt width 2.4cm\hskip1cm}%
\lipsum[7]

\end{document}

这两个规则只相差 1 毫米,因此我们可以看到测量是准确的。我headheight还为 和添加了设置heightrounded;第一个是 所需的fancyhdr,第二个使文本高度包含整数行数。

第 1 页顶部

在此处输入图片描述

第 2 页顶部

在此处输入图片描述

答案2

但因为行号总是在偶数页和奇数页的左边距

该假设不成立。您可以使用包switch的选项lineno。请参阅双面文档中不同边距上的行号对于 MWE。

相关内容