使用 Tikz 定位栅格

使用 Tikz 定位栅格

我正在尝试使用 tikz 定位跨越多页的光栅,但不知道如何去做。

无需定位的MWE工作原理:

\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
%
\usepackage[raster,most]{tcolorbox}
\tcbset{
colorboxa/.style={
enhanced,
sharp corners,
breakable,
center,
boxrule=0.2mm,
colback=white,
colframe=black,
coltitle=black,
colbacktitle= white,
},}
%:colorboxa
% [1] Document Name 
% [2] Document Label
\newtcolorbox[
auto counter,
list inside=files,
]{colorboxa}[2]{
colorboxa,
breakable,
colframe=blue,
boxrule=0.2mm,
raster columns=1,
list entry=File~\thetcbcounter: #1,
label={doc:#2},
nameref=#1,
}
%:rastera_environment 
% [1] File Name 
% [2] Document Name
% [3] Number of Pages 
\newenvironment{rastera}[3]{
\begin{tcbraster}[
colorboxa,
colframe=red!80!black,
boxrule=0.2mm,
raster columns=1,
title={File \thetcbcounter: \quad #2 \quad [Page \imagepage \ of #3]},
]
\tcbincludepdf[graphics pages={\x},]{#1.pdf}
\end{tcbraster}}{}
%:filea_environment 
% [1] File Name 
% [2] Number of Pages 
% [3] Document Name 
% [4] Label 
\newenvironment{fileattach}[4]
{\noindent\ignorespaces
\vspace{10mm}
\begin{colorboxa}{#3}{#4}
\foreach \x in {1,...,#2}{
\begin{rastera}{#1}{#3}{#2}
\end{rastera}
}
\end{colorboxa}
}{}
\begin{document}
\tcblistof[]{files}{Files:} % TOC
% First attchment (1 page image)
\begin{fileattach}
{example-image}
{1} % Number of Pages
{Doc A} % Document Name
{doa} % Document Label
\end{fileattach}
% Second attchment (2 page document)
\begin{fileattach}
{example-image-letter-numbered}
{2} % Number of Pages
{Doc B} % Document Name
{dob} % Document Label
\end{fileattach}
\end{document}

运行 MWE 的屏幕截图(无 Tikz 定位)

MWE 与 Tikz 定位不起作用:

\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
%
\usepackage[raster,most]{tcolorbox}
\tcbset{
colorboxa/.style={
enhanced,
sharp corners,
breakable,
center,
boxrule=0.2mm,
colback=white,
colframe=black,
coltitle=black,
colbacktitle= white,
},}
%:colorboxa
% [1] Document Name 
% [2] Document Label
\newtcolorbox[
auto counter,
list inside=files,
]{colorboxa}[2]{
colorboxa,
breakable,
colframe=blue,
boxrule=0.2mm,
raster columns=1,
list entry=File~\thetcbcounter: #1,
label={doc:#2},
nameref=#1,
}
%:rastera_environment 
% [1] File Name 
% [2] Document Name
% [3] Number of Pages 
\newenvironment{rastera}[3]{
\begin{tcbraster}[
colorboxa,
colframe=red!80!black,
boxrule=0.2mm,
raster columns=1,
title={File \thetcbcounter: \quad #2 \quad [Page \imagepage \ of #3]},
]
\tcbincludepdf[graphics pages={\x},]{#1.pdf}
\end{tcbraster}}{}
%:filea_environment 
% [1] File Name 
% [2] Number of Pages 
% [3] Document Name 
% [4] Label 
\newenvironment{fileattach}[4]
{\noindent\ignorespaces
\vspace{10mm}
\begin{colorboxa}{#3}{#4}
\foreach \x in {1,...,#2}{
\begin{tikzpicture}[remember picture,framed,overlay,]
\node [] at (current page.center)
[draw=red,anchor=center,scale=.5,]{
\begin{rastera}{#1}{#3}{#2}
\end{rastera}
};
\end{tikzpicture}
}
\end{colorboxa}
}{}
\begin{document}
\tcblistof[]{files}{Files:} % TOC
% First attchment (1 page image)
\begin{fileattach}
{example-image}
{1} % Number of Pages
{Doc A} % Document Name
{doa} % Document Label
\end{fileattach}
% Second attchment (2 page document)
\begin{fileattach}
{example-image-letter-numbered}
{2} % Number of Pages
{Doc B} % Document Name
{dob} % Document Label
\end{fileattach}
\end{document}

带有 Tikz 定位的 MWE 的屏幕截图,不起作用

答案1

我将坚持提供的解决方案\tcbincludepdf 栅格的高度不一致,即忘记光栅并使用独立的打印每一页tcolorbox

我不知道 OP 真正想要什么,他/她在评论中说道我希望能够控制文档中栅格(可能包含不同大小的 PDF 页面或图像)的位置。如果无法控制附件的位置,我将无法在整个文档中以结构化的方式分发附件。

本问题和之前的问题中提供的所有示例都只提到将一个单独的图形/文本置于页面中央,没有提到同一页面上有多个框。因此我不明白为什么tcbraster需要 a。

据我了解,tcolorboxes除非将它们包含在节点中,否则不能将它们放置在特定位置TiKZtcbrasters仅提供盒子的常规分布,但除非它们牢不可破,否则不能将它们放置在节点中。

Atcolorbox可以明确地将框定位到所需位置,但是tcbposter是牢不可破的,因此有必要为每个页面声明一个 tcbposter。

以下代码展示了将单个图片/页面/文本包含在一个页面中的解决方案tcolorbox。借助选项before和,这些框垂直和水平居中after

引用它们和构建文件列表的问题已像上一个问题一样得到解决。每个文件的第一个包含图像被添加到文件列表中,而其他页面则包含在另一种未列出的框中,尽管它保留了标题、页面等...

也许这个代码可以简化,或者它不能解决所有问题,但是为了改进它,我需要了解需要解决的真正问题是什么,或者应该是期望结果的一个例子。

\documentclass[a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{lipsum}
%
\usepackage[raster,most]{tcolorbox}

\newcounter{mycounter}
%:colorboxa
% [1] Document Name 
% [2] Document Label
% [3] Document page
% [4] Total pages
\newtcolorbox[use counter=mycounter, list inside=files,]{colorboxa}[4]{%
    enhanced,
    sharp corners,
    center, halign=center,
    colframe=red!80!black, coltitle=black, colbacktitle= white,
    colback=white, boxrule=0.2mm,
    borderline={0.2mm}{-3 mm}{blue}, width=\linewidth-6mm, enlarge by=3mm,
    list entry=File~\thetcbcounter: #1,
    label={doc:#2},
    nameref=#1,
    title={File \thetcbcounter: \quad #2 \quad [Page #3\ of #4]},
    before=\vfill\centering, after=\vfill\newpage,
}

%:colorboxb
% [1] Document Name 
% [2] Document Label
% [3] Document page
% [4] Total pages
\newtcolorbox{colorboxb}[4]{%
    enhanced,
    sharp corners,
    center, halign=center,
    colframe=red!80!black, coltitle=black, colbacktitle= white,
    colback=white, boxrule=0.2mm,
    borderline={0.2mm}{-3 mm}{blue}, width=\linewidth-6mm, enlarge by=3mm,
    title={File \themycounter: \quad #2 \quad [Page #3\ of #4]},
    before=\vfill\centering, after=\vfill\newpage,
}

%:filea_environment 
% [1] File Name 
% [2] Number of Pages 
% [3] Document Name 
% [4] Label 
\newcommand{\fileattach}[4]
{%
\foreach \x [count=\nx] in {1,...,#2}{%
\ifnum\nx<2
\begin{colorboxa}{#1}{#3}{\x}{#2}
\includegraphics[page={\x}, width=\linewidth]{#1.pdf}
\end{colorboxa}
\else
\begin{colorboxb}{#1}{#3}{\x}{#2}
\includegraphics[page={\x}, width=\linewidth]{#1.pdf}
\end{colorboxb}
\fi}}

\begin{document}
\tcblistof[]{files}{Files:} % TOC
%% First attchment (1 page image)

\fileattach{example-image}
{1} % Number of Pages
{Doc A} % Document Name
{doa} % Document Label
%% Second attchment (2 page document)
\fileattach
{example-image-letter-numbered}
{3} % Number of Pages
{Doc B} % Document Name
{dob} % Document Label
\fileattach
{example-image-letter-numbered}
{2} % Number of Pages
{Doc C} % Document Name
{dob} % Document Label
\end{document}

在此处输入图片描述

相关内容