tcbraster
我使用和\tcbincludepdf
(来自包)将多个 pdf 文件合并为一个文件tcolorbox
。我对输出有疑问。这是 MWE 流程:
我首先使用这个文件(file name=1.tex)
生成单页pdf文件:
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage[final]{pdfpages}
\usepackage{graphicx}
\pagestyle{empty}
\usepackage[skins,raster]{tcolorbox}
\begin{document}
\centering
\scalebox{30}{1}\newpage
\end{document}
然后我使用这个文件(file name=2.tex)
生成一个2页的pdf文件:
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage[final]{pdfpages}
\usepackage{graphicx}
\pagestyle{empty}
\usepackage[skins,raster]{tcolorbox}
\begin{document}
\centering
\scalebox{30}{2}\newpage
\scalebox{30}{2}\newpage
\end{document}
我现在使用这个文件(file name=MWE.tex)
来合并所有 pdf 文件,使用自定义彩色盒子栅格:
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage[final]{pdfpages}
\usepackage{graphicx}
\pagestyle{empty}
\usepackage[skins,raster,most]{tcolorbox}
\newtcolorbox[
auto counter,
list inside=box,
number format=\arabic,
]{file}[2][]{
enhanced,width=15cm,height=20cm,
breakable,bottom=5mm,
colback=white,
colframe=white,
fonttitle=\bfseries,
coltitle=black,
title=File
\thetcbcounter:\quad#2,#1}
%
\begin{document}
\begin{file}{One Page}
\begin{tcbraster}[%
raster columns=1,enhanced,
colframe = white,
raster equal skip=0pt,
colback = blue!20!white,width=15cm,height=20cm,
colbacktitle = black!50,
fonttitle = \small\ttfamily,
boxsep = 0pt,
toptitle = 1mm,
bottomtitle = 1mm,
center title,
graphics pages = {1},
title = {MWE\ [\imagepage]}]
\tcbincludepdf{1.pdf}
\end{tcbraster}
\end{file}
%
\begin{file}{Two Pages}
\begin{tcbraster}[%
raster columns=1,enhanced,
colframe = white,
raster equal skip=0pt,
colback = blue!20!white,width=15cm,height=20cm,
colbacktitle = black!50,
fonttitle = \small\ttfamily,
boxsep = 0pt,
toptitle = 1mm,
bottomtitle = 1mm,
center title,
graphics pages = {1,2},
title = {MWE\ [\imagepage]}]
\tcbincludepdf{2.pdf}
\end{tcbraster}
\end{file}
\end{document}
然而,这段代码产生的问题是框的高度不同。第二个文件有一个带标题的页面,另一个没有标题的页面。截图: 我希望能够将所有框刷新到页面底部。
有人知道该怎么做吗?
答案1
这是(目前)部分解决方案的提议。
从我的角度来看,主要问题是使用外部tcolorbox
调用file
来为内部添加标题tcbraster
。此外部标题将内部 tcbraster 的第一个框和所有其他框从相同的位置移开,file
看起来位置不对。除了此标题外,file
环境还使用内部计数器并为添加信息table of boxes
。
这里建议忘记file
环境,使用一个简单的方法tcbraster
,但要为每个栅格的第一个框添加一个外部标题和一个overlay
选项。此解决方案的优点是,在框放置时不考虑叠加的标题,并且所有框在每一页上看起来都是对齐的。主要问题是,在完成更多工作之前,框的计数器和表格会丢失。但由于此部分解决方案仅在标题file
是 tcbrasters 周围添加的唯一文本时才有效,因此在尝试进行这项额外工作之前,我需要知道我的考虑是否有效。
为了将覆盖仅应用于第一个框,对 的原始用法进行了少许更改tcbincludepdf
。似乎用于将特定样式应用于栅格中的某个框(如raster number x
)的选项在使用 时不起作用tcbincludepdf
。因此,使用了替代解决方案。在这种情况下,tcbincludepdf
已被替换为使用foreach
命令在栅格内构造tcbincludegraphics
。 中使用的列表foreach
对应于要包含在栅格内的页面。
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage[final]{pdfpages}
%\usepackage{graphicx}
\pagestyle{empty}
\usepackage[skins,raster,most]{tcolorbox}
\newtcolorbox[
auto counter,
list inside=box,
number format=\arabic,
]{file}[2][]{
enhanced,width=15cm,height=20cm,
breakable,bottom=5mm,
colback=white,
colframe=white,
fonttitle=\bfseries,
coltitle=black,
title=File
\thetcbcounter:\quad#2,#1}
\tcbset{%
myrasterstyle/.style={%
enhanced,
raster columns=1,
raster equal skip=0pt,
colframe = white,
colback = blue!20!white, width=15cm,height=20cm,
colbacktitle = black!50,
fonttitle = \small\ttfamily,
boxsep = 0pt,
toptitle = 1mm,
bottomtitle = 1mm,
center title,
% graphics pages = {1},
title = {MWE\ [\imagepage]},
raster number 1/.style={overlay={\node[anchor=south west, font=\bfseries] at (frame.north west) {File: #1};}}
}
}
\begin{document}
\begin{tcbraster}[myrasterstyle={One Page}]
\foreach \i in {1}{
\tcbincludegraphics[graphics options={page=\i}]{1.pdf}}
\end{tcbraster}
\begin{tcbraster}[myrasterstyle={Two Pages}]
\foreach \i in {1,2}{
\tcbincludegraphics[graphics options={page=\i}]{2.pdf}}
\end{tcbraster}
\end{document}
更新:tcbraster 被 foreach 循环取代
这是第二种选择,我希望它能解决所有问题。此解决方案包括使用foreach
循环来构建独立框,tcolorboxes
而不是使用tcbraster
。每个框都由一个外部框(用于标题)和一个tcbincludepdf
具有所需样式的内部框组成。但使用了两种外部框,一种带有初始化选项(用于构建目录并枚举所有文件),用于打印标题,另一种没有初始化选项但带有标题\phantom
。这样,框将具有相同的空间,并且内部框将在每页上对齐。
\documentclass[a4paper]{article}
\usepackage{geometry}
%\usepackage[final]{pdfpages}
\pagestyle{empty}
\usepackage[skins,raster,most]{tcolorbox}
\newtcolorbox[
auto counter,
list inside=box,
number format=\arabic,
]{file}[2][]{%
enhanced,
fonttitle=\bfseries,
coltitle=black,
title=File \thetcbcounter:\quad#2,
blanker,
#1
}
\newtcolorbox{auxfile}[2][]{%
enhanced,
fonttitle=\bfseries,
coltitle=black,
title=\phantom{File \thetcbcounter:\quad#2},
blanker,
#1
}
\tcbset{
innerfile/.style={
colframe=white,
colback=blue!20,
width=15cm,
height=20cm,
colbacktitle=black!50,
fonttitle=\small\ttfamily,
boxsep = 0pt,
toptitle = 1mm,
bottomtitle = 1mm,
center title,
title = {MWE\ [\imagepage]},
graphics pages = {#1}
}
}
\begin{document}
%\tcblistof{box}{List of boxes}
\begin{file}{One Page}
\tcbincludepdf[innerfile={1}]{1.pdf}
\end{file}
\foreach \i [count=\ni] in {1,3,6,7,...,9,12}{
\ifnum\ni<2
\begin{file}{Some Pages}
\tcbincludepdf[innerfile={\i}]{2.pdf}
\end{file}
\else
\begin{auxfile}{Some Pages}
\tcbincludepdf[innerfile={\i}]{2.pdf}
\end{auxfile}
\fi
}
\end{document}