Как интегрировать gnuplot в LaTeX?
Доброго времени суток.
Появилась нужна интегрировать gnuplot в LaTeX. Узнал про пакет gnuplottex. У меня стоит Windows 10. Я использую MikTeX и TeXstudio. Пытаюсь построить график - не получается. Выдает следующие ошибки:
'touch' is not recognized as an internal or external command, operable program or batch file.
'rm' is not recognized as an internal or external command, operable program or batch file.
GNUPlot установлена. Сначала я думал нужно прописать путь к gnuplot, оказалось что прописывать ничего не нужно, gnuplot через консоль cmd открывается. Негде посмотрел, что нужно поставить в конфигурации TeXstudio --shell-escape, не помогло. Вот прикладываю скриншот результат вёрстки.
Ответы (1 шт):
Для протокола, замечу, что я считаю плохой идеей таким способом строить графики. Во-первых, практически в любых книгах/документации по LaTeX/TeX пишут, что использовать --shell-escape опасно и лучше не стоит. Во-вторых, производить отладку или доводку рисунка до финальной версии удобнее в одной программе (gnuplot). Единственное положительное качество такого подхода - это использование шрифтов LaTeX. Но этого же результата можно добиться используя пакет psfragx или семейства пакетов pstricks или tikz/pgf.
Что касается пакета gnuplottex. Он был написан для дистрибутива teTeX (и его наследника TeXLive) для использования в системах Unix, поэтому он требует наличия команд touch и rm (и может, еще каких-то команд POSIX). Чтобы использовать этот пакет под MS Windows, как оказалось, достаточно задать опцию [miktex]. Иронично, что я использовал под MS Windows тот же TeXLive, но ему тоже требуется опция miktex.
Как вариант, вместо этой опции можно установить себе программы, типа MSYS, GnuWin32 или GoW, в которых реализуются команды из набора POSIX.
Пример рисунка я взял из документации пакета, но думаю, можно использовать и в том виде, как у автора вопроса. Параметры терминала можно задавать как в опциях окружения (как в примере из документации), так и внутри окружения, командами gnuplot.
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{graphicx}
\usepackage[miktex]{gnuplottex}
\usepackage{lipsum}
\begin{document}
\lipsum[1-1]
\begin{figure}[h]%
\centering%
\begin{gnuplot}[terminal=epslatex, terminaloptions=color dashed]
set key box top left
set key width 2
set key opaque
set sample 1000
set xr [-5:5]
set yr [-1:1]
set xlabel '$x$-label'
set ylabel '$y$-label'
plot sin(x) w l lc 1 lw 3 t '$\sin(x)$',\
cos(x) w l lc 2 lw 3 t '$\cos(x)$',\
tan(x) w l lc 3 lw 3 t '$\tan(x)$',\
tanh(x) w l lc 4 lw 3 t '$\tanh(x)$'
\end{gnuplot}
\caption{This is a simple example using the epslatex-terminal.}%
\label{pic:epslatex}%
\end{figure}%
\lipsum[2-1]
\end{document}
Компиляцию производил и через latex + dvips + ps2pdf и через pdflatex (естественно, в обоих вариантах с опцией --shell-escape). В последнем случае, рисунок был автоматически преобразован из EPS в формат PDF.
Результат:

