如何使多列环境中的逐字文本不会溢出到其他列?

如何使多列环境中的逐字文本不会溢出到其他列?

我更喜欢使用\begin{multicols}{2} over,\documentclass[12pt,twocolumn]{article}这样我就可以控制何时有 2 列,何时没有。

问题出现在使用时\begin{Verbatim}....\end{Verbatim}

使用\documentclass[12pt,twocolumn]{article}verbatim 时,会自动换行到每列内,不会溢出到另一列。但是使用时 \begin{multicols}{2}不会这样做,它会溢出到旁边的列。

梅威瑟:

\documentclass[12pt]{article}
\usepackage{multicol}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0.01pt}
\usepackage{fancyvrb}

\begin{document}
\begin{multicols}{2}
\begin{Verbatim}
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
\end{Verbatim}
\end{multicols}

\end{document}

MWE 用于twocolumn

\documentclass[12pt,twocolumn]{article}

\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0.01pt}
\usepackage{fancyvrb}

\begin{document}
\begin{Verbatim}
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
\end{Verbatim}
\end{document}

并排

在此处输入图片描述

我想到解决方案是放入Verbatimminipage,使用columnwidth其大小作为 minipage 的宽度,这种方法在一定程度上有效,但由于某种原因,我无法使 minipage 的宽度小于列宽,因为逐字逐句仍然稍微超出了一点。

当我写说它0.6\columnwidth对结果没有影响时。对于我尝试的任何值,它看起来都一样。

\documentclass[12pt]{article}
\usepackage{multicol}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0.01pt}
\usepackage{fancyvrb}

\begin{document}
\begin{multicols}{2}
\begin{minipage}{0.6\columnwidth}
\begin{Verbatim}
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
\end{Verbatim}
\end{minipage}
\end{multicols}

\end{document}

在此处输入图片描述

Verbatim问题是:在多列环境中处理的最佳方法是什么?

答案1

您的假设是错误的。在任何情况下都不会Verbatim“包裹”到列宽。示例:

\documentclass[12pt,twocolumn]{article}

\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0.01pt}
\usepackage{fancyvrb}

\begin{document}
\begin{Verbatim}
blablabla blablabla blablabla blablabla blablablx
blablabla blablabla blablabla blablabla blablablx
blablabla blablabla blablabla blablabla blablablx
blablabla blablabla blablabla blablabla blablablx
blablabla blablabla blablabla blablabla blablablx
\end{Verbatim}
\end{document}

在此处输入图片描述

正如您所见,这些线条远远超出了分离规则。

中的行Verbatim永远不会跨行分割,因此您必须确保它们不会超出列宽。

您的比较也是错误的,因为您没有考虑到选项twocolumnarticle导致文本宽度增加到 469pt,而不是使用onecolumn(默认)选项的 390pt。如果您尝试您的multicol示例并扩展文本宽度,同时使用multicols*以不进行列平衡,

\documentclass[12pt]{article}
\usepackage{multicol}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0.01pt}
\usepackage{fancyvrb}

\setlength{\textwidth}{469pt}

\begin{document}
\begin{multicols*}{2}
\begin{Verbatim}
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
\end{Verbatim}
\end{multicols*}

\end{document}

您将获得相同的输出,如下所示。

在此处输入图片描述

如果你想要一个逐字模式并且换行,请使用listings

\documentclass[12pt]{article}
\usepackage{multicol}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0.01pt}
\usepackage{listings}
\lstset{basicstyle=\ttfamily,
  breaklines=true}

\setlength{\textwidth}{469pt}

\begin{document}
\begin{multicols*}{2}
\begin{lstlisting}
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
blablabla blablabla blablabla blablabla
\end{lstlisting}
\end{multicols*}

\end{document}

在此处输入图片描述

相关内容