Mathematica 8.0 и PSFRAG - PullRequest
       10

Mathematica 8.0 и PSFRAG

11 голосов
/ 17 июня 2011

Я недавно обновил с mathematica 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 по сравнению с более ранними версиями?

Ответы [ 3 ]

8 голосов
/ 17 июня 2011

Нет разницы в том, как кодируется 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. это способ маркировки имеет три больших преимущества перед жестким кодированием тегов в фигуру. Во-первых, последовательность, так как шрифты будут такими же как те в статье. Второй факт что математический движок LaTeX может быть использованы в полной мере в рамках сюжет. Не в последнюю очередь, это позволяет легко менять обозначения файл .tex, в отличие от необходимости воссоздать сюжет с нуля.


Добавление:

Пакет psfrag работает только с EPS графикой и, следовательно, только с latex. Если вы хотите использовать psfrag и pdflatex, тогда смотрите вопрос tex.SE Использование psfrag с pdflatex

4 голосов
/ 17 июня 2011

Пробовал и 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.

1 голос
/ 17 июня 2011

Вы можете написать форму «typeset» в Mathematica напрямую, тогда она будет уже в файле .eps, и вы можете просто включить .eps как есть.

plot = Plot [x, {x, -0.1, 0.1}, AxesLabel -> {"[\ eps], [\ Sigma]}, BaseStyle -> {FontSize -> 10}]

Просто выполните [esc] +" eps "+[esc] и вы получите эпсилон или вставите его из панели инструментов. То же самое для сигмы.

...