如何获取铸造代码块的连续行号

如何获取铸造代码块的连续行号

minted按以下方式使用:

\documentclass[a4paper, 11pt, twoside]{article}
\usepackage{xltxtra}
\usepackage{xunicode}
\usepackage{polyglossia}
\usepackage[svgnames]{xcolor}

% Syntax higlight
\usepackage{minted}
\usemintedstyle{vim}
\newminted{bash}{bgcolor=Beige, fontfamily=tt,
  gobble=2, linenos, numbersep=-3pt}
\newmint{bash}{}
\renewcommand{\theFancyVerbLine}{
  \sffamily
  \textcolor{BlueViolet}{
    \scriptsize
    \oldstylenums{
      \arabic{FancyVerbLine}
      }
    }
  }

\begin{document}

AAAA

\begin{bashcode}
  BBBB
  CCCC  
\end{bashcode}

DDDD

\begin{bashcode}
  EEEE
  FFFF 
\end{bashcode}

GGGG
\end{document}

通过此设置,我可以为每个代码块提供单独的行号,即

1 AAAA
2 BBBB

然后

1 EEEE
2 FFFF

我希望得到连续增加的行号,即

1 AAAA
2 BBBB

然后

3 EEEE
4 FFFF

根据fancyvrb文档,我尝试将选项添加firstnumber=last\newminted定义中,但它会产生完全奇怪的数字,例如第一个代码块以 16 开头,以 32 结尾,下一个以 43 开头...

答案1

看起来您使用的是minted1.7 或更早版本。2.0 版及更高版本包含一些fancyvrb错误的补丁。这应该可以firstnumber=last正常工作。(至少对我来说是有效的。)此外,从 2.0 开始,有一个包选项langlinenos可以在 时对每种语言进行行号编号firstnumber=last,这样您就可以将bash行号与任何其他代码分开。

如果这对您 2.0+ 不起作用minted,那么可能存在错误minted

答案2

该选项不会根据(如)firstnumber=last区分不同的环境。因此,如果在两个环境之间有其他环境,则编号将有些不可预测。Verbatimbashcodemintedbashcode

您可以设置一个bashnumber沿着bashcode线条步进的特定计数器并进行设置\firstnumber=\value{bashnumber}

\documentclass[a4paper, 11pt, twoside]{article}
\usepackage{polyglossia}
\usepackage[svgnames]{xcolor}
\usepackage{minted}
\usepackage{etoolbox}

% fonts
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}

% Syntax higlight

\usemintedstyle{vim}
\newminted{bash}{bgcolor=Beige, fontfamily=tt,
  gobble=2, linenos, numbersep=6pt,firstnumber=\value{bashnumber}}
\newmint{bash}{}
\renewcommand{\theFancyVerbLine}{%
  \sffamily
  \textcolor{BlueViolet}{%
    \scriptsize
    \oldstylenums{%
      \stepcounter{bashnumber}%
      \arabic{FancyVerbLine}%
    }%
  }%
}
\newcounter{bashnumber}
\setcounter{bashnumber}{1}

\begin{document}

AAAA

\begin{bashcode}
  BBBB
  CCCC  
\end{bashcode}

DDDD

\begin{minted}{c}
abc
\end{minted}

XXXXX

\begin{bashcode}
  EEEE
  FFFF 
\end{bashcode}

GGGG
\end{document}

注意重新定义的正确格式,\theFancyVerbLine以便numbersep选项可以具有合适的值。

在此处输入图片描述

相关内容