我在 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
我遇到了两个问题:
- 导出的 svg 不包含反斜杠和花括号。标签显示为“$fracx2”。
- 即使我手动编辑 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}
结果: