我正在使用 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}