内部行号在最后一个未结束段落之前结束

内部行号在最后一个未结束段落之前结束

我目前正在做一个项目,希望在表格环境中的文本中显示行号。Lineo 提供了执行\internallinenumbers此任务的命令。据我所知,lineo 的正常行为应该是等待段落分成行,然后添加行号。该\internallinenumbers命令似乎没有完全遵循此例程,因为它在当前页的最后一段后停止行号,并在下一页的空白处设置剩余的行号。以下最小示例可用于重现此行为:

\documentclass[11pt]{article}
\usepackage{blindtext}

\usepackage{lineno}

\begin{document}

\begin{bframe}
\internallinenumbers

\Blindtext

\end{bframe}

\end{document}  

最小示例的渲染输出

有谁知道如何解决这一问题?

答案1

\internallinenumbers与环境的交互bframe不仅会搞乱分页符之间的行号(如 OP 所示),而且还会破坏由 提供的框架bframe

我没有尝试修复\internallinenumbers与的交互bframe,而是从头开始,修改了包\makeLineNumber的宏lineno,将垂直条搭接在文本行的左侧和右侧(条的厚度为)2\fboxrule

然后我创建了FrameLineNo环境,它开始一个新段落,在页面上放置适当大小和位置的水平线,重置行号并开始一个linenumbers环境(使用上面描述的修改\makeLineNumber)。从中出来后FrameLineNo,我结束linenumbers环境,在页面上放置适当大小和位置的水平线,然后结束段落。

在 MWE 中,我展示了FrameLineNo环境如何正确设置分页符之间的行号,保留环境周围的盒装框架,以及如何通过用户参数控制框的水平偏移量\framesep以及框的厚度2\fboxrule

\documentclass[11pt]{article}
\usepackage{blindtext,lipsum}
\usepackage{lineno}
\let\svmakeLineNumber\makeLineNumber
\newenvironment{FrameLineNo}
  {\def\makeLineNumber{\boxit\svmakeLineNumber}%
  \setcounter{linenumber}{1}\par\noindent\Xline[-\dp\strutbox]\begin{linenumbers}}
  {\end{linenumbers}\leavevmode\Xline[\dimexpr\ht\strutbox-2\fboxrule\relax]\par}
\def\boxit{\fboxsep=0pt\relax\llap{\fbox{\strut}\kern\framesep}%
  \hspace{\textwidth}\rlap{\kern\framesep\fbox{\strut}}}
\newcommand\Xline[1][0pt]{%
  \llap{\rule[#1]{\dimexpr\framesep+2\fboxrule\relax}{2\fboxrule}}%
  \rule[#1]{\textwidth}{2\fboxrule}%
  \rlap{\rule[#1]{\dimexpr\framesep+2\fboxrule\relax}{2\fboxrule}}\par
}
\def\framesep{.7ex}
\begin{document}
\begin{FrameLineNo}
\Blindtext
\end{FrameLineNo}
\lipsum[3-4]
\def\framesep{.5ex}
\fboxrule=1.5pt
\begin{FrameLineNo}
\lipsum[1]
\end{FrameLineNo}
\end{document}  

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

相关内容