我想用该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}
输出
补充一下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}
输出
答案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