![如何在表格列中使用 minted 的内联语法突出显示](https://linux22.com/image/315462/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%A1%A8%E6%A0%BC%E5%88%97%E4%B8%AD%E4%BD%BF%E7%94%A8%20minted%20%E7%9A%84%E5%86%85%E8%81%94%E8%AF%AD%E6%B3%95%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA.png)
我想在一列中显示单行代码(而不是整块代码) 。结果应该也tabular
适用。longtable
我使用以下方式定义了内联突出显示的简写铸造。它允许在内联命令后使用自定义分隔符指定其内容。我尝试将其放入列定义中,但最终出现错误。
\documentclass{article}
\usepackage{array}
\usepackage{minted}
\newmintinline[mycode]{c}{showspaces}
\begin{document}
\mycode{void foo()} % delimiter "{"
\mycode|int bar()| % delimtier "|"
\mycode'int baz()' % delimiter "'"
% does not work with any of the delimiters above
\begin{tabular}{>{\mycode'}c<{'}}
void main()
\end{tabular}
\end{document}
错误是:
|| 扫描 \minted@inline@ii 的使用时文件结束。
有什么办法可以实现这一点? 我的错误是什么?
编辑(Guilherme):
另一种可能性是制作这种代码:
\documentclass{article}
\usepackage{booktabs,array}
\usepackage{minted}
\newmintinline[mycode]{c}{showspaces}
\begin{document}
% does not work with any of the delimiters above
\begin{tabular}{>{\mycode'}l<{'}p{5cm}}
\toprule
\midrule
void foo() & This function is used to do great things in C\\
int bar() & This is probably making its argument and integer \\
int baz() & This other is the same as the former\\
\bottomrule
\end{tabular}
\end{document}
输出这个:
答案1
这是一种verbatimbox
使用<
和>
作为转义符的方法。该语法甚至不如要克服的原始语法那么干净,因为需要在tabular
调用之前创建逐字框。从这个意义上讲,它没有任何改进。但是,verbatimbox
不需要执行,所以这是一件好事。我的主要目标是看看是否可以使用该包shell-escape
来完成。verbatimbox
\documentclass{article}
\usepackage{booktabs,array,xcolor}
\usepackage{verbatimbox}
\def\mycode{}
\let\svspace\ %
\catcode`>=\active %
\catcode`<=\active %
\def\openesc{\color{red!75!black}\def\ {\spconvert}}
\def\spconvert{\color{black}\textvisiblespace\color{blue!80!black}}
\def\closeesc{\color{black}\let\ \svspace}
\def\vbdelim{\catcode`<=\active\catcode`>=\active%
\def<{\openesc}\def>{\closeesc}}
\catcode`>=12 %
\catcode`<=12 %
\begin{document}
\begin{myverbbox}[\vbdelim]{\voidfoo}xxx <void foo()>\end{myverbbox}
\begin{myverbbox}[\vbdelim] {\intbar}x<int bar()> etc.\end{myverbbox}
\begin{myverbbox}[\vbdelim] {\intbaz}<int baz ()>\end{myverbbox}
\begin{tabular}{lp{5cm}}
\toprule
\voidfoo & This function is used to do great things in C\\
\intbar & This is probably making its argument and integer \\
\intbaz & This other is the same as the former\\
\bottomrule
\end{tabular}
\end{document}
我显然对逐字内容做了一些修改,以展示该方法的解析能力。如果我删除多余的内容,我就会得到真正想要的内容: