自动将 LaTeX 文档编译为 PNG

自动将 LaTeX 文档编译为 PNG

我想将化学路易斯结构导出为透明的 PNG 文件,以便在 Word 文档中使用它们。

所以我想实现这个帖子。我就是不能让它工作,因为我对 LaTeX 的理解非常有限。

这是我的代码:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{verbatim}
\pagenumbering{gobble}
\usepackage{chemfig}
\usepackage[version=4]{mhchem}
\renewcommand*\printatom[1]{\sffamily{#1}}
\newcommand*\forcelen[1]{#1/\CF@atom@sep}
\newcommand{\pol}[2][red]{$\color{#1} \delta^{#2}$}

\begin{document}

\chemfig{
    \charge{135:5pt=\pol{+}}{Si}
    (-[0]\charge{0=\|,90=\|,270=\|,0:9pt=\pol[blue]{-}}{Br})
    (-[2]\charge{0=\|,90=\|,180=\|,90:8pt=\pol[blue]{-}}{Br})
    (-[4]\charge{90=\|,180=\|,270=\|,180:8pt=\pol[blue]{-}}{Br})
    (-[6]\charge{0=\|,180=\|,270=\|,270:7pt=\pol[blue]{-}}{Br})}

\end{document}

它看起来是这样的:

在此处输入图片描述

当我使用\documentclass{standalone}它将文档裁剪得太近时:

在此处输入图片描述

在上面提到的帖子中,OP写道:

有一个边框类选项,用于设置内容周围的边框(默认值为 0.5bp)。此选项可以接受一个值(所有边的边框)、两个值(左/右、上/下)或四个值(左、下、右、上)。

但我不知道如何实现边界。

关于 PNG 输出,另一位用户写道这个 Shell 脚本但我不知道如何使用它。我需要将脚本保存在哪里,以及在 LaTeX 文档中调用它的代码应该放在哪里?

答案1

您可以尝试使用韋斯維爾将您的文档转换为 .svg 文件,然后如果需要,转换为 .png 文件。

您必须下载此文件,然后您可以在与.tex 文件相同的文件夹中创建一个.bat 文件(例如,converter.bat),然后输入以下代码:

@echo off
path=C:\Program Files\MiKTeX 2.9\miktex\bin\x64;%path%;
dvisvgm --pdf --no-fonts myfile.pdf myflie.svg
@echo on

然后您可以在创建 pdf 文件后运行它,然后就可以了。

答案2

您必须使用外部工具,如转换,如您引用的帖子中所述。如果您想在四个边框处使用相同的边距,边框选项非常简单:

\documentclass[border=15mm]{standalone}

Latex 可以自动调用该外部工具。例如,以另一个问题

\documentclass[convert={density=300,size=1080x800,outext=.png}, border=15mm]{standalone}

注意,您必须安装了转换程序,并且必须使用-shell-escape选项调用 latex。

不同的方法是使用tikz及其external库。

\documentclass[a4paper]{article}

\usepackage{tikz}
\usetikzlibrary{external}
\tikzset{
  external/system call/.add=
  {}%
  {; convert -density 300 -transparent white "\image.pdf" "\image.png"},
  /pgf/images/external info,
}
\tikzexternalize[prefix=dir/]

\begin{document}


A figure to export
% Optional: you can set the filename of the following picture:
%\tikzsetnextfilename{filename} 
\begin{tikzpicture}
   \node[text width=\linewidth]
   {%
      Your latex code here: \[x=1\]
   };
\end{tikzpicture}

Another figure

\begin{tikzpicture}
   \node[text width=\linewidth]
   {%
      Other latex code here: \[x^2=1\]
   };
\end{tikzpicture}
\end{document}

本例中目录dir必须存在,然后pdflatex --shell-escape生成两个png文件:

dir/test-figure0.png
dir/test-figure1.png

每张图片的文件名可以用 \tikzsetnextfilename{filename}

相关内容