スタンドアロンでは、pstricks でフィギュアのサイズが正しく取得されません。(MWE + 説明付き)

スタンドアロンでは、pstricks でフィギュアのサイズが正しく取得されません。(MWE + 説明付き)

私は現在、比較的長い文書 (約 170 ページ) をタイプセットしています。コンパイル速度の低下を避けるために、図を外部で生成し、経由texでメイン ファイルに含めています。これまでのところ、図のコンパイルで大きな問題は発生していませんが、ツリーを描画するときに問題が発生します。つまり、ツリーを描画するときに、 は図の実際のサイズをまったく考慮しません。問題をさらに説明する前に、問題を示す図をお見せしましょう。pdfsincludegraphicsstandalone

ここに画像の説明を入力してください

これは私の問題を再現する 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)。問題は、スタンドアロンではツリーのサイズを適切に取得できないことです。そのため、不完全なツリーや大きすぎるマージンが得られます。この問題は、次のようにツリーのサイズを正しく指定することで解決できると思われます。

\begin{egame}(0,350)

ここで、(0,350) は幅 0mm、高さ 350mm の数字を示します。しかし、木の正しいサイズをまったく計算できません。木の正しいサイズを指定するのを手伝ってくれる人はいませんか? 描く木がいくつかあり、そのほとんどでこの問題が発生するため、正しいサイズを計算する方法が必要です。したがって、この特定の木のサイズを手動で推測するだけでは不十分です。また、完全なパッケージの PDF を 2 回読んだことにも注意してください。しかし、何をしても、サイズが正確にわかりません。

あるいは、すべてのツリーの正しいサイズを指定するのが難しすぎる場合は、ツリーのサイズが間違って指定された場合でもドキュメントのサイズを正しくするようにstandalone強制する別の方法 (? の仕様を介して)standaloneを誰かが提供できるかもしれません。私にとってはそれで十分です。

また、この問題を生成せず、私が望む出力だけを生成する代替ドキュメントクラスを知っている人がいるかもしれません。そのような解決策でも私には十分でしょう。

図を article としてコンパイルしてから に変換するという方法はeps、私が試したことがありますが、pdfを に変換するとeps、一部の要素 (ギリシャ文字やその他の装飾的な要素など) が変化して奇妙に見えるため、気に入りませんでした。また、epsメインの tex ファイルに を含めるとコンパイル速度が大幅に低下しますが、これはまったく望ましくありません。article ドキュメントクラスを使用して図を生成し、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.1mm に設定されます。最初のノードは から始まり、 左右に100,340のアームが付きます。最後のノードも に設定され、アームは です。これが、pspicture 環境を左下座標と右上に選択した理由です。 のようなものは意味をなさず、幅 0、高さ 350 の描画領域を作成します。2001300,-310200(-200,-500)(1600,400)\begin{egame}(0,350)

答え2

ここで別の解決策を紹介しますistgameパッケージは に基づいていますTikZistgame環境は 環境とほぼ同じですtikzpictureistgameパッケージ (基本的には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}

関連情報