隐藏代码中的第一个行号

隐藏代码中的第一个行号

因此我研究了以下内容:

抑制列表包中特定行的行号

而且这个解决方案对于第 1 行代码非常有效n。如果我想隐藏第一行代码怎么办?无法让它隐藏第一行...

答案1

基本思想

这里的想法很简单。只需定义两种样式,一种没有行号,另一种有行号。然后用第一种样式输入清单的第一行,用第二种样式输入其余行。

第一次尝试出现了一个小问题,物理第二行被编号为 1。 https://tex.stackexchange.com/a/27240/14103,在这里帮忙。

代码

只需将所需部分复制到文件前言即可。要输入代码文件,请使用\getfilewithnofirslinenumber{filename}

\documentclass{article}

\usepackage{filecontents}

\usepackage{listings}

% Your input files
\begin{filecontents*}{\jobname code1.xml}
<document>
  <part>
    <chapter>
      <section>
        <subsection>
          <subsubsection>
            <paragraph>
              text
            </paragraph>
          </subsubsection>
        </subsection>
      </section>
    </chapter>
  </part>
</document>
\end{filecontents*}

\begin{filecontents*}{\jobname code2.xml}
  <XML Version 1.0>
\end{filecontents*}


% Define numbering and nonumbering styles
\lstdefinestyle{nonumber}
{
  language=XML,
  numbers=none
}
\lstdefinestyle{withnumbers}
{
  language=XML,
  numbers=left,
  stepnumber=1
}


% For file input
\def\getfilewithnofirslinenumber#1{%
  \lstset{style=nonumber}
  \lstinputlisting[linerange={1-1},belowskip=0.0mm]{#1}
  \lstset{style=withnumbers}
  \lstinputlisting[firstline=2,aboveskip=0.0mm]{#1}
}

% This part has been taken from
% https://tex.stackexchange.com/a/27240/14103. Delete/comment out the
% following if you want your physical second line to be numbered 1.
\usepackage{etoolbox}
\makeatletter
\patchcmd{\lst@GLI@}% <command>
  {\def\lst@firstline{#1\relax}}% <search>
  {\def\lst@firstline{#1\relax}\def\lst@firstnumber{#1\relax}}% <replace>
  {\typeout{listings firstnumber=firstline}}% <success>
  {\typeout{listings firstnumber not set}}% <failure>
\makeatother



\begin{document}

The first line numbers in codes are not shown.

First file.

\getfilewithnofirslinenumber{\jobname code1.xml}

\hrule

\bigskip

Second file with only one line.

\getfilewithnofirslinenumber{\jobname code2.xml}


\end{document}

输出

在此处输入图片描述

调整

您肯定想要设置代码语言、代码字体的样式、数字外观等。

如果您希望物理第二行编号为 1,请删除/注释掉以下部分:

\usepackage{etoolbox} 
\makeatletter 
.....
\makeatother

相关内容