ConTeXt 表中的逐字文本

ConTeXt 表中的逐字文本

我想为几个源代码块创建一个表格。在 LaTeX 中,我会这样做

\hline 
\begin{lstlisting}
abc;
def;
\end{lstlisting}
\tabularnewline

有没有办法在 ConTeXt 中实现这样的功能?我尝试过\starttyping\stoptyping表格单元格内实现,但如果我这样做,文件将无法编译。

我希望使用表格的原因在于我可以将其用于\placetable浮点数,并且我可以在文档的其他部分以一种干净的方式引用它。

答案1

使用缓冲区。使用以下方法将内容存储在缓冲区中

\startbuffer[...] 
  ...
\stopbuffer

并使用 检索它\typebuffer。这是一个带有表格的简单示例。

\startsetups table:setup
  \setupTABLE[each][each][frame=off]
  \setupTABLE[row][first][style=bold,color=white,background=color,backgroundcolor=black]
  \setupTABLE[row][last][bottomframe=on, framethickness=3bp]
\stopsetups
\starttext

\startbuffer[CPP]
#include <iostream.h>

void main()
{
  cout << "Hello World\n";
}
\stopbuffer

\startbuffer[ruby]
puts "Hello World"
\stopbuffer

\startTABLE[setups=table:setup]
  \NC C++                \NC Ruby              \NC \NR
  \NC \typebuffer[CPP]   \NC \typebuffer[ruby]  \NC \NR
\stopTABLE
\stoptext

这使

在此处输入图片描述

答案2

第一件事:表格中的逐字文本有效:

\starttext

\starttabulate
    \NC Foo        \NC Bar \NC\AR
    \NC \type{Foo} \NC Bar \NC\AR
\stoptabulate

\bTABLE
    \bTR
        \bTD Foo \eTD
        \bTD Bar \eTD
    \eTR
    \bTR
        \bTD Foo        \eTD
        \bTD \type{Bar} \eTD
    \eTR
\eTABLE

\stoptext

结果: 第一个结果

第二件事是,您不需要表来引用您的代码。您可以创建自己的浮动类型。但是,即使这样也不必浮动。以下代码创建了一个自定义浮动环境,虽然不完美,但希望足以让您入门。

\definefloat [code] [codes]

\starttext

\input knuth

As illustrated in \in{code}[code:example].

\startplacecode [title=Some example code., reference=code:example]
    \starttyping
        int main(){
            return 0;
        }
    \stoptyping
\stopplacecode

\stoptext

它看起来像这样:

第二个结果

相关内容