![自动最小化 PDF 输出的页面尺寸](https://linux22.com/image/241923/%E8%87%AA%E5%8A%A8%E6%9C%80%E5%B0%8F%E5%8C%96%20PDF%20%E8%BE%93%E5%87%BA%E7%9A%84%E9%A1%B5%E9%9D%A2%E5%B0%BA%E5%AF%B8.png)
我想生成以下 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
和来自动化此解决方案。以下是序言中的自动化和使用类的相同代码:\AtEndDocument
book
\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 输出中裁剪边距,则可以使用pdfcrop
empty
可以自动裁剪白色边距的脚本。在这里,配置页面样式以删除页码也很有用。
答案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 愉快!