Не получается правильно определить размер фигуры с помощью pstricks! (MWE + объяснение включено)

Не получается правильно определить размер фигуры с помощью pstricks! (MWE + объяснение включено)

В настоящее время я набираю довольно длинный документ (около 170 страниц); и чтобы избежать замедления компиляции, я генерирую рисунки извне и включаю их в основной texфайл как pdfsчерез includegraphics. До сих пор у меня не было серьезных проблем с компиляцией рисунков, но они возникают, когда я рисую деревья. А именно, когда я рисую деревья, standaloneвообще не учитывается реальный размер рисунка. Прежде чем объяснить мою проблему дальше, позвольте мне показать вам рисунок, который иллюстрирует мою проблему:

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

Это MWE, воспроизводящий мою проблему:

\documentclass[]{standalone}
\usepackage{tikz} % To plot almost everything.
\usepackage{pstricks,pst-node,egameps} % To get extensive form games. 

\begin{document}
\begin{egame}(0,350)
\putbranch(100,340)(2,1){200}
\iib{$1$}[o]{$D$}{$A$}[c][$1,1$][]
\putbranch(300,240)(2,1){200}
\iib{$2$}[o]{$D$}{$A$}[c][$0,3$][]
\putbranch(500,140)(2,1){200}
\iib{$1$}[o]{$D$}{$A$}[c][$2,2$][]
\putbranch(700,40)(2,1){200}
\iib{$2$}[o]{$D$}{$A$}[c][$1,4$][]
\putbranch(900,-60)(2,1){200}
\iib{$1$}[o]{$D$}{$A$}[c][$3,3$][$...$]
\putbranch(1100,-210)(2,1){200}
\iib{$1$}[o]{$D$}{$A$}[c][$99,99$][]
\putbranch(1300,-310)(2,1){200}
\iib{$2$}[o]{$D$}{$A$}[c][$98,101$][$100,100$]
\end{egame}
\end{document}

