![如何使用 lineno 包在模块化文档中切换打印行号的“开”和“关”模式?](https://linux22.com/image/312287/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20lineno%20%E5%8C%85%E5%9C%A8%E6%A8%A1%E5%9D%97%E5%8C%96%E6%96%87%E6%A1%A3%E4%B8%AD%E5%88%87%E6%8D%A2%E6%89%93%E5%8D%B0%E8%A1%8C%E5%8F%B7%E7%9A%84%E2%80%9C%E5%BC%80%E2%80%9D%E5%92%8C%E2%80%9C%E5%85%B3%E2%80%9D%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
背景:我正在使用模块化文档方法撰写论文。由于工作仍在进行中,我还使用包中的\linenumbers
&\nolinenumbers
命令在需要的地方打印行号lineno
。当然,我将这两个命令分布在各个章节的子级文档中。当工作准备好打印时,我想关闭行号打印;这意味着我必须从主文档以及所有子级文档(如果有)中删除/注释掉所有lineno
与 - 相关的命令、\usepackage{}
设置、修改的宏(如果有)等*.tex
。
通常,我会lineno
使用调用来引入包及其重新定义的宏\input{file}
。因此,关闭它们并不是什么大问题!我所要做的就是删除或注释掉这个调用。
然而,关闭遍布所有这些文档的\linenumbers
&\nolinenumbers
命令将会非常耗时。
问题:因此,我想通过重新定义\linenumbers
&\nolinenumbers
命令来简化此任务或者通过定义相应的新命令或者在序言中添加某种条件序列或者两者的组合,这样我就可以在\newcommand{wip}{...ON!...{\linenumbers}}
&之间切换\newcommand{wif}{...OFF!...{\linenumbers}}
,或者对这两个命令进行其他类似的安排。但是,我不知道该怎么做!我希望得到一些帮助。
以下是最小工作示例(MWE)及其输出(为简单起见,我提供了非模块化文档的 MWE)。
提前谢谢了!
梅威瑟:
\documentclass[11pt,a4paper]{report}
\usepackage[top=1in,bottom=1.5in,left=1.5in,right=1in]{geometry}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[babel=true]{microtype}
\usepackage{lipsum} % For sample text
\usepackage{xcolor}
%\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}
%{ %%% -- begin group!
\usepackage[left]{lineno}
\setlength\linenumbersep{12pt}
\renewcommand\linenumberfont{\normalfont\tiny\sffamily\color{lightgray}}
\modulolinenumbers[2]
%} %%% -- end group!
%\input{ifelsedraft} % Actually, for the above group a \input{file} call is used!
% Makes commenting-out "lineno" easy!
\setlength{\parindent}{20pt}
\setlength{\parskip}{\baselineskip}
\linenumbers % print line numbers!
\pagestyle{empty}
\begin{document}
\lipsum[1-2]
\vspace*{20pt}
\nolinenumbers % DO NOT print line numbers!
\lipsum[3-4]
\vspace*{20pt}
\linenumbers % Print line numbers!
\lipsum[5-6]
\vspace*{20pt}
\nolinenumbers % DO NOT print line numbers!
\lipsum[7-8]
\vspace*{20pt}
\linenumbers % Print line numbers!
\lipsum[9-10]
\end{document}
输出:
答案1
添加\let\linenumbers\nolinenumbers\nolinenumbers
为序言的最后一行可禁用\linenumbers
(通过将其指向\nolinenumbers
),然后将默认模式设置为\nolinenumbers
。这将允许保留\linenumbers
所有(子)文档中的所有调用……但它们将被忽略。
\documentclass[11pt,a4paper]{report}
\usepackage[top=1in,bottom=1.5in,left=1.5in,right=1in]{geometry}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[babel=true]{microtype}
\usepackage{lipsum} % For sample text
\usepackage{xcolor}
%\usepackage[dvipsnames,svgnames,x11names,table]{xcolor}
%{ %%% -- begin group!
\usepackage[left]{lineno}
\setlength\linenumbersep{12pt}
\renewcommand\linenumberfont{\normalfont\tiny\sffamily\color{lightgray}}
\modulolinenumbers[2]
%} %%% -- end group!
%\input{ifelsedraft} % Actually, for the above group a \input{file} call is used!
% Makes commenting-out "lineno" easy!
\setlength{\parindent}{20pt}
\setlength{\parskip}{\baselineskip}
\linenumbers % print line numbers!
\pagestyle{empty}
\let\linenumbers\nolinenumbers\nolinenumbers
\begin{document}
\lipsum[1-2]
\vspace*{20pt}
\nolinenumbers % DO NOT print line numbers!
\lipsum[3-4]
\vspace*{20pt}
\linenumbers % Print line numbers!
\lipsum[5-6]
\vspace*{20pt}
\nolinenumbers % DO NOT print line numbers!
\lipsum[7-8]
\vspace*{20pt}
\linenumbers % Print line numbers!
\lipsum[9-10]
\end{document}