双列文档中带有 TikZ 叠加的全页浮动图形?

双列文档中带有 TikZ 叠加的全页浮动图形?

我的 LaTeX 文档有一个奇怪的问题。我有一个twocolumn文档,想包含一个分布在整个新页面上的图形,其中包含一个 TikZ 图片(我可以在其中输入给定的 JPG 或 PDF 图像以填充整个页面,并用白框覆盖它作为标题)。

我迄今为止失败的尝试包括:

  • 不幸的是,该wallpaper包无法将图像放在新页面上
    • wallpaper与-结合figure似乎也不起作用。
  • 这个\vspace选项看起来非常混乱。基本上,它搞乱了我的图像的 DPI,因此在打印时图像像素不会与打印机点完全重叠。
  • afterpage包,但是这不起作用,因为我的文本twocolumn显然\afterpage甚至在分栏之后就被执行了。
  • pdfpages但这样我就无法覆盖标题框
    • pdfpages结合\usetikzlibrary[external]将 TikZ 图片(背景 + 标题)输出为 PDF,然后再次包含它,但这似乎不起作用,因为pdfpages会立即中断文本,而不是等到当前页面之后才“浮动”图形。

任何想法都将不胜感激。基本上,我需要的看起来很简单,只需在文本的任意位置放置一个命令,完成此页面后,我会得到一个新的空白页面来放置我的 TikZ 图片,然后继续显示正常文本。但这似乎不可能实现。我遗漏了什么吗?

感谢您的时间,

A13

答案1

该解决方案将使用以下组合:atbegshi\AtBeginShipout适当的方式将图像浮动到下一页的例程;eso-pic允许\AddToShipoutPictureBG我们在插入页面的背景中绘制全屏图片的例程;以及tikz叠加标题的例程。

创建新命令:

设置整页图形的新命令

用法:\fullpagefig{<filename>}{<caption>}

文件名直接发送到\includegraphics,标题\captionofcaption包中传递到,以创建与其余图形匹配的标题。

结果是,在第一页的第一列的某处添加整页图像,生成一个新的第二页,如下所示:

第1页

第2页

第3页

\documentclass[]{article}

\usepackage{multicol} % For two column
\usepackage{blindtext} % For dummy text

\usepackage{eso-pic}
\usepackage{caption}
\usepackage{tikz}
\usepackage{atbegshi}

% New command to set full-page figure
% Usage: \fullpagefig{<filename>}{<caption>}
\newcommand{\fullpagefig}[2]{%
\AtBeginShipoutNext{ % At the end of the page...
\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox % Ship the current page as is
\stepcounter{page} % Increment page counter to account for new page
% On next page, add the image in the background
\AddToShipoutPictureBG*{
\put(0,0){\parbox[b][\paperheight]{\paperwidth}{
\vfill\centering
\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{#1}
\vfill}}
% tikz picture to include the caption overlay
\begin{tikzpicture}[remember picture,overlay]
    \noindent\node[fill=white] 
    at (0.5\paperwidth,3cm) % placement from bottom-left corner of page
    {\begin{minipage}{3in} % width of the box
    % This will provide a caption numbered and styled like the rest of the figures
    \captionof{figure}{#2}
    \end{minipage}};\end{tikzpicture}
}\shipout\hbox{} % Make a blank page to put the picture on
}}

\begin{document}
\begin{multicols}{2}

\blindtext

{\LARGE Place on next page.}
\fullpagefig{example-image-9x16}{This is a caption of the full page diagram.}

\blindtext[4]

\end{multicols}
\end{document}

编辑:对于twocolumn模式(而不是multicols

以下代码twocolumn以与上述相同的方式对模式起作用。请注意,这两种解决方案似乎在任何方向上都不能互换。

\documentclass[twocolumn]{article}

\usepackage{blindtext} % For dummy text

\usepackage{eso-pic}
\usepackage{caption}
\usepackage{tikz}
\usepackage{atbegshi}

% New command to set full-page figure
% Usage: \fullpagefig{<filename>}{<caption>}
\newcommand{\fullpagefig}[2]{%
\AtBeginShipoutNext{ % At the end of the page...
\AtBeginShipoutOriginalShipout\box\AtBeginShipoutBox % Ship the current page as is
% On next page, add the image in the background
\AddToShipoutPictureBG*{
\put(0,0){\parbox[b][\paperheight]{\paperwidth}{
\vfill\centering
\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{#1}
\vfill}}
% tikz picture to include the caption overlay
\begin{tikzpicture}[remember picture,overlay]
    \noindent\node[fill=white] 
    at (0.5\paperwidth,3cm) % placement from bottom-left corner of page
    {\begin{minipage}{3in} % width of the box
    % This will provide a caption numbered and styled like the rest of the figures
    \captionof{figure}{#2}
    \end{minipage}};\end{tikzpicture}}
\vbox{\thispagestyle{empty}}\clearpage % Make a blank page to put the picture on
}}

\begin{document}

\blindtext

{\LARGE Place on next page.}
\fullpagefig{example-image-9x16}{This is a caption of the full page diagram.}

\blindtext[7]

\end{document}

答案2

这有帮助吗?tikzpicture如果您不将其放在新页面上,它将位于文本后面。

\documentclass[a4paper]{article}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{multicol}
\usepackage{lipsum}
\begin{document}
\begin{multicols}{2}
\lipsum[1-5]
\newpage
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.center) 
    {\includegraphics[width=\paperwidth]{example-image-9x16}};
\node [fill=white] at (current page.center) {\Large caption text};
\end{tikzpicture}
\newpage
\lipsum[1-5]
\end{multicols}
\end{document}

相关内容