我有一个多列文本。我想在第二页上打印一些内容,这些内容位于两个可容纳的框内,这两个框完全占据整个页面的宽度。
所以我想用\begin{multicols}{2}
两列和\AtBeginShipout{\ifnum\value{page}=1 \tcboxfit{}}
工作示例,但输出错误。
\documentclass[12pt]{article}
\usepackage[breakable,fitting,raster]{tcolorbox}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{atbegshi}
\AtBeginShipout{
\ifnum\value{page}=1
\tcbset{colframe=black,colback=white,
sharp corners,
boxsep=5mm,top=1mm,bottom=1mm,left=1mm,right=1mm,
fit algorithm=hybrid*,raster equal skip=-0.5mm}
\tcboxfit{
Information
}
\tcboxfit{
more Infomation
}
\newpage
\fi
}
\begin{document}
\begin{multicols*}{2}
\subsection{-1-}
\lipsum[1]
\subsection{-2-}
\lipsum[2]
\subsection{-3-}
\lipsum[3]
\subsection{-4-}
\lipsum[4-5]
\subsection{-5-}
\lipsum[5]
\end{multicols*}
\end{document}
这种做法有两个问题:
- 部分段落将输出至第二页
- tcboxfit 仅跨越该列。
有任何想法吗?
EDITH:twocolumn 选项不是很有用,因为它开始一个新页面,并且我想在 longtable 之后立即开始 twocolumn(根据生成的数据,它本身可能会跨越到下一页)。
所以我真正的问题是:为什么段落的一部分放在第二页。我调整了示例。如您所见,“sit amet, consecuteur...”放在了错误的页面上,即第二页
答案1
我认为将整个文本包装起来multicols
并不是解决问题的最佳方法(我可能错了:)
twocolumn
这是使用选项article
并使用切换到单列模式的一种方法\onecolumn
。
真正的问题是完成工作\tcboxfit
:P
我将它们包裹在minipage
s 中,以避免它们并排插入:
\documentclass[12pt,twocolumn]{article}
\usepackage[breakable,fitting,raster]{tcolorbox}
\usepackage{lipsum}
\usepackage{atbegshi}
\AtBeginShipoutNext{% We can use \AtBeginShipoutNext to eliminate the page number check
\onecolumn% switch to one column
\tcbset{colframe=black,colback=white,
sharp corners,
boxsep=5mm,top=1mm,bottom=1mm,left=1mm,right=1mm,
fit algorithm=hybrid*,raster equal skip=-0.5mm}%
\begin{minipage}[t][0.5\textheight][t]{\textwidth}
\tcboxfit[height=0.5\textheight,width=\textwidth]{
Information
}
\end{minipage}\par\nointerlineskip
\begin{minipage}[t][0.5\textheight][t]{\textwidth}
\tcboxfit[height=0.5\textheight,width=\textwidth]{
more Infomation
}
\end{minipage}
\newpage
\twocolumn% and go back to two column mode
}
\begin{document}
\lipsum
\end{document}
第二页:
答案2
另一个解决方案基于Phelype 的一个,而是minipages
用一个tcbraster
由一列和两行声明的来替换。
\documentclass[12pt,twocolumn]{article}
\usepackage[breakable,fitting,raster]{tcolorbox}
\usepackage{lipsum}
\usepackage{atbegshi}
\AtBeginShipoutNext{% We can use \AtBeginShipoutNext to eliminate the page number check
\onecolumn% switch to one column
\tcbset{colframe=black,colback=white,
sharp corners,
fit algorithm=hybrid*,raster equal skip=-0.5mm}%
\begin{tcbraster}[raster columns=1, raster row skip=-.5mm, raster height=\textheight, raster rows=2, raster equal height=all]
\tcboxfit{
Information
}
\tcboxfit{
more Infomation
}
\end{tcbraster}
\newpage
\twocolumn% and go back to two column mode
}
\begin{document}
\lipsum
\end{document}
答案3
这不是一个答案。这更像是一个澄清问题:为什么你不能这么做呢?但是,我无法将其放入评论中。至少在内联图像中不行。
据我了解,您希望tcolorbox
在第 2 页的顶部放置两个 es,这样它们加起来就跨过了页面的宽度。您希望其他所有内容的文本都排版在两列中。因此,本质上,您最终会在第 2 页的每一列的顶部看到一个框。这些框必须位于第 2 页的顶部,上面不能有常规文本的零星部分。
我想知道您是否也不想在第 2 页上看到任何其他内容。但是,我尝试过,结果看起来很糟糕,所以我想可能不是这样。
不过,在这种情况下,我不明白为什么你不能使用
\twocolumn
(或twocolumn
课程选项);- a
figure*
包含两个tcolorbox
es。
您确实需要该nobeforeafter
选项。否则,它将tcolorbox
被设置在它自己的段落中,因此,第二个框当然位于它下面而不是旁边。
否则,它看起来很简单,这就是为什么我认为这不是你实际上想要的。
\documentclass[12pt]{article}
\usepackage{tcolorbox}
\usepackage{lipsum}
\tcbset{aardvark/.style={colframe=black, colback=white, equal height group=aardvarks, sharp corners, width=\linewidth/2, nobeforeafter}}%
\begin{document}
\twocolumn
\begin{figure*}
\begin{tcolorbox}[aardvark]
Information
\end{tcolorbox}%
\begin{tcolorbox}[aardvark]
more Infomation
\end{tcolorbox}
\end{figure*}
\subsection{-1-}
\lipsum[1]
\subsection{-2-}
\lipsum[2]
\subsection{-3-}
\lipsum[3]
\subsection{-4-}
\lipsum[4-5]
\subsection{-5-}
\lipsum[5]
\end{document}