我的 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
,标题\captionof
从caption
包中传递到,以创建与其余图形匹配的标题。
结果是,在第一页的第一列的某处添加整页图像,生成一个新的第二页,如下所示:
\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}