使用公式将 Gnuplot 转换为 SVG 再转换为 LaTeX

使用公式将 Gnuplot 转换为 SVG 再转换为 LaTeX

我在 gnuplot 中创建图表,然后将其导出为 svg 并包含在 LaTeX 文档中。

我想直接在 gnuplot 中输入简单的 LaTeX 公式,这些公式可以正确显示在 LaTeX 文档中。我注意到我可以这样做:

set output "pic.svg"
set terminal svg
set label "$x$" at 1,1
plot 1/0

并且“x”正确排版为斜体,就像在 LaTeX 数学模式中一样。如果我尝试使用更复杂的公式,例如

set label "$\frac{x}{2}$ at 1,1
plot 1/0

我遇到了两个问题:

  1. 导出的 svg 不包含反斜杠和花括号。标签显示为“$fracx2”。
  2. 即使我手动编辑 svg 以添加括号和反斜杠,运行后生成的 pdf

pdflatex --shell-escape 文档.tex

不包含分数。

如何修复?理想情况下,如果可能的话,我会坚持使用 svg-route。

我使用 \usepackage{svg} 、 \includesvg 和 pdflatex 来包含 svg 文件。

答案1

默认情况下,Gnuplot 处于enhanced模式,这意味着检查字符串的格式字符。例如,您可以使用set label "x^{2+3}" at 1,3"结果为上标 ( dy="-6.00px"):

<tspan font-family="Arial" >x</tspan>
<tspan font-family="Arial"  font-size="9.6" dy="-6.00px">2+3</tspan>

但是,如果您想在 LaTeX 中使用 SVG,则无法按预期工作,因为字符{}会被删除,并且文本最终会出现在不同的<tspan>标签中。可以使用 关闭此选项set terminal svg noenhanced

第二个问题是反斜杠\,必须对其进行转义(在它前面加上另一个反斜杠),因为它用作控制字符(例如制表符\t)。

梅威瑟:

set terminal svg noenhanced
set label "$\\frac{x}{3}$" at 1,3
set output "pic.svg"
plot x
unset output
\documentclass{article}
\usepackage{svg}
\begin{document}
\includesvg{pic}
\end{document}

结果:

在此处输入图片描述

相关内容