首页 文章

使用multicol(latex)在列表环境中配置 Headers

提问于
浏览
4

我想在乳胶中制作双列代码,但两列上方的 Headers . 例如:

Program 1 : some text here for the caption

1   //col 1              7    //col2
2   void main (void)     8   void foo(void)
3   {                    9   {
4      //just a test    10      int c;
5      return 0;        11      c = 0;
6   }                   12   }

我正在使用 listings . 为了完成上面的布局,我在一个表中切入了两个列表 . 这种方法存在一些问题,我必须手动划分代码并在PDF中查看结果 .

我想使用[multicol = 2]选项,但是这样, Headers 栈只在第一列上 . 现在有人如何克服(如果可能的话?)

Program 1 : some text 7    //col2
    here for the caption  8   void foo(void)
1   //col 1               9   {
2   void main (void)     10      int c;
3   {                    11      c = 0;
4      //just a test     12   }
5      return 0;         
6   }

下面是非工作代码

\documentclass{article}
\usepackage{listings}
\usepackage{multicol}
\begin{document}

\lstset{
   language=C,
   breaklines=true,
   prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
}

\begin{lstlisting}[stepnumber=1,multicols=2,caption=Caption test to confirm that multicol does not like large captions]
void MudaDigito(char val)
{
   if (pos == 0)
   {
     v0 = val;
   }
   if (pos == 1)
   {
     v1 = val;
   }
   if (pos == 2)
   {
     v2 = val;
   }
   if (pos == 3)
   {
     v3 = val;
   }
}
\end{lstlisting}

\ {端文档}

1 回答

  • 2

    我有同样的问题 . 我找到了解决方案 . 它不干净,但它的工作原理 . 下面是工作代码 .


    \documentclass{article}
    \usepackage{listings}
    \usepackage{multicol}
    \newcommand{\listingcaption}[1]%
    {%
    \refstepcounter{lstlisting}\hfill%
    Listing \thelstlisting -- #1\hfill%\hfill%
    }%
    \begin{document}
    \lstset{
       language=C,
       breaklines=true,
       prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
    }
    \listingcaption{Caption test to confirm that multicol does not like large captions\label{list1}}
    \begin{lstlisting}[stepnumber=1,multicols=2]
    void MudaDigito(char val)
    {
       if (pos == 0)
       {
         v0 = val;
       }
       if (pos == 1)
       {
         v1 = val;
       }
       if (pos == 2)
       {
         v2 = val;
       }
       if (pos == 3)
       {
         v3 = val;
       }
    }
    \end{lstlisting}
    See listing \ref{list1}
    \end{document}
    

相关问题