\tcbincludepdf 栅格的高度不一致

\tcbincludepdf 栅格的高度不一致

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}

在此处输入图片描述

相关内容