如何将一个巨大的图形分成几个pdf页面?

如何将一个巨大的图形分成几个pdf页面?

我想在我的文章中插入一张大图。这张图片的大小约为670pt*2200pt,所以不能在一页内显示(使用图形环境),我调整了它的宽度,这样\textwidth水平方向的效果就让我满意了,但是垂直方向,图片还是被裁剪在页面的末尾。我不想调整高度,因为我需要这张图片连续显示在几个pdf页面中。

Markdown 语言可以完美完成这个任务,我只插入了这张图片并将 markdown 转换为 pdf。但我的大部分工作都是在 LaTeX 环境中完成的,所以有谁能告诉我如何实现这个功能?

答案1

您可以按通常的方式使用图片,但是\includegraphics具有剪辑选项,可以仅显示图片的某些区域。见下文:

\includegraphics[trim={Lmm Bmm Rmm Tmm}, clip, width=\textwidth]{picture}

L、B、R 和 T 分别表示左边距、下边距、右边距和上边距。

答案2

在此处输入图片描述

\documentclass{article}
\usepackage{adjustbox}
\usepackage{blindtext}
\begin{document}
\blindtext \blindtext \blindtext
\noindent

\adjustbox{trim=3pt {\dimexpr\height-9\baselineskip} 0pt 0pt, clip}{\includegraphics[width=\linewidth]{example-image-b}}
\noindent
\adjustbox{trim=3pt 0pt 0pt 9\baselineskip, clip}{\includegraphics[width=\linewidth]{example-image-b}}

\blindtext

\end{document}

答案3

这是一种手动缝合后续页面上碎片的方法。

程序:

  1. 将原始图像存储在一个框中(称为\origimgbox)。这为我们在整个构建过程中提供了一些工作依据。

  2. 除了图像所在的最后一页之外的每一页上,构建一个包含“当前图像”的框(称为\curimgbox),并将该“当前图像”添加到“累积图像”框(称为\cumimgbox)。

  3. 最后一张图像只是设置为剩余的图像\curimgbox

我们构造框来测量已放置内容和剩余内容的高度。此外,由于图像从页面底部向上放置(通过) minipage,因此 s 设置为其底线。当然,整页放置可以使用,因此我们仅使用计算第一个部分图像[b]\smash\textheight\curimgboxzrefsavepos模块(通过\zsaveposy和可扩展的\zposy宏)。

在此处输入图片描述

\documentclass{article}

\usepackage[paper=a6paper, showframe]{geometry}% Just for this example
\usepackage{lipsum,zref-savepos}
\usepackage[export]{adjustbox}

\newsavebox{\curimgbox}
\newsavebox{\cumimgbox}
\newsavebox{\origimage}

\begin{document}

\savebox{\origimage}{\begin{minipage}[b]{\textwidth}
  \nointerlineskip
  \makebox[\textwidth]{-- top 1 --} \\
  \includegraphics[width=\textwidth]{example-grid-100x100pt}\\
  \makebox[\textwidth]{-- gap 2 --} \\
  \includegraphics[width=\textwidth]{example-grid-100x100pt}\\
  \makebox[\textwidth]{-- gap 3 --} \\
  \includegraphics[width=\textwidth]{example-grid-100x100pt}\\
  \makebox[\textwidth]{-- gap 4 --} \\
  \includegraphics[width=\textwidth]{example-grid-100x100pt}\\
  \makebox[\textwidth]{-- bot 5 --}
\end{minipage}}

\sloppy
\lipsum[1]

\mbox{}\zsaveposy{top}

\vfill

\noindent\zsaveposy{bot}%
\savebox{\curimgbox}{\begin{minipage}[b]{\textwidth}
  \adjustbox{trim=0pt % llx
                  {\dimexpr\ht\origimage-\zposy{top}sp+\zposy{bot}sp-.5\baselineskip} % lly
                  0pt % urx
                  0pt, % ury
                  clip}{\usebox{\origimage}}%
\end{minipage}}%
\smash{\usebox{\curimgbox}}%
\savebox{\cumimgbox}{\usebox{\curimgbox}}%

%%% next page
\clearpage

\mbox{}

\vfill

\noindent
\savebox{\curimgbox}{\begin{minipage}[b]{\textwidth}
  \adjustbox{trim=0pt % llx
                  {\dimexpr\ht\origimage-\ht\cumimgbox-\textheight} %lly
                  0pt %urx
                  {\ht\cumimgbox},% ury
                  clip}{\usebox{\origimage}}%
\end{minipage}}%
\savebox{\cumimgbox}{\begin{minipage}[b]{\textwidth}
  \nointerlineskip
  \usebox{\cumimgbox}\\\usebox{\curimgbox}
\end{minipage}}%
\smash{\usebox{\curimgbox}}

%%% next page
\clearpage

\mbox{}

\vfill

\noindent
\savebox{\curimgbox}{\begin{minipage}[b]{\textwidth}
  \adjustbox{trim=0pt %llx
                  {\dimexpr\ht\origimage-\ht\cumimgbox-\textheight} %lly
                  0pt % urx
                  {\ht\cumimgbox},% ury
                  clip}{\usebox{\origimage}}%
\end{minipage}}%
\savebox{\cumimgbox}{\begin{minipage}[b]{\textwidth}
  \nointerlineskip
  \usebox{\cumimgbox}\\\usebox{\curimgbox}
\end{minipage}}%
\smash{\usebox{\curimgbox}}

%%% last page
\clearpage

\noindent
\savebox{\curimgbox}{\begin{minipage}[t]{\textwidth}
  \adjustbox{trim=0pt %llx
                  0pt %lly
                  0pt % urx
                  {\ht\cumimgbox},% ury
                  clip}{\usebox{\origimage}}%
\end{minipage}}%
\usebox{\curimgbox}

\lipsum[2]

\end{document}

在上面的例子中,构建了一个伪原始图像,它由许多线分隔符(top 1gap 2, ... ,bot 5)和矩形图像(example-grid-100x100pt来自mwe)。

相关内容