自动最小化 PDF 输出的页面尺寸

自动最小化 PDF 输出的页面尺寸

我想生成以下 TEX 代码的 PDF 版本,不带边距。如何才能自动实现这一点,即使它需要复杂的代码(我是 Python 的普通用户)?

我希望这样做,以便展示小型 LaTeX 代码的示例,而不会浪费我的网站上的存储空间。

\documentclass[10pt,a4paper]{article}
    \usepackage[utf8x]{inputenc}
    \usepackage{ucs}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}


\begin{document}

\section{One document to display}

How to produce an output without any margin.

\noindent
$ E = m c^2 $ but it seems that we can have $ v > c $.

\end{document}

答案1

我建议你使用包裹varwidth它与环境类似minipage,但设置其宽度以匹配自然宽度较窄根据内容。

可以与以下方式一起使用包裹standalone,或者你可以直接使用包裹preview得到(请注意,此处显示的边框来自我的图像捕获):

在此处输入图片描述

以下是使用该类的 MWE standalone

\documentclass[tightpage]{standalone}
\usepackage{varwidth}
\begin{document}
\begin{varwidth}{\linewidth}
\section{One document to display}

How to produce an output without any margin.

\par\noindent
$ E = m c^2 $ but it seems that we can have $ v > c $.
\end{varwidth}
\end{document}

并使用该preview包:

\documentclass{article}
\usepackage[active,tightpage]{preview}
\usepackage{varwidth}
\begin{document}
\begin{preview}
\begin{varwidth}{\linewidth}
\section{One document to display}

How to produce an output without any margin.

\par\noindent
$ E = m c^2 $ but it seems that we can have $ v > c $.
\end{varwidth}
\end{preview}
\end{document}

我怀疑该类standalone在内部使用preview包来做这样的事情,所以在这种情况下可能没有太大的区别,但如果您需要使用不同的类,它可能会很有用。


如果这是您经常要做的事情,那么值得使用序言中的\AtBeginDocument和来自动化此解决方案。以下是序言中的自动化和使用类的相同代码:\AtEndDocumentbook

\documentclass{book}
\usepackage[active,tightpage]{preview}
\usepackage{varwidth}
\AtBeginDocument{\begin{preview}\begin{varwidth}{\linewidth}}
\AtEndDocument{\end{varwidth}\end{preview}}

\begin{document}
\section{One document to display}

How to produce an output without any margin.

\par\noindent
$ E = m c^2 $ but it seems that we can have $ v > c $.
\end{document}

答案2

您可以将文档配置为没有边距,例如通过geometry包命令或使用standalone正如 Mico 所建议的那样。

但是如果你需要类功能而不能使用standalone,或者你不想更改文档,但想从 PDF 输出中裁剪边距,则可以使用pdfcropempty可以自动裁剪白色边距的脚本。在这里,配置页面样式以删除页码也很有用。

答案3

使用standalone而不是article文档类。除其他事项外,它将非常紧密地裁剪您的 (pdf)latex 运行的输出。例如,以下示例代码的修改(我主要删除了一些不需要的\usepackage指令),

\documentclass[10pt,a4paper]{standalone}
\begin{document}
\section{One document to display}
How to produce output without any margin.

\noindent
$ E = m c^2 $ but it seems that we can have $ v > c $.
\end{document}

将产生以下输出(看不出图像被紧密裁剪,所以你必须相信我的话):

在此处输入图片描述

附录:如果您想要限制生成的 pdf 文件的宽度(文档类设置为)standalone,比如说限制为已知文本字符串的宽度,则可以使用\settowidth序言中的命令来实现。在您提供的示例中,相关字符串是节标题的内容——数字 1、空格(宽度为\quad)和字符串“要显示一个文档”,字体大小全部设置为粗体\Large。因此,您可以输入

\settowidth{\textwidth}{\Large\textbf{1\quad One document to display}}

设置\textwidth宏。

显然,宏\textwidth应该设置为您预期的最长单个文本字符串的宽度。我建议您首先注释掉\settowidth序言中的指令,根据自己的喜好优化文档,然后找出最长的字符串,最后将该字符串作为命令的第二个参数\settowidth。祝您 TeXing 愉快!

相关内容