规则的长度(两列)

规则的长度(两列)

\documentclass[a4paper, twocolumn]声明时,有没有办法改变 LaTeX 创建的垂直规则的大小?(我需要增加它)

在此处输入图片描述

有任何想法吗?

答案1

一种选择是重新定义\@outputdblcol(从 LaTeX 内核)以使规则具有一定的深度;以下示例显示了这种重新定义(用 表示%NEW);我使用了等于 的深度2ex,但您可以使用任何其他值;当然,这种修改将应用于所有文档:

\documentclass[twocolumn]{article}
\setlength\columnseprule{1pt}
\usepackage{lipsum}

\makeatletter
\def\@outputdblcol{%
\if@firstcolumn
\global \@firstcolumnfalse
\global \setbox\@leftcolumn \box\@outputbox
\else
\global \@firstcolumntrue
\setbox\@outputbox \vbox {%
\hb@xt@\textwidth {%
\hb@xt@\columnwidth {%
\box\@leftcolumn \hss}%
\hfil
{\normalcolor\vrule \@depth2ex \@width\columnseprule}%NEW (original without \@depth2ex)
\hfil
\hb@xt@\columnwidth {%
\box\@outputbox \hss}%
}%
}%
\@combinedblfloats
\@outputpage
\begingroup
\@dblfloatplacement
\@startdblcolumn
\@startdblcolumn.
\@whilesw\if@fcolmade \fi
{\@outputpage
\@startdblcolumn}%
\endgroup
\fi
}

\makeatother

\begin{document}

\lipsum[1-40]

\end{document}

第一页底部的片段显示了扩展:

在此处输入图片描述

在包的帮助下etoolbox,代码减少到(现在使用3ex深度):

\documentclass[twocolumn]{article}
\setlength\columnseprule{1pt}
\usepackage{lipsum}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\@outputdblcol}{\vrule \@width\columnseprule}{\vrule \@depth3ex \@width\columnseprule}{}{}
\makeatother

\begin{document}

\lipsum[1-40]

\end{document}

答案2

建议您使用 multicol 包,它允许您将 \columnseprule 设置为所需的宽度。此外,multicol 包还允许您在文档的任何时候更改列数。

\documentclass{article}
\usepackage{multicol,lipsum}
\begin{document}
\setlength{\columnseprule}{1pt}
\begin{multicols}{2}
\lipsum
\end{multicols}
\newpage
\setlength{\columnseprule}{.5pt}
\begin{multicols}{3}
\lipsum
\end{multicols}
\end{document}

相关内容