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 или вставьте его из панели инструментов. То же самое для сигмы.