Я рисую деревья с помощью egamepsпакета (полная документация здесь:https://www.economics.utoronto.ca/osborne/latex/egameps.pdf), потому что у него простой синтаксис, и он является стандартом при наборе Теории игр. Поэтому я ХОЧУ придерживаться этого пакета, который опирается на pstricks(он также может работать с ним pdftricksвместо этого). Дело в том, что я не могу получить standalone, чтобы правильно получить размер дерева; следовательно, получаю неполные деревья или/и слишком большие поля. Предположительно, проблема может быть решена путем правильного указания размера дерева в:

\begin{egame}(0,350)

Где (0,350) указывает на фигуру шириной 0 мм и высотой 350 мм. Однако я совершенно не могу вычислить правильный размер дерева. Может ли кто-нибудь помочь мне указать правильный размер дерева? Мне нужен способ вычислить правильный размер, потому что мне нужно нарисовать несколько деревьев, и у меня есть эта проблема с большинством из них. Поэтому ручного определения размера этого конкретного дерева недостаточно. Обратите также внимание, что я дважды прочитал полный пакет pdf; но что бы я ни делал, я никогда не получаю правильный размер.

В качестве альтернативы, если указание правильного размера каждого дерева слишком сложно; может быть, кто-то может предоставить альтернативный способ (через спецификацию в standalone?), чтобы заставить standaloneполучить правильный размер документа, даже если размер дерева указан неправильно. Этого было бы достаточно для меня.

Также, возможно, кто-то знает альтернативный documentclass, который не будет генерировать эту проблему, а просто выведет желаемый мной результат. Такое решение также было бы для меня достаточным.

Обратите внимание, что компиляция рисунка как статьи и последующее его преобразование в eps— это то, что я пробовал, и мне это НЕ нравится, потому что при преобразовании pdfв epsнекоторые вещи (например, греческие буквы или другие причудливые штуки) меняются и выглядят странно. Кроме того, включение epsв мой основной файл tex сильно замедляет компиляцию, а я этого как раз не хочу. Хотя я мог бы сгенерировать рисунок с помощью article documentclass, затем преобразовать в eps, а затем снова вернуть eps в pdf с правильными размерами, я не думаю, что это хорошее рабочее решение (это требует больших временных затрат, а причудливые штуки вроде греческих букв все равно будут неправильными).

Если кто-то сможет мне с этим помочь, я буду ОЧЕНЬ рад (я понимаю, что это очень пользовательский вопрос, и понимаю, что могу не получить на него ответа; но мне нужно сделать это правильно!).

решение1

Код egameполностью глючный. Внутреннее определение pspictureимеет совершенно неправильные координаты. Однако вы можете использовать вместо этого непосредственно окружение pspicture:

\documentclass[pstricks]{standalone}
\usepackage{pstricks,pst-node,egameps} % To get extensive form games. 

\begin{document}
\psset{unit=0.1mm}\initialtrue
\begin{pspicture}(-200,-500)(1600,400)
    \putbranch(100,340)(2,1){200}
    \iib{$1$}[o]{$D$}{$A$}[c][$1,1$][]
    \putbranch(300,240)(2,1){200}
    \iib{$2$}[o]{$D$}{$A$}[c][$0,3$][]
    \putbranch(500,140)(2,1){200}
    \iib{$1$}[o]{$D$}{$A$}[c][$2,2$][]
    \putbranch(700,40)(2,1){200}
    \iib{$2$}[o]{$D$}{$A$}[c][$1,4$][]
    \putbranch(900,-60)(2,1){200}
    \iib{$1$}[o]{$D$}{$A$}[c][$3,3$][$...$]
    \putbranch(1100,-210)(2,1){200}
    \iib{$1$}[o]{$D$}{$A$}[c][$99,99$][]
    \putbranch(1300,-310)(2,1){200}
    \iib{$2$}[o]{$D$}{$A$}[c][$98,101$][$100,100$]
\end{pspicture}
\end{document}

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

Внутренняя единица измерения установлена egame​​на 0,1 мм, если не изменена пользователем. Первый узел начинается 100,340с плечами 200слева и справа. Последний узел установлен на 1300,-310также с плечами 200. Вот почему я выбрал для среды pspicture координаты в нижнем левом углу (-200,-500)и верхнем правом углу (1600,400). Что-то вроде \begin{egame}(0,350)не имеет смысла: он создает область рисования шириной 0 и высотой 350.

решение2

Вот еще одно решение для использованияistgameпакет, который основан на TikZ. istgameОкружение почти такое же, как и tikzpictureокружение. С istgameпакетом (в основном tikz tree) вам не нужно беспокоиться о поиске правильных координат. Вместо этого вы можете использовать \xtdistanceдля определения формы игрового дерева.

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

\documentclass[border=1pt]{standalone}

\usepackage{istgame}

\begin{document}

\begin{istgame}[scale=1]
% tree
\tikzset{oval node/.style={ellipse node,draw=none}}
\xtdistance{15mm}{50mm}
% \xtdistance{15mm}{30mm}
\istrooto(0){1}
  \istb{D}[fill=white]{1,1}
  \istb{A}[fill=white]
  \endist
\istrooto(1)(0-2){2}
  \istb{D}[fill=white]{0,3}
  \istb{A}[fill=white]
  \endist
\istrooto(2)(1-2){1}
  \istb{D}[fill=white]{2,2}
  \istb{A}[fill=white]
  \endist
\istrooto(3)(2-2){2}
  \istb{D}[fill=white]{1,4}
  \istb{A}[fill=white]
  \endist
\istrooto(4)(3-2){1}
  \istb{D}[fill=white]{3,3}
  \istb{A}[fill=white]{\dots}
  \endist
\istrooto(5)([yshift=-5mm]4-2){1}
  \istb{D}[fill=white]{99,99}
  \istb{A}[fill=white]
  \endist
\istrooto(6)(5-2){2}
  \istb{D}[fill=white]{98,101}
  \istb{A}[fill=white]{100,100}
  \endist
\end{istgame}

\end{document}

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