在代码片段周围绘制矩形框

在代码片段周围绘制矩形框

如何制作在代码周围绘制一个矩形框的效果,并将其放在图中?(欢迎任何有帮助的方法,包括非 tikz-pgf 方法)

在此处输入图片描述

答案1

verbatimbox 用法的一个例子:

\documentclass{article}
\usepackage{verbatimbox}
\begin{document}
\verbfilebox{codefrag}
\begin{tabular}{cc}
\boxbottomsep = 3em
\addvbuffer{\LARGE (b)} & \fbox{\theverbbox}
\end{tabular}
\end{document}

codefrag.tex 的位置

{invoke ... operation = "bf" ...
            outputVariable = "FlightConf">
  <compensationHandler cost="g">
          <invoke ... operation = "cancelF" />
  </compensationHandler>
</invoke>

在此处输入图片描述

另外,如果您希望自动编号代码片段,我在这里定义了 \numblock 命令,以便每个代码块按顺序编号。完成后,代码片段的放置方式如下,非常简单:

\verbfilebox{codefrag}
\numblock{\fbox{\theverbbox}}

下面是定义 \numblock 的示例。

\documentclass{article}
\usepackage{verbatimbox}
\begin{document}
\newlength\maxblocklabelsize
\newlength\blockindent
                              \setlength\maxblocklabelsize{-0.4in}
                                     \setlength\blockindent{0.2in}
                   \newcommand\blocklabel[1]{[\textit{\alph{#1}}]}
\newcounter{blocknum}
\setcounter{blocknum}{0}
\newlength\codeblockwidth
\newlength\parindentsave
\newcommand\numblock[1]{
  \setlength\codeblockwidth{\textwidth}
  \addtolength\codeblockwidth{-\maxblocklabelsize}
  \addtolength\codeblockwidth{-\blockindent}
  \setlength\parindentsave{\parindent}
  \parindent 0in
  \addtocounter{blocknum}{1}
  \vspace{\abovecaptionskip}
  \begin{tabular}{@{\hspace{\blockindent}} l @{} r @{}}
     {\tt
      \begin{tabular*}{\codeblockwidth}{@{} l @{}}
        #1
      \end{tabular*}%
     }
     & \makebox[\maxblocklabelsize]{\hfill\blocklabel{blocknum}}\\
  \end{tabular}
  \vspace{\belowcaptionskip}
  \setlength{\parindent}{\parindentsave}
}

\verbfilebox{codefrag}
\numblock{\fbox{\theverbbox}}
\end{document}

答案2

如果我没记错的话,这个问题已经被编辑,以强调将代码列表放入“图形”中的概念。 verbatimbox 包可以做到这一点,因为它的输出是一个框,可以很容易地塞入图形环境中,或者,按照我的喜好,塞入 boxhandler 包的 \bxfigure 命令中。

\documentclass{article}
\usepackage{boxhandler}
\usepackage{verbatimbox}
\begin{document}
\verbfilebox{codefrag}
\bxfigure{My caption goes here}{\fbox{\theverbbox}}
\end{document}

在这种情况下,带框的代码片段构成了整个图形(减去标题)。但是,情况不一定如此。可以调整 \bxfigure 的第二个参数,使 \theverbbox 成为表格环境的一部分,等等。

相关内容