PSTricks и LaTeX против pdfLaTeX

PSTricks и LaTeX против pdfLaTeX

Я пытаюсь преобразовать свою диссертацию в pdfLaTeX, так как latex+ dvipsведет себя ужасно, когда дело доходит до разрыва (очень длинных) URL-адресов... Я использую последнюю версию TeXLive 2012 на Linux.

Единственная проблема (пока что) заключается в том, что я активно использовал pstricksи связанные с ними пакеты, и мне не удалось заставить их нормально работать pdfLaTeX(см. мои рисунки) при взаимодействии между различными pspictureсредами (иногда я также использую это, чтобы иметь текст, непосредственно связанный с рисунками ниже):


latex+ dvips+ ps2pdf(гс)

латекс


pdflatex(стрелка отсутствует)

pdflatex


Код для примера выше:

\documentclass[12pt]{scrbook}   
\PassOptionsToPackage{pdf}{pstricks} %used for pdflatex
\usepackage{pstricks,pst-plot,pst-node,pst-func}

\begin{document}

\begin{pspicture}(-1.5,0)(1.5,4)
    \psTextFrame[ref=c,linestyle=none](-1.5,3)(1.5,4){First Plot}
    \psplot[fillcolor=blue!30,fillstyle=solid,opacity=0.5]{-1.5}{1.5}{x 0 0.3 GAUSS}
    \psaxes[labels=none,ticks=none]{->}(-1.5,0)(1.5,3)
    \pnode(1.5,0.5){A}
\end{pspicture}
\vspace{5mm}
\begin{pspicture}(-1.5,0)(1.5,4)
    \psTextFrame[ref=c,linestyle=none](-1.5,3)(1.5,4){Second Plot}
    \psplot[fillcolor=blue!30,fillstyle=solid,opacity=0.5]{-1.5}{1.5}{x 0 0.6 GAUSS}
    \psaxes[labels=none,ticks=none]{->}(-1.5,0)(1.5,3)
    \pnode(1.5,0.5){B}
    \nccurve{->}{A}{B}
\end{pspicture}

\end{document}

решение1

Несколько pspictureсред, как абзацы, могут быть инкапсулированы средой postscript:

\documentclass[12pt]{scrbook}   
\PassOptionsToPackage{pdf}{pstricks} %used for pdflatex
\usepackage{pstricks,pst-plot,pst-node,pst-func}

\begin{document}

\begin{postscript}%%%%%%%%%%%%%%
\begin{pspicture}(-1.5,0)(1.5,4)
    \psTextFrame[ref=c,linestyle=none](-1.5,3)(1.5,4){First Plot}
    \psplot[fillcolor=blue!30,fillstyle=solid,opacity=0.5]{-1.5}{1.5}{x 0 0.3 GAUSS}
    \psaxes[labels=none,ticks=none]{->}(-1.5,0)(1.5,3)
    \pnode(1.5,0.5){A}
\end{pspicture}

\begin{pspicture}(-1.5,0)(1.5,4)
    \psTextFrame[ref=c,linestyle=none](-1.5,3)(1.5,4){Second Plot}
    \psplot[fillcolor=blue!30,fillstyle=solid,opacity=0.5]{-1.5}{1.5}{x 0 0.6 GAUSS}
    \psaxes[labels=none,ticks=none]{->}(-1.5,0)(1.5,3)
    \pnode(1.5,0.5){B}
    \nccurve{->}{A}{B}
\end{pspicture}
\end{postscript}%%%%%%%%%%%%%%

\end{document}

который будет обработан как единое изображение. Мой pdflatexвывод:

введите описание изображения здесь

Внутри postscriptокружения может быть что угодно, кроме разрыва страницы. Оно всегда будет обрабатываться как графика, которая сохраняется в <file>-pics.pdf, по одной странице на изображение (если у вас больше окружений).

решение2

Метод 1 (если вы настаиваете на использовании pdflatex)

Когда мы используем pdflatex для компиляции кода PSTricks, узлы должны находиться на одной физической странице вспомогательного PDF-файла, созданного в фоновом режиме.

Ваш исходный код делает так, что первая и вторая цифры находятся на разных физических страницах. А именно, первая находится на странице, xа другая — на странице, yгде x=/=y.

Чтобы сделать их на одной физической странице, мы можем поместить их в другую pspictureкак контейнер. Смотрите мой код ниже для деталей.

\documentclass[12pt]{scrbook}   
\PassOptionsToPackage{pdf}{pstricks} %used for pdflatex
\usepackage{pstricks,pst-plot,pst-node,pst-func}

\begin{document}

\begin{pspicture}(-1.5,-4.25)(1.5,4.25)
\rput[b](0,0.25){%
\begin{pspicture}(-1.5,0)(1.5,4)
    \psTextFrame[ref=c,linestyle=none](-1.5,3)(1.5,4){First Plot}
    \psplot[fillcolor=blue!30,fillstyle=solid,opacity=0.5]{-1.5}{1.5}{x 0 0.3 GAUSS}
    \psaxes[labels=none,ticks=none]{->}(-1.5,0)(1.5,3)
    \pnode(1.5,0.5){A}
\end{pspicture}}
%
\rput[t](0,-0.25){%
\begin{pspicture}(-1.5,0)(1.5,4)
    \psTextFrame[ref=c,linestyle=none](-1.5,3)(1.5,4){Second Plot}
    \psplot[fillcolor=blue!30,fillstyle=solid,opacity=0.5]{-1.5}{1.5}{x 0 0.6 GAUSS}
    \psaxes[labels=none,ticks=none]{->}(-1.5,0)(1.5,3)
    \pnode(1.5,0.5){B}
    \nccurve{->}{A}{B}
\end{pspicture}}
\end{pspicture}
\end{document}

Метод 2 (если вы готовы использовать xelatex)

Не изменяя исходный код, просто скомпилируйте его с помощью xelatex. Готово!

Связанный контент