代码之家  ›  专栏  ›  技术社区  ›  enanone

svg不会显示包含g标签的文本

  •  0
  • enanone  · 技术社区  · 4 年前

    我把我的问题简化为一个最小的工作示例。此代码段不会显示任何文本:

    <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> 
    <svg viewBox="-361.65944 -228.02199 723.31888 284.92749 ">
        <text > 
            <g fill="#000">
                <g stroke="none">
                    <tspan font-family="cmr" font-size="17">Render</tspan>
                    <tspan font-family="cmr" font-size="17">Process</tspan>
                </g>
            </g>
        </text> 
    </svg>

    现在,如果我评论一下这两个 g 标签,显示文本:

    <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> 
    <svg viewBox="-361.65944 -228.02199 723.31888 284.92749 ">
        <text > 
            <!-- <g fill="#000"> -->
                <!-- <g stroke="none"> -->
                    <tspan font-family="cmr" font-size="17">Render</tspan>
                    <tspan font-family="cmr" font-size="17">Process</tspan>
                <!-- </g> -->
            <!-- </g> -->
        </text> 
    </svg>

    为什么会这样?我通过以下方式生成svg htlatex 出自以下tikz文件:

    \documentclass[tikz]{standalone}
    \def\pgfsysdriver{pgfsys-tex4ht.def} 
    
    \usepackage{tikz}
    \usepackage{anyfontsize}
    \usetikzlibrary{shapes, positioning}
    \begin{document}
    \begin{tikzpicture}[
        main/.style={rounded corners, fill=blue!15, align=center, inner sep=10, text width=6cm, minimum height=4cm, font={\fontsize{50 pt}{40 pt}\selectfont}},
        render/.style={rounded corners, fill=red!15, align=center, inner sep=6, text width=5cm, minimum height=3.5cm, font={\fontsize{40 pt}{40 pt}\selectfont}},
    ]
        \node[main] (main) {Main Process};
        \node[render] [below=of main, xshift=10cm, yshift=-1.5cm] (render1) {Render Process};
        \node[render] [below=of main, xshift=3.2cm, yshift=-1.5cm] (render2) {Render Process};
        \node[render] [below=of main, xshift=-3.2cm, yshift=-1.5cm] (render3) {...};
        \node[render] [below=of main, xshift=-10cm, yshift=-1.5cm] (render4) {Render Process};
    
        \draw [->] (main) -- (render1.north);
        \draw [->] (main) -- (render2.north);
        \draw [->] (main) -- (render3.north);
        \draw [->] (main) -- (render4.north);
    \end{tikzpicture}
    \end{document}
    

    我完全不知道这里发生了什么。我真的很感激任何形式的投入!

    0 回复  |  直到 4 年前
        1
  •  0
  •   enanone    4 年前

    htlatex 不是从latex文件生成svg文件的最佳工具。 pdf2svg 效果更好。转换您的 tex 文件到 svg :

    1. 使用例如将乳胶编译为pdf。 latexmk -pdf main.tex
    2. 使用以下命令将输出pdf转换为svg pdf2svg : pdf2svg main.pdf main.svg

    结果 svg 不会包含您在使用时发现的错误 htlatex main.tex 生产 svg