我刚开始在 latex 文档中使用 gnuplot 代码,遇到了一个问题,经过一番谷歌搜索后,我还是无法解决(如果我谷歌搜索不够深入,请告诉我)。我使用 gnuplottex 包。
我想要做的事情是使用 gnuplot 在我的 latex 文档中绘制多个图。由于某些图处理相关数据,因此我想对相关数据使用相同的颜色/线型(在本例中为颜色)。由于我很懒,我只想在 LaTex 中用十六进制代码声明一次我想要使用的颜色,然后在每个 gnuplot 命令中使用它。
例如:
\documentclass[12pt, a4]{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[url=false, doi=false, isbn=false, sorting=none,style=numeric,maxbibnames=3,maxcitenames=3,backend=bibtex]{biblatex}
\usepackage{gnuplottex}
\newcommand{\myredcolor}{\#FF6666}
\begin{document}
进而 :
\begin{gnuplot}
set terminal epslatex
plot "mydata" title "\\myredcolor" with linespoints linestyle 1 lt rgb "\\myredcolor" lw 3
\end{gnuplot}
显然,它不起作用。在这种情况下,如果出现图(例如,当输入“red”而不是“\myredcolor”)时,我的图的标题将正确为“#FF6666”,这意味着我设法将变量 gnuplot 传递给“title”值,但没有传递给 rgb 值,因为如果我保持这种状态,图将不会出现。
有什么方法可以解决这个问题,或者我必须在每个绘图命令中对这些相关数据的十六进制值进行硬编码?
只是为了尝试,我还检查了线条样式(以防#符号出现问题)但这也不起作用:
\newcommand{\mylinestyle}{1}
进而 :
\begin{gnuplot}
set terminal epslatex
plot "mydata" title "MyData \\mylinestyle" with linespoints linestyle \\mylinestyle lt rgb "red" lw 3
\end{gnuplot}
\end{document}
多谢
答案1
\documentclass{article}
\usepackage{gnuplottex}
\usepackage{letltxmacro}
\LetLtxMacro{\thegnuplot}{\gnuplot} % save original gnuplot env
\LetLtxMacro{\endthegnuplot}{\endgnuplot} %
\def\linecolor#1{%
\renewenvironment{gnuplot}[1][]
{\thegnuplot[##1] s="#1";} % gnuplot string variable "s" gets the color value
{\endthegnuplot}
}
\begin{document}
\linecolor{\#FF0000}
\begin{gnuplot}[scale=0.5]
set terminal epslatex
plot sin(x) title '\'.s with linespoints linestyle 1 lt rgb s lw 10
\end{gnuplot}
\linecolor{\#008800}
\begin{gnuplot}[scale=0.5]
set terminal epslatex
plot cos(x)*exp(-0.1*x) title '\'.s with linespoints linestyle 1 lt rgb s lw 10
\end{gnuplot}
\end{document}