当\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}