如何在表格列中使用 minted 的内联语法突出显示

如何在表格列中使用 minted 的内联语法突出显示

我想在一列中显示单行代码(而不是整块代码) 。结果应该也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}

在此处输入图片描述

我显然对逐字内容做了一些修改,以展示该方法的解析能力。如果我删除多余的内容,我就会得到真正想要的内容:

在此处输入图片描述

相关内容