特殊第二页,与文档的其余部分不同

特殊第二页,与文档的其余部分不同

我有一个多列文本。我想在第二页上打印一些内容,这些内容位于两个可容纳的框内,这两个框完全占据整个页面的宽度。

所以我想用\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

我将它们包裹在minipages 中,以避免它们并排插入:

\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课程选项);
  • afigure*包含两个tcolorboxes。

您确实需要该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}

两个框标题第 2 页

相关内容