我想创建一个多列表格(最多 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}