如何在同一文档中两次使用 lineno 的 linenumbers 机制

如何在同一文档中两次使用 lineno 的 linenumbers 机制

我正在使用 Gareth Walker 的软件包convtran用于排版对话分析示例。

该包利用了行号机制来lineno对示例中的行进行编号。一切都很好。但现在我遇到了一个问题,因为cls我提交的期刊中的日志文件也利用了lineno行号(在我的情况下是MDPI LaTeX 课程),这显然与示例中的行号设置方式相冲突(见图)。

在此处输入图片描述

这是 MWE(需要convtran):

\documentclass{report}    
\usepackage{convtran}
\usepackage{lipsum}

\begin{document}
\linenumbers
\lipsum[4]

\begin{convtran}
    \turn{A:} Hello 
    \turn{B:} Hello 
\end{convtran}

\lipsum[4]
\end{document}

有没有什么方法可以修改使用行号机制的方式convtran,使其不干扰通过cls文件完成的行号?

编辑:
本质上,我希望页边空白处有完整的行号,但仍然能够使用convtran特定的行号作为成绩单(每个行号从 1 开始,而不会干扰页边空白处的行号)。我希望实现的效果如下:

在此处输入图片描述

答案1

概念验证尝试。关键是重新定义,\makeLineNumber以便它两次排版行号。当前的重新定义对于如何使用和/或配置来说非常convtran脆弱lineno

\documentclass{report}
\usepackage{convtran}
\usepackage{lipsum}
\usepackage{xpatch} % for \xpatchcmd

% restore \linenumbersep changed by convtran
\setlength{\linenumbersep}{10pt}
\newcounter{convtran@start}

\makeatletter

\xpatchcmd\convtran
  {\linenumbers*}
  {%
    \ifLineNumbers
      \convtran@setMakeLineNumber
    \else
      \linenumbers*
      \convtran@restoreMakeLineNumber
    \fi
  }
  {}{\PatchFailed}

% 
\newcommand\convtran@setMakeLineNumber{%
  \let\makeLineNumber@orig=\makeLineNumber
  \setcounter{convtran@start}{\value{linenumber}}%
  \renewcommand\makeLineNumber{%
    \begingroup
      \setlinenoplace{-0.75cm}%
      \c@linenumber=\numexpr\c@linenumber-\c@convtran@start+1\relax
      \hbox to 0pt{\makeLineNumber@orig}% line number for convtran
    \endgroup
    \makeLineNumber@orig % normal line number
  }%
}

\newcommand\convtran@restoreMakeLineNumber{%
  \setlinenoplace{-0.75cm}%
}
\makeatother

\begin{document}

\newcommand\test{%
  \lipsum[4][1-4]
  
  \begin{convtran}
    \turn{A:} Hello 
    \turn{B:} Hello
  \end{convtran}
  
  \lipsum[4][1-4]
  \rule{\textwidth}{.4pt}\bigskip
}

\linenumbers
\test

\nolinenumbers
\test

\linenumbers[20]
\test

\end{document}

在此处输入图片描述

答案2

上述的convtran.sty标签\linenumbersep控制着行号的间距,您可以随意修改,修改后的MWE值为:

\documentclass{report}    
\usepackage{convtran}
\usepackage{lipsum}

\begin{document}
\setlength\linenumbersep{20pt}
\linenumbers
\lipsum[4]

\begin{convtran}
    \turn{A:} Hello 
    \turn{B:} Hello 
\end{convtran}

\lipsum[4]
\end{document}

相关内容