獨立使用 pstricks 無法獲得正確的圖形尺寸! (MWE + 包括說明)

獨立使用 pstricks 無法獲得正確的圖形尺寸! (MWE + 包括說明)

我目前正在排版一個比較長的文檔(大約170頁);為了避免減慢編譯速度,我在外部產生數字,並將它們tex作為pdfsvia包含在主文件中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)的套件。問題是我無法獨立地正確取得樹的大小;因此得到不完整的樹或/和太大的邊距。據說可以透過在以下位置正確指定樹的大小來解決該問題:

\begin{egame}(0,350)

其中(0,350)表示寬度為0mm、高度為350mm的數字。但是,我絕對無法計算樹的正確大小。有人能幫我指定樹的正確尺寸嗎?我需要一種方法來計算正確的大小,因為我有幾棵樹要繪製,而且大多數樹都遇到這個問題。因此,手動估計該特定樹的大小是不夠的。另請注意,我已經閱讀了完整的 pdf 包兩次;但無論我做什麼,我都無法獲得正確的尺寸。

或者,如果指定每棵樹的正確大小太困難;也許有人可以提供一種替代方法(通過?中的規範standalone)來強制standalone獲得正確的文檔大小,即使樹大小指定錯誤。這對我來說就足夠了。

另外,也許有人知道一個替代文檔類,它不會產生這個問題,而只是產生我想要的輸出。這樣的解決方案對我來說也足夠了。

請注意,將圖形編譯為一篇文章,然後將其轉換為是eps我嘗試過的方法,但我不喜歡它,因為將 轉換pdf為時eps,某些內容(如希臘字母或其他奇特的東西)會發生變化並且看起來很奇怪。另外,包含eps到我的主 tex 檔案中會大大減慢編譯速度,而我恰恰不希望這樣。雖然我可以用文章文檔類別產生圖形,然後轉換為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的手臂開始 。200最後一個節點也設定為 ,1300,-310臂為200。這就是為什麼我選擇左下座標(-200,-500)和右上角的 ppicture 環境的原因(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}

相關內容