如何在抽象环境中添加行号(使用 Lineno),如 Overleaf 模板中定义的那样

如何在抽象环境中添加行号(使用 Lineno),如 Overleaf 模板中定义的那样

问题:

如何在抽象环境中添加行号(使用 lineno),如本定义所述Overleaf 模板

下面这段代码是抽象定义,包含在wlscirep.cls文件:

\def\xabstract{abstract}
\long\def\abstract#1\end#2{\def\two{#2}\ifx\two\xabstract 
\long\gdef\theabstract{\ignorespaces#1}
\def\go{\end{abstract}}\else
\typeout{^^J^^J PLEASE DO NOT USE ANY \string\begin\space \string\end^^J
COMMANDS WITHIN ABSTRACT^^J^^J}#1\end{#2}
\gdef\theabstract{\vskip12pt BADLY FORMED ABSTRACT: PLEASE DO
NOT USE {\tt\string\begin...\string\end} COMMANDS WITHIN
THE ABSTRACT\vskip12pt}\let\go\relax\fi
\go}

我的尝试:

在里面主文本文件我添加了以下代码:

\documentclass[fleqn,10pt]{wlscirep}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[displaymath]{lineno}
\linenumbers

\makeatletter
\let\LN@abstract\abstract
\let\LN@endabstract\endabstract
\renewcommand{\abstract}{\linenomath\LN@abstract}
\renewcommand{\endabstract}{\LN@endabstract\endlinenomath}
\makeatother



\begin{abstract}
bla bla bla bla bla bla bla bla bla bla ....
bla bla bla bla bla bla bla bla bla bla ....
bla bla bla bla bla bla bla bla bla bla ....
bla bla bla bla bla bla bla bla bla bla ....
\end{abstract}




\begin{document}

\flushbottom
\maketitle
\thispagestyle{empty}


\section*{My first section}
Here I write about .....


\end{document}





但我没有得到摘要中的行数。有什么想法吗?

答案1

我不推荐使用这个文档类,因为它定义某些东西的方式实际上并不允许轻易修改。尤其是环境的定义abstract有点奇怪。

我建议abstract使用重新定义环境,\parbox然后它也允许使用行号:

\documentclass[fleqn,10pt]{wlscirep}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lineno}

\usepackage{lipsum}

\RenewDocumentEnvironment{abstract}{+b}{%
    \gdef\theabstract{\parbox{\linewidth}{\internallinenumbers #1}}%
}{}

\title{Foo}
\author{Bar Baz}

\begin{abstract}
\lipsum[1]
\end{abstract}

\begin{document}

\flushbottom
\maketitle

\section*{My first section}
Here I write about ...

\end{document}

在此处输入图片描述

然而,这有一个不必要的副作用,即如果你也向完整文档添加行号,抽象框将获得另一个额外的行号,因为它位于 parbox 内(实际上是在两个嵌套的 parbox 内)。


再三考虑后,直接修补可能是一个更好的主意\@maketitle

\documentclass[fleqn,10pt]{wlscirep}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lineno}
\linenumbers

\usepackage{lipsum}

\makeatletter
\patchcmd\@maketitle{%
        {%
        \noindent
        \colorbox{color2}{%
            \parbox{\dimexpr\linewidth-2\fboxsep\relax}{%
            \sffamily\small\textbf\\\theabstract
            }%
        }%
        }%
    }{%
        \nolinenumbers{%
        \noindent
        \colorbox{color2}{%
            \parbox{\dimexpr\linewidth-2\fboxsep\relax}{%
            \internallinenumbers \sffamily\small\theabstract
            }%
        }%
        }%
    }
    {\wlog{true}}{\wlog{false}}
\makeatother

\title{Foo}
\author{Bar Baz}

\begin{abstract}
\lipsum[1]
\end{abstract}

\begin{document}

\flushbottom
\maketitle

\section*{My first section}
Here I write about ...

\end{document}

在此处输入图片描述

相关内容