将 tikzfigure 导出为 png 时不透明度选项不起作用

将 tikzfigure 导出为 png 时不透明度选项不起作用

我一直在尝试将 tikzfigure 导出为独立的 .png 图片。在互联网上搜索后,我在以下命令中找到了一个很好的答案,我从 Windows 命令提示符启动了该命令:

latexmk mytexfile.tex -shell-escape -f

我得到了令人满意的输出,仅存在几个问题:

  1. 最后一个蓝色条形图仅渲染了一半
  2. (最重要的)“严重性”节点的背景填充应该具有部分不透明度(50%?)而不是以纯白色填充呈现
  3. 如何保证整体图片背景是透明的而不是白色的?

这是我正在编译的代码

\documentclass[preview,border=1mm,convert={density=600,outext=.png}]{standalone}

       
\usepackage{tikz} 
\usepackage{color} 
\usepackage{graphicx}


\usepackage{pgfplots}    \pgfplotsset{/pgf/number format/.cd, 1000 sep={}}
\pgfplotsset{compat=1.17}
\usepackage{listings}
  \lstset{basicstyle=\ttfamily}
\usepackage{tabularx}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\usepackage{comment}
\usepackage{textcomp}
\usepackage{longtable}
%\usepackage{pgf-pie}
\usepackage[toc,page]{appendix}
\usepackage[bibstyle=numeric,citestyle=numeric,backend=biber]{biblatex}
\usetikzlibrary{positioning}
\usetikzlibrary{decorations.pathreplacing,calligraphy,backgrounds}

\usepgfplotslibrary{fillbetween}

\begin{document} 

\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[area style,width=0.8\textwidth, height=6cm, bar width=10pt,axis x line=bottom,axis y line=left, xlabel={time [months]}, ylabel={SPEI},ymin=-3,ymax=2.5]
\addplot+[ybar, color=blue] coordinates {(1,0.15) (2,0.32) (3,1.2) (4,0.8)  (11,0.8) (12,0.8) (13,1.2) (14,2.3) (15,0.7) (16,0.5) (19,1.5) (20,1.1)};
\addplot+[ybar, color=red, mark=no] coordinates {(5,-1.2) (6,-1.72) (7,-1.6) (8,-1.9) (9,-2.1) (10, -1.2) (17,-1.1) (18,-1.5) };
\addplot[color=black] coordinates{(0,0) (20,0)};
\end{axis}
%\draw[help lines] (0,0) grid (10,4);
\draw[<->, black, line width=0.8pt] (1.85,0.3) -- (4.25,0.3);
\node [] at (3.05,0.5) {duration};
\draw[<->, black, line width=0.8pt] (1.7,2.4) -- (1.7,1.35);
\draw [decorate, decoration = {calligraphic brace}] (1.85,2.5) --  (4.25,2.5);
%\draw[dashed,help lines] (2.1,1.1) -- (5.3,1.1);
\node [] at (0.9,1.9) {intensity};
\node at (3.0,1.8) [rectangle,fill=white!50, fill opacity=0.5, draw]  {severity};
\node [] at (3.0,2.75) {severity};
\end{tikzpicture}
\label{fig:spi_car}
\end{figure}

\end{document} 

这是输出 在此处输入图片描述

EDIT1:解决了问题#1,将 x 轴的长度推到 21 而不是 20 就足够了,然后我必须重新调整所有坐标

答案1

感谢评论者和互联网上的一些额外帮助,我找到了对我有用的方法:

  1. 我安装了 ImageMagick,它又需要安装 Ghostscript,然后按照 @vipa 建议的修改运行我的代码

     \documentclass[preview,border=1mm,convert={convertexe={magick convert},density=600,outext=.png}]{standalone}
    
  2. 正如@hpekristiansen 指出的那样,我需要在 TexWorks IDE 中启用 -shell-escape。这很容易做到,只需按照以下步骤操作

  3. 遗憾的是,这还不够,因为 TexWorks 会返回此类错误

    gs:解释器修订版(9561)与 gs_init.ps 修订版(9533)不匹配

这意味着 TexWorks 发现了 Ghostscript 的冲突版本。事实上,通过查看 TexLive 安装文件夹,我注意到 TexLive 中包含一个预安装的简化版 ghostscript,位于名为特尔盖,在 tlpkgs 下。从 TexLive 偏好设置中删除 tlgs 依赖项不是修复了这个问题。最终修复这个问题的是删除 tlgs 文件夹总之,只留下我的 GhostScript 安装,从而避免了冲突。现在,使用 运行时,代码会保存正确呈现的 .png PdfLaTex,而我放弃了latexmk最初使用的方式。

再次感谢这里的每个人以及 GhostScript discord 服务器,那里也有很多好朋友

相关内容