LaTeX 中带有 lstinputlisting 的 8 列表格

LaTeX 中带有 lstinputlisting 的 8 列表格

我想创建一个多列表格(最多 8 列)以通过 插入我的代码\lstinputlisting{source.c}。但在我看来,即使空间有限,超过 6 列也不可能。我怎样才能得到 8 列表格?

我的最小例子是:

\documentclass{report}
\usepackage[portrait,a0paper,margin=1in]{geometry}
\usepackage{listings}

\usepackage{multicol}
\setlength{\columnwidth}{-25in}
\setlength{\columnsep}{-15in}
\setlength{\columnseprule}{0mm}

\begin{document}

\begin{multicols*}{8}
\lstinputlisting{source.c}
\end{multicols*}

\end{document}

但我收到此错误信息:

! Dimension too large. \set@mult@vsize ...dima \vsize \col@number \vsize \advance \vsize -\@tempdim... l.47 \lstinputlisting

答案1

multicols 将所有列收集到一个垂直内部列中,这样可以平衡列中断。A0 高度的 8 倍对于 TeX 来说太大了。

如果您将 a0 更改为 a2(或更小),您的示例就会运行,因此一种可能性是将海报设置为该尺寸,然后再缩放 pdf。

或者,如果多列仅用于列出,则可以使用不同的技术。列表中通常没有垂直灵活性,因此您可以每 n 行后中断一次,而不必先收集整个页面。

在此处输入图片描述

上面是一份 8 列的 3613 行文件列表,每行一个前 3613 个整数,设置在 a2paper 上。您只需要在打印时缩放到 a0(即将其大小加倍)

\RequirePackage{fix-cm}
\documentclass{article}
\usepackage{multicol,listings}

\usepackage[portrait,a2paper,margin=1in]{geometry}
\begin{document}

\fontsize{3.1pt}{3.4pt}\selectfont
\begin{multicols*}{8}
\lstinputlisting{ll.txt}
\end{multicols*}

\end{document}

相关内容