无法在独立包中设置 PNG 输出的像素密度

无法在独立包中设置 PNG 输出的像素密度

我想用该standalone包输出 PNG 图像。这是一个最小的工作示例:

\documentclass[preview, convert={density=300}]{standalone}

\begin{document}
    Hello world
\end{document}

当我检查生成的 PNG 文件的文件属性时,我仍然得到 72 dpi。即使不使用该preview选项,它仍然是 72 dpi。但是,如果我使用 转换为 JPG convert={density=300, outext=.jpg},我会得到 300 dpi。

如何修复此问题?我的特定要求是使用该preview选项并使用 PNG 图像格式。

答案1

软件包手册指出“使用以下默认设置:PNG 格式、密度为 300dpi、没有明确尺寸 [...]”。

density=300因此,这不会导致不同的输出,这并不奇怪。

我不会相信结果文件的“文件属性”。图片查看器(或您的操作系统)如何知道英寸是多少?现在它只是输出端的像素。

请考虑以下示例,其中我排版了一个黑色的 1 英寸 x 1 英寸的正方形。

输出.png为 300 像素 x 300 像素。

代码

\documentclass[
    preview,
    convert% uses default settings: density=300 and png
]{standalone}

\begin{document}
    \rule{1in}{1in}
\end{document}

输出

enter image description here


补充一下egreg的评论:

代码

\documentclass[preview,convert]{standalone}
\usepackage{printlen}\uselengthunit{in}
\newlength{\myWidth} \newlength{\myHeight}
\sbox0{Hello world}
\setlength{\myWidth}{\wd0}\setlength{\myHeight}{\ht0}
\begin{document}
\printlength\myWidth${}\times{}$\printlength\myHeight\ (\the\wd0 ${}\times{}$\the\ht0)
\end{document}

输出

enter image description here

答案2

我遇到了同样的问题,发现转换命令忽略了密度设置,除非我明确设置单位。也就是说,命令

convert -density 300 foo.pdf foo.png

生成一个 72 dpi 的 png 文件,但命令

convert -density 300 -units pixelsperinch foo.pdf foo.png

生成 300 dpi 的 png 文件。因此我怀疑问题不在于独立版本,而在于 ImageMagick 设置。此时我放弃了,只是创建了一个 AUCTeX 命令,在对 pdf 文件进行 LaTeX 处理后,向其发出正确的 shell 命令,但这可能为其他人提供了提示。

如果您想尝试使用 AucTeX 的解决方案,请在 AUCTeX 中自定义 Tex 命令列表并添加运行的命令

 mogrify -density 300 -units pixelsperinch -format png %P

相关内容