В настоящее время я набираю довольно длинный документ (около 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}