所以我有两个问题:第一,如何在不分页的情况下在文章末尾添加一列?第二,同样,但是在文本中间的表格之后?
答案1
你可以用一些“魔法”把盒子推到合适的位置:
\documentclass[twocolumn]{article}
\usepackage{balance}% http://ctan.org/pkg/balance
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\lipsum[1-10]\balance
\leavevmode\hfill\smash{\raisebox{-10\baselineskip}{\llap{%
\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule}{%
\lipsum[1]%
}}}}%
}
\end{document}
上述命令组合将 a \parbox
(水平方向正好适合文本块)-10\baselineskip
从右边距 (由 推上去\leavevmode\hfill
) 向下推 10 行 (“凸起” s)。根据 TeX,该框的宽度为零,因为它位于l
eft over内lap
并且被\smash
ed。
要使框2<x>
从左侧开始居中,请使用
\leavevmode\hfill\smash{\raisebox{-10\baselineskip}{\llap{% \fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule-}{% % }}\hspace*{.5}}}% }
例如,从.25\columnwidth
左边开始,可以使用
\leavevmode\hfill\smash{\raisebox{-10\baselineskip}{\llap{%
\fbox{\parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule-.5\columnwidth}{%
\lipsum[1]%
}}\hspace*{.25\columnwidth}}}%
}
请注意,这仅当页面底部有足够的空间时才可行,否则它可能会流入页脚。
答案2
您的两个问题都可以通过以下方式轻松解决multicol
包;您只需结束multicols
环境,排版单列材料,然后开始一个新multicols
环境。一个小例子(警告:浮动环境不能放在环境内multicols
):
\documentclass{article}
\usepackage{multicol}
\usepackage{lipsum}
\begin{document}
\begin{multicols}{2}
\lipsum[1-11]
\end{multicols}
{\centering\fbox{\parbox{.7\textwidth}{\lipsum[2]}}\par}
\begin{multicols}{2}
\lipsum[2]
\end{multicols}
{\centering\fbox{\parbox{.7\textwidth}{\lipsum[2]}}\par}
\end{document}
相关页面的图片如下:
如果使用,该multicol
包不是一个选项,对于您的第一个问题,您可以使用TikZ
:
\documentclass[twocolumn]{article}
\usepackage{tikz}
\usepackage{flushend}
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\begin{tikzpicture}[overlay, remember picture]
\node[yshift=6cm] at (current page.south)
{\fbox{\parbox{.7\textwidth}{\lipsum[2]}}};
\end{tikzpicture}
\end{document}
获得最后一页的片段:
这eso-pic
或者textpos
软件包也可以提供解决方案。
不幸的是,对于第二个问题,事情并不简单:一种选择是使用figure*
或table*
环境来放置横跨两列的材料,但这些环境总是将其内容放在下一页的顶部。使用\onecolumn
不适合您,因为它会开始一个新页面。
答案3
您可以使用该包multicol