我正在使用minted
、、floatrow
和caption
包listing
来创建如下代码块:
为了做到这一点,我使用了一个基于这个答案。这是我所拥有的:
...
\usepackage{listings}
\usepackage{floatrow}
\usepackage{minted}
...
% the number style (from fancyvrb package):
\renewcommand{\theFancyVerbLine}{\textcolor{Gray}{\scriptsize\arabic{FancyVerbLine}}}
% caption style
\usepackage{caption}
\DeclareCaptionStyle{code_style}{margin=-1mm}
\DeclareCaptionFont{code_font}{\color{white}\footnotesize\bfseries}
\DeclareCaptionFormat{code_format}{\colorbox{MidnightBlue}{\parbox{\textwidth}{#1#2#3}}}
\captionsetup[listing]{%
style=code_style,format=code_format,labelfont=code_font,textfont=code_font}
% this is from floatrow package:
\floatsetup[listing]{capposition=top,rowpostcode=rule}
\makeatletter
\newenvironment{mycode}[3]
{\VerbatimEnvironment
\minted@resetoptions
\setkeys{minted@opt}{linenos,fontfamily=courier,fontsize=\scriptsize, xleftmargin=21pt}
\renewcommand{\minted@proglang}[1]{#1}
\begin{listing}[H]
\caption{#2}\label{#3}
\begin{VerbatimOut}{\jobname.pyg}}
{\end{VerbatimOut}
\minted@pygmentize{\minted@proglang{}}
\DeleteFile{\jobname.pyg}
\end{listing}}
\makeatother
我mycode
这样称呼:
\begin{mycode}{ruby}{Código do método Project\#tasks\_by\_position (versão 3)}{code:tdd_code3}
# app/models/project.rb
def tasks_by_position position
tasks.select { |item| item.position.to_s == position.to_s }
end
\end{mycode}
问题是,当使用floatrow
包裹,[H]
“放在这里”放置选项不起作用,我的代码放在了文本的末尾。如果我删除包floatrow
,代码可以正常工作,但我无法将标题放在顶部,将行放在底部。
編輯(2012年1月30日)
作为埃格尔问,我做了一个最小的例子,并意识到问题是我使用的\documentclass{abnt}
来自abntex 包。例如,如果我使用\documentclass{book}
,它就可以工作。不幸的是,这个包只有巴西葡萄牙语文档和自 2006 年以来就没有更新过。