我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
看起来您使用的是minted
1.7 或更早版本。2.0 版及更高版本包含一些fancyvrb
错误的补丁。这应该可以firstnumber=last
正常工作。(至少对我来说是有效的。)此外,从 2.0 开始,有一个包选项langlinenos
可以在 时对每种语言进行行号编号firstnumber=last
,这样您就可以将bash
行号与任何其他代码分开。
如果这对您 2.0+ 不起作用minted
,那么可能存在错误minted
。
答案2
该选项不会根据(如)firstnumber=last
区分不同的环境。因此,如果在两个环境之间有其他环境,则编号将有些不可预测。Verbatim
bashcode
minted
bashcode
您可以设置一个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
选项可以具有合适的值。