这个问题之前被问过其中接受的答案修补了相关的 LaTeX 宏。这个接受的答案对我不起作用 - 代码没有效果。无论如何,lineno
文档明确指出
您通常不会明确关闭行号,而是将行号限制在组或环境中。(第 3 页)
那么,这是否告诉我有一种比黑客攻击更简单的方法(如链接答案中所述)\section
并且\xsect
不需要不断地编写\begin{linenumbers} ... \end{linenumbers}
环境?
如果我必须使用链接的答案,(1)有人可以检查代码是否正确吗?(2),你怎样才能排除枚举列表?
另外 - 就我所知:链接的接受答案mtoolbox
用于patchcmd
宏。这不能用\renewcommand
例如实现\renewcommand*{\section}{\nolinenumbers\section\linenumbers}
吗?
编辑:
- 我怎样才能针对逐项环境、枚举列表和块引用实现这一点?
答案1
您没有举例说明为什么您链接的已接受答案对您不起作用。根据我的经验,原因可能是:
- 您没有使用标准类等
article
。book
您的类中可能没有补丁\@startsection
,或者\@xsect
补丁不起作用。 \section
、等的样式\subsection
已被 等包修改titlesec
。
快速说明:该命令
\section
比您想象的更复杂:它检测它是否有星号跟随,并且通常还有一个可选参数,用于分配短标题来替换超链接中的实际标题,然后它读取主要参数,IE您的章节标题。因此,您不能指望一些简单的事情能够\renewcommand*{\section}{\nolinenumbers\section\linenumbers}
起作用。
在我自己的包或课程中,我通常有以下内容:
\newif\ifLNturnsON
\def\LocallyStopLineNumbers{\LNturnsONfalse%
\ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
\LocallyStopLineNumbers
和比和\ResumeLineNumbers
更好,因为它们检测行号是否已打开,因此如果用户在 时尚未启用行号,则在禁用行号后将不会启用它。\nolinenumbers
\linenumbers
\ResumeLineNumbers
\LocallyStopLineNumbers
现在来看看解决方案,无论哪种方式,您都可以使用titlesec
并添加\LocallyStopLineNumbers
到格式的开头和[\LocallyStopLineNumbers]
结尾。在下面的示例中,我包含了一组模仿默认样式的完整格式(代码是从文档中复制的titlesec
,“8.2. 标准类“)。当然你也可以用类似的方法修改自己的风格。
\documentclass{article}
\usepackage{lineno}
\usepackage{lipsum}
\usepackage{titlesec}
\newif\ifLNturnsON
\def\LocallyStopLineNumbers{\LNturnsONfalse%
\ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
\makeatletter
\titleformat{\chapter}[display]
{\LocallyStopLineNumbers\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}[\ResumeLineNumbers]
\titleformat{\section}
{\LocallyStopLineNumbers\normalfont\Large\bfseries}{\thesection}{1em}{}[\ResumeLineNumbers]
\titleformat{\subsection}
{\LocallyStopLineNumbers\normalfont\large\bfseries}{\thesubsection}{1em}{}[\ResumeLineNumbers]
\titleformat{\subsubsection}
{\LocallyStopLineNumbers\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}[\ResumeLineNumbers]
\titleformat{\paragraph}[runin]
{\LocallyStopLineNumbers\normalfont\normalsize\bfseries}{\theparagraph}{1em}{}[\ResumeLineNumbers]
\titleformat{\subparagraph}[runin]
{\LocallyStopLineNumbers\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{}[\ResumeLineNumbers]
\titlespacing*{\chapter} {0pt}{50pt}{40pt}
\titlespacing*{\section} {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\titlespacing*{\subsection} {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titlespacing*{\subsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titlespacing*{\paragraph} {0pt}{3.25ex plus 1ex minus .2ex}{1em}
\titlespacing*{\subparagraph} {\parindent}{3.25ex plus 1ex minus .2ex}{1em}
\makeatother
\linenumbers
\begin{document}
\section{A section} \lipsum[2]
\subsection{Another section} \lipsum[2]
\subsubsection{Final section} \lipsum[2]
\end{document}