TikZ 版本

TikZ 版本

据我所知,PNG 没有任何问题,但我遇到了一些奇怪的行为(下面的 MWE)。当我-transparent white从 ImageMagick 选项中删除时,问题就消失了。

平均能量损失

% arara: xelatex: {shell: yes}
\begin{filecontents*}{heart.svg}
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
  <g transform="matrix(26.37104, 0, 0, 24.680786, 232.422821, 233.229111)" style="fill: rgb(223, 0, 0); fill-opacity: 1;">
    <path style="fill:#df0000;fill-opacity:1" d="M 3.676,-9 C 0.433,-9 0,-5.523 0,-5.523 0,-5.523 -0.433,-9 -3.676,-9 -5.946,-9 -8,-7.441 -8,-4.5 -8,-0.614 -1.4208493,3.2938141 0,9 1.35201,3.2985969 8,-0.614 8,-4.5 8,-7.441 5.946,-9 3.676,-9 z"/>
  </g>
</svg>
\end{filecontents*}
\immediate\write18{convert -units PixelsPerInch -size 2000x2000 heart.svg -density 600 -trim -transparent white heart.png}
\documentclass{article}
\usepackage{graphicx}

\newcommand\CHeart[1][]{\includegraphics[width=\linewidth,#1]{heart.png}}

\begin{document}
\CHeart
\end{document}

输出:(有时为空白 pdf,有时为......)

输出

Version: ImageMagick 6.9.6-7 Q16 x86_64 2016-12-07 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules 
Delegates (built-in): bzlib cairo fontconfig freetype jng jpeg ltdl lzma png rsvg tiff xml zlib

-background none在 SVG 之前使用(而不是-transparent white在 PNG 之前)可以得到这幅可爱的“现代艺术”:

输出

答案1

评论太长了。

我确实得到了预期的正常心形,带有透明背景(带有 选项)-transparent white或白色背景(带有 )-background none。编译器:pdflatex -shell-escapexelatex -shell-escape

ImageMagick 版本:6.9.5-7 Q16 x86_64 2016-08-27

XeTeX 版本:3.14159265-2.6-0.99996(TeX Live 2016)

透明背景

\RequirePackage{filecontents}% overwriting environment "filecontents"
\begin{filecontents*}{heart.svg}
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
  <g transform="matrix(26.37104, 0, 0, 24.680786, 232.422821, 233.229111)" style
    <path style="fill:#df0000;fill-opacity:1" d="M 3.676,-9 C 0.433,-9 0,-5.523
  </g>
</svg>
\end{filecontents*}
\immediate\write18{convert -units PixelsPerInch -size 2000x2000 heart.svg -densi
%\immediate\write18{convert -units PixelsPerInch -size 2000x2000 heart.svg -dens
\documentclass{article}
\usepackage{graphicx}
\usepackage{color}

\newcommand\CHeart[1][]{\includegraphics[width=\linewidth,#1]{heart.png}}

\begin{document}
\pagecolor{yellow}
\noindent
\CHeart
\end{document}

透明背景的结果

白色背景

\RequirePackage{filecontents}% overwriting environment "filecontents"
\begin{filecontents*}{heart.svg}
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
  <g transform="matrix(26.37104, 0, 0, 24.680786, 232.422821, 233.229111)" style
    <path style="fill:#df0000;fill-opacity:1" d="M 3.676,-9 C 0.433,-9 0,-5.523
  </g>
</svg>
\end{filecontents*}
%\immediate\write18{convert -units PixelsPerInch -size 2000x2000 heart.svg -dens
\immediate\write18{convert -units PixelsPerInch -size 2000x2000 heart.svg -densi
\documentclass{article}
\usepackage{graphicx}
\usepackage{color}

\newcommand\CHeart[2][]{\includegraphics[width=\linewidth,#1]{heart.png}}

\begin{document}
\pagecolor{yellow}
\noindent
\CHeart
\end{document}

白色背景的结果

标准环境filecontents不会覆盖文件。如果内容发生heart.svg变化,必须先删除该文件,才能在下次编译运行时获取新版本。

该示例使用filecontents始终覆盖文件的包。

\pagecolor{yellow}用于显示不同的背景类型。

TikZ 版本

SVG 文件的路径描述可以直接在 TikZ 中使用来获取矢量图形,无需外部图像文件:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{svg.path}
\usepackage{xcolor}
\usepackage{graphicx}
\definecolor{heartred}{RGB}{223, 0, 0}
\begin{document}
\pagecolor{yellow}
\noindent
\resizebox{\linewidth}{!}{%
  \tikz\fill[heartred, yscale=-1] svg {
    M 3.676,-9 C 0.433,-9 0,-5.523 0,-5.523 0,-5.523 -0.433,-9 -3.676,
    -9 -5.946,-9 -8,-7.441 -8,-4.5 -8,-0.614 -1.4208493,3.2938141 0,
    9 1.35201,3.2985969 8,-0.614 8,-4.5 8,-7.441 5.946,-9 3.676,-9 z
  };%
}
\end{document}

相关内容