Mathematica 8.0 и psfrag
Недавно я обновился с математической версии 7.0 до 8.0 и теперь столкнулся с проблемой замены моих меток наложения кодом LaTeX с помощью пакета psfrag. Все отлично работало с более ранней версией и точно такими же сюжетами, но теперь psfrag оставляет все ярлыки неизменными. Я использую Kile на Ubuntu 11.04 для редактирования LaTeX.
Например, в Mathematica:
plot = Plot[x, {x, -0.1, 0.1},
AxesLabel -> {eps, SUM}, BaseStyle -> {FontSize -> 10}]
Export["plot.eps", plot]
а затем в LaTeX:
\begin{figure}
\psfrag{eps}{$\epsilon$}
\psfrag{SUM}{$\Sigma$}
\includegraphics{plot.eps}
\end{figure}
Теперь это должно заменить метки с помощью набора LaTeX, но ничего не происходит. Любые предложения, как это решить? Кто-нибудь знает, есть ли разница в том, как Mathematica 8 кодирует текст в файлах eps по сравнению с более ранними версиями?
Ответы
Ответ 1
Нет никакой разницы в том, как кодируется EPS. Проблема заключается в том, что PS-код, который делает текст в выходном файле v7 (обратите внимание, что Mma использует bind def
для создания ярлыков для большого количества PS-кода, см. Верхнюю часть сгенерированных файлов EPS для деталей):
%%IncludeResource: font Times-Roman-MISO
%%IncludeFont: Times-Roman-MISO
10 /Times-Roman-MISO Msf
0 8 m
(SUM) N
был заменен в v8 на
%%IncludeResource: font Times-Roman-MISO
%%IncludeFont: Times-Roman-MISO
10 /Times-Roman-MISO Msf
p
0.75 9 m
(S) N
P
p
6 9 m
(U) N
P
p
14.25 9 m
(M) N
Это означает, что psfrag
не может захватить теги.
Я не могу найти, как это исправить в параметрах экспорта Mma.
В настоящий момент я могу думать о единственном обходе (и я тестировал это) - использовать теги с одной буквой для меток осей, например.
plot = Plot[x, {x, -0.1, 0.1}, AxesLabel -> {"e", "s"},
BaseStyle -> {FontSize -> 10}]
Export["plot8.eps", plot]
\begin{figure}[h]
\psfrag{e}{$\epsilon$}
\psfrag{s}{$\Sigma$}
\includegraphics{plot8.eps}
\end{figure}
Примечание:
Причины, по которым возможно использовать psfrag
, хорошо указаны в http://www.reimeika.ca/marco/prettyplots/
Теперь эти теги не выглядят слишком хорошо (и мало смысла загружаться). Однако идея состоит в том, чтобы в конечном счете включить сюжет в документ или отчет сделанный с помощью LaTeX, и поэтому реальная точка к тегам следует использовать их в качестве маркеров для пакета psfrag, который позволяет замените текст в графиках EPS. Эта способ маркировки имеет три больших преимущества перед hardcoding тегами в цифру. Во-первых, поскольку шрифты будут такими же, как те в статье. Во-вторых, факт что математический движок LaTeX может в максимально возможной степени сценарий. И последнее, но не менее важное: позволяет легко изменять обозначения .tex файл, в отличие от воссоздайте сюжет с нуля.
Добавление:
Пакет psfrag
работает только с графикой EPS
и, следовательно, только с latex
.
Если вы хотите использовать psfrag
и pdflatex
, см. Вопрос tex.SE
Использование psfrag с pdflatex
Ответ 2
Пробовал и 7.0.1 и 8.0.1, и работал хорошо для меня. Следовательно, я не могу воспроизвести вашу ошибку. (Может быть, только опечатка, чувствительность к регистру и т.д.). В любом случае, я согласен с тем, что модификация LateX почти обязательна для публикаций. Сначала я также использовал PSFrag, но очень часто мне также не нравится позиционирование меток, особенно если вы размещаете более сложные выражения. Поэтому я предлагаю промежуточный шаг через PSTricks. Это выглядит примерно так:
\documentclass[floatfig,isolatin,amsthm,amsmath,amsfont,amstext,12pt,fullpage,pslatex,amsref]{scrartcl}
\usepackage{amstext}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{float}
\usepackage{epic}
\usepackage{eepic}
\usepackage{color}
\pagestyle{empty}
\usepackage{pstricks}
\begin{document}
\begin{pspicture}(0,0)(13.0,7.8)
%\psgrid(0,0)(0,0)(13,7.8)
% need the grid only in the beginning for positioning
\rput[c](10.7,3.8){\includegraphics{plot.eps}}
% put labels.
\rput[c]{90}(9.5,4){\Large{$\frac{E^2_\text{tot}}{V M_\mathrm{S}}$}}
\rput[c]{0}(6,6.0){$x/h$}
% also to put extra lines, arrows, comments, etc. in LaTeX style, e.g.:
% \psline[linecolor=green,linewidth=2pt,linestyle=dashed]{->}(3.5,3.05)(9.1,3.05)
\end{pspicture}
\end{document}
Итак, есть некоторая работа, которую вы должны сделать вручную, но обычно это стоит того, так как результат действительно выглядит лучше, особенно если он предназначен для публикации. Однако имейте в виду, что в стандартных настройках LaTeX использует Computer Modern Font для формул. Это не идентично, например, Times New Roman, типичный выбор текста. Вы можете изменить это с помощью пакета mathptmx.
Ответ 3
Вы можете написать форму "набора" в Mathematica напрямую, тогда она будет уже в файле .eps, и вы можете просто включить .eps как есть.
plot = Plot [x, {x, -0.1, 0.1}, AxesLabel → {"[\ eps], [\ Sigma]}, BaseStyle → {FontSize → 10}]
Просто выполните [esc] + "eps" + [esc], и вы получите epsilon или вставьте его из панели инструментов. То же самое для сигмы.