我想用 Tabular 创建一个表并将一个 minted 环境放入其中,就像这里一样:如何将铸造环境嵌入表格环境中?。
但是,正如该帖子所示,铸造部分在顶部和底部有一些空格,因此它与“测试”评论的高度不相同。有解决方案吗?如何删除空格?
答案1
包minted
基于包fancyvrb
。因此,可以通过禁用 来删除第一个空格\FV@ListVSpace
。末尾的空格是由列 的代码引起的p
。在单元格末尾添加了一个最终支柱,它仅包含通常的表格支柱框的深度,旨在到达最后一行的末尾。但是环境minted
已经关闭,因此是段落模式。返回垂直模式,最后一个支柱会添加一个带有新行的新段落。
以下示例tabminted
基于定义环境minted
。它应删除开头和结尾处的空格。根据最后一行的深度(\prevdepth
),添加最后的支柱以\vspace
获得表格中的正常间距行为。它避免了底线闭合。
\documentclass{article}
\usepackage{minted}
\usepackage{booktabs}
\makeatletter
\newenvironment{tabminted}{%
\let\FV@ListVSpace\relax
\minted
}{%
\endminted
\unskip
\aftergroup\@tabmintedend
}
\newcommand*{\tabminted@finalstrut}[1]{%
\ifdim\prevdepth>0pt
\ifdim\dp#1>\prevdepth
\vskip\dimexpr(\dp#1)-\prevdepth\relax
\fi
\else
\vskip\dimexpr(\dp#1)\relax
\fi
}
\newcommand*{\@tabmintedend}{%
\let\@finalstrut\tabminted@finalstrut
}
\makeatother
\begin{document}
\noindent\begin{tabular}{rp{0.5\textwidth}}
\toprule
A & B\\
\midrule
testing &
\begin{tabminted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{tabminted}
\\
\bottomrule
\end{tabular}
\end{document}