内联代码示例的首选方法

内联代码示例的首选方法

我倾向于使用该minted包在我的文档中包含代码示例,这会产生非常好的输出。但是,由于 Pygments 总是产生逐字输出,环境如果我需要讨论它的特定功能,则无法内联代码。排版内联代码以与生成的代码一起使用的最佳方法是什么minted

listings仅使用for 包是我考虑过的一个选项,但同时使用和\lstinline似乎有点奇怪。我过去曾使用过,但(在我看来以及根据我尝试过的示例)我认为输出不如使用 生成的输出好。还有其他我不知道的生成内联代码的方法吗?mintedlistingslistingsminted

答案1

minted如果您愿意修补它,您可以这样做:

\documentclass{minimal}
\usepackage{ifplatform}
\ifwindows\else
\newcommand*{\TestAppExists}[1]{% there is no `which -s` on Linux
  \immediate\write18{which -- '#1' > /dev/null && touch -- '\jobname.aex'}%
  \IfFileExists{\jobname.aex}{%
    \AppExiststrue
    \DeleteFile{\jobname.aex}%
  }{%
    \AppExistsfalse
  }
}
\fi
\usepackage{minted}
\makeatletter
% avoid space tokens since we're in horizontal mode
\renewcommand\mint[3][]{%
  \DefineShortVerb{#3}%
  \minted@resetoptions
  \setkeys{minted@opt}{#1}%
  \SaveVerb[aftersave={%
    \UndefineShortVerb{#3}%
    \minted@savecode{\FV@SV@minted@verb}%
    \minted@pygmentize{#2}%
    \DeleteFile{\jobname.pyg}}]{minted@verb}#3}
\renewcommand\minted@savecode[1]{%
  \immediate\openout\minted@code\jobname.pyg\relax
  \immediate\write\minted@code{#1}%
  \immediate\closeout\minted@code}
\renewcommand\minted@pygmentize[2][\jobname.pyg]{%
  \def\minted@cmd{pygmentize -l #2 -f latex -F tokenmerge
    \minted@opt{gobble} \minted@opt{texcl} \minted@opt{mathescape}
    \minted@opt{linenos} -P "verboptions=\minted@opt{extra}"
    -o \jobname.out.pyg #1}%
  \immediate\write18{\minted@cmd}%
  \ifthenelse{\equal{\minted@opt@bgcolor}{}}%
   {}%
   {\begin{minted@colorbg}{\minted@opt@bgcolor}}%
  \input{\jobname.out.pyg}%
  \ifthenelse{\equal{\minted@opt@bgcolor}{}}%
   {}%
   {\end{minted@colorbg}}%
  \DeleteFile{\jobname.out.pyg}}
\makeatother
\RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}
\begin{document}
This is some inline code \mint{c++}|for i=1;i<20;i++| and more \ldots
\end{document}

答案2

AFIK,这是一个您不能使用 Pygments 的区域。

从“打字”的角度来看,实现这一目标的最简单方法是使用“简短的逐字记录”。

\documentclass{article}
\usepackage{fancyvrb}
\DefineShortVerb{\|}
\begin{document}
This is some inline code |for i=1;i<20;i++| and more \ldots
\end{document}

该软件包fancyvrb还提供了许多定制功能。

答案3

仅供参考,另请参阅第 15 期在 minted 项目页面上,特别是临时解决办法我在那里发布了它(但它可能和 Philipp 的 hack 做的差不多)。

总之,这是在“待办事项”列表中,但尚未得到官方支持,因为我目前很忙,没有时间研究 minted。

答案4

\mintinline功能允许您使用该包编写内联代码minted

相关内容