KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
- TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
자유글 게임 트리 그리기 1-2
2015.06.15 12:19
두번째 게임 트리입니다.
댓글 17
-
ischo
2015.06.15 12:27
-
ischo
2015.06.15 15:30
한발 더..
subgame 그리기...
위 게임트리에서, player 1이 D를 택한 후에 시작되는 subgame을 그려봅니다.
간단하지만 해보시지요.
-
ischo
2015.06.15 19:48
아래와 같이 트리의 첫 마디와 가지부분을 comment out하면 간단히 원하는 그림을 얻게 됩니다.(필요하다면, egame환경이 차지하는 영역을 조정합니다.)tikz로 그린 그림의 경우는 어떻게 할까요?%!TEX program = latex\documentclass{oblivoir}\usepackage{pstricks}\usepackage{egameps}\begin{document}%% dalek\begin{figure}[htb]\hspace*{\fill}\begin{egame}(0,-50)(500,450) \footnotesize\renewcommand{\egarrowstyle}{e}\initialfalse%\putbranch(250,400)(1,0)[l]{250}% \ib{1}{$A$}[(2,2)]%\putbranch(250,400)(0,-1){150}% \ib{}{$D$}[]\putbranch(250,250)(1,1){150}\iib{1}[l]{$L$}{$R$}[][]\putbranch(100,100)(1,1){100}\iib{}{$\ell$}{$r$}[(4,2)][(1,1)]\putbranch(400,100)(1,1){100}\iib{}{$\ell$}{$r$}[(3,2)][(0,3)]\infoset(100,100){300}{2}\end{egame}\hspace*{\fill}\end{figure}\end{document} -
ischo
2015.06.15 20:48
인용된 주요 문헌(by Chen)의 방식대로, 게임 트리를 그리는 경우, 게임이 복잡해지면 다루기 힘들어 집니다.
한 두 개를 그릴 때면 모르지만, 한 문서에 수십 개의 트리를 그릴 때는 각고의 인내심을 필요로 하게 됩니다.
코드 재활용, 코드 가독성 등에서 효율적이지 않아서 그렇습니다.
또한 게임 트리를 그리는 논리적 구조가 게임을 분석하는 논리 구조와 다르기 때문에,
게임을 분석하는 과정을 문서로 만들 때, Chen의 방식은 결코 효율적이지 않습니다.
결론적으로 실용적이지 않다는 것입니다.
한편 Chen의 문서 첫쪽 각주에 언급된 egameps(by Osborne)는 pstricks 기반의 패키지입니다.
egameps는 유명한 게임 이론책의 저자인 Osborne이 쓴 패키지입니다.
많은 게임 트리를 그려야 할 때, Osborne의 egameps가 Chen 방식보다 (체감상^^) 100배쯤 편리합니다.
아직 게임 트리를 다루는 데 편리한 tikz 기반의 패키지나 라이브러리는 나오지 않은 것으로 보입니다.
그럼 egameps를 쓰면 되지 뭐가 문제냐고 할 수 있지만, egameps를 사용하는 데에는 사실 치명적인 약점이 있습니다.
pstricks코드가 사용된 문서를 xelatex으로 컴파일할 때 걸리는 시간이 참을 만하지 않다는 것입니다. ㅠㅠ
(체감상^^) 100배쯤 시간이 더 걸린다는 거지요.
-
ischo
2015.06.15 21:34
첨부파일은 pstricks 기반의 egameps패키지를 사용하여 두 개의 게임 트리를 그린 것입니다.
xelatex으로 컴파일하면 시간이 얼마나 걸리는지요... 그림이 두 개뿐인데...
(dvi-ps-pdf 루트는 금방이죠...)
Chen의 방식은 실용적이지 않고, egameps를 사용하려면 xelatex을 포기해야 하고...
방향은 분명합니다. tikz를 사용하되, 논리는 egameps---다시 말하면 게임이론적 논리를 따라가는 것이죠.
매 마디마다 마디-가지의 구조를 독립적으로 그리는 방식이어야
게임 트리를 많이 다루는 문서 작성에 실용적으로 사용할 수 있습니다.
게임 트리 그리기에 대해서는... 이 정도로 방향을 제시하는 선에서 멈춥니다.
(본래, 게시판 어지럽히는 사태를 조금이나마 중화시키자는 차원에서 시작한 거라... 이제는 대충 정리되는 듯하여... 여기서 멈춥니다.)
또 덧붙이는 잡담.
(사람마다 다르겠지만) 개인적으로는 pstricks가 훨씬 직관적이고 배우기 쉬웠습니다.
pstricks 배울 때 훨씬 적은 시간을 들였던 것으로 기억합니다.
하나를 알면 다른 것은 직관적으로 알 수 있는 것들이 많아서 그랬을 것입니다.
tikz는 정이 안가요... xelatex 때문에 어쩔 수 없이 전환해야 했지만, 최소한의 tikz 사용법만 익혔을 뿐입니다. ㅠㅠ
그동안 pstricks 코드를 tikz로 바꾸는 데 고생 많이 했습니다.^^
(WinEdt에서 EmEditor로 넘어올 때만큼... 아마 그보다 더 고생한 듯 해요... -.-)
만일 지금 둘 다 쓸 수 있다면 (즉 시간 걸리는 문제가 해결되었다는 가상적인 상황이라면)
어느 것을 쓰겠느냐 묻는다면, 주저없이 pstricks를 택하겠습니다.
-
DohyunKim
2015.06.15 22:01
시도는 안 해봤지만 standalone 패키지를 한번 써 보는 건 어떨까요.
메인 파일에 \usepackage{standalone} ... \input 텍파일 하시고,
pstricks 그림 파일은 \documentclass[pstricks]{standalone} ... 으로 작성하는 것입니다.
파일만 여러 개로 나누어질 뿐 컴파일은 한 큐에 되는 걸로 알고 있습니다.
이것도 컴파일 시간이 오래 걸릴까요?
-
ischo
2015.06.15 22:08
저도 해보지는 않았지만...
제가 염두에 두는 상황은 여러페이지짜리 문서에 그림이 많이 들어가는 것...
또한 section/subsection구조를 갖춘 수십페이지짜리 노트... 물론 많은 그림이 들어간 문서... 이런 것들입니다.
oblivoir - xelatex 이외에 다른 실용적인 대안이 있는지 모르겠습니다.
(정 급할 땐, xelatex을 포기하고 dvi-ps 루트로 돌아갑니다.^^)
-
커꿈
2015.06.15 22:15
저도 pstricks가 더 쉽고 직관적이었습니다. tikz로는 아직까지도 두통이... 명령어가 너무 주저리주저리가 아닌가 합니다.
-
ischo
2015.06.16 01:31
pstricks를 먼저 공부한 죄가 있는 거죠...
그게... tikz 공부한 후에 pstricks 배우면 좀 덜 괴로울 거 같아요^^
결론은... 지금 누군가 그림을 그리고자 한다면, pstricks 말고 tikz로 시작하라고 해야 하겠습니다.
-
커꿈
2015.06.16 16:10
그런데 아직까지도 tikz로는 주어진 점을 지나는 곡선을 그리는 방법을 몰라, 자유곡선이 포함되어 있는 복잡한 그림은 그냥 pstricks로 그립니다.
-
ischo
2015.06.16 22:12
몇가지 방법이 있겠지만...
이 것도 그 중 한 예가 될지 모르겠네요.
(첨부파일에서 tension을 조정하면...)
-
nanim
2015.06.15 23:39
이렇게 한 번 해보겠습니다. 아이디어의 핵심은, standalone으로 그림을 그리자는 겁니다. 그것을 latex -> dvips -> ps2pdf로 pdf 변환해둔 다음 문서 자체는 xelatex+oblivoir로 작성하면 되는 거잖아요? arara라는 강력한 툴이 있으니 훨씬 쉽게 작업할 수 있다는 게 제 생각입니다.
다음 예에서는 verbatimoutput으로 했습니다만, filecontents 같은 걸로도 충분히 되리라고 봅니다. 외부로 출력하는 그림에 해당하는 부분에는 \documentclass와 \usepackage, \begin{document} \end{document}가 붙어 있어야 컴파일이 될 것입니다.
pstricks를 포기하기는 너무 아깝습니다.
%!TEX program = arara
% arara: xelatex: { shell: yes }
\documentclass{oblivoir}
\NewDocumentCommand\includeegame{m}
{%
\immediate\write18{latex~#1.tex}
\immediate\write18{dvips~#1.dvi}
\immediate\write18{ps2pdf~#1.ps}
\IfFileExists{#1.pdf}{\includegraphics[scale=1]{#1.pdf}}{}
}
\begin{document}
\begin{verbatimoutput}{\jobname-p1.tex}
\documentclass[pstricls]{standalone}
\usepackage{pstricks}
\usepackage{egameps}
\begin{document}
%% dalek
\begin{egame}(0,-50)(500,450) \footnotesize
\renewcommand{\egarrowstyle}{e}
\initialfalse
%\putbranch(250,400)(1,0)[l]{250}
% \ib{1}{$A$}[(2,2)]
%\putbranch(250,400)(0,-1){150}
% \ib{}{$D$}[]
\putbranch(250,250)(1,1){150}
\iib{1}[l]{$L$}{$R$}[][]
\putbranch(100,100)(1,1){100}
\iib{}{$\ell$}{$r$}[(4,2)][(1,1)]
\putbranch(400,100)(1,1){100}
\iib{}{$\ell$}{$r$}[(3,2)][(0,3)]
\infoset(100,100){300}{2}
\end{egame}\hspace*{\fill}
\end{document}
\end{verbatimoutput}
\begin{figure}[!h]
\centering
\includeegame{\jobname-p1}
\caption{arara로 합시다}
\end{figure}
\end{document} -
ischo
2015.06.16 00:05
아... 또 전환작업? 겁나네요...
미리 확인하고^^ 싶은 것은...
한 페이지에 평균 두세개의 그림이 들어가는 수십페이지짜리 문서를 만들거나
책을 만드는 데도 실용적인 방법일 수 있는지 하는 것입니다.
한두개의 그림을 그리는 것은 어떤 방법이든 어떤 클래스이든 크게 문제되지는 않을텐데요...
문제는 큰 문서를 만드는 데에도 일관적으로 쓸 수 있어야 초보들은 안심이 되거든요...^^
위에 소개해주신 방법은... 지금은 다른 일에 매달려 있는지라... 나중에 해보겠지만
작은 문서 만들 때 pstricks 코드로 썼다가, 나중에 문서 합칠 때 안되면(tikz로 바꿔야 하면) 정~~~말 곤란하거든요...
그래서 미리 알아보고 싶은 거지요.
-
nanim
2015.06.16 00:14
일단 pstricks 코드를 일관되게 쓰시면 됩니다.
각각의 pstricks로 그린 그림에 unique한 이름을 주는 것이 추가로 주의할 점인데,
이건 자동으로 되도록 하면 될테지요. 위의 예에서는 -p1이라는 이름을 주도록 했는데...
즉, 예를 들어
\begin{mygameps}
<egameps code>
\end{mygameps}
이렇게 하면 알아서 그림을 집어넣도록... 하고, 이걸 하려면 --shell-escape가 필요할테니 그것은 arara에게 맡기자, 입니다.
위에 제가 제시한 예를 발전시켜서 mygameps 환경을 만들면 추가적인 부담 없이 일관되게 사용할 수 있게 될 것으로 봅니다.
(사실 예전 sgame으로 했던 것과 비슷한 작업입니다만, 그 때는 xparse도 없었고 arara도 없어서 복잡하게 보였어요...)
-
ischo
2015.06.16 00:25
또 한가지 갈래는...
expl3 신공을 써서... tikz로 egameps를 구현하는 거...
결과가 나오면 더 깔끔할 거 같아요...
pstricks는 dvi-ps 루트에 맡기고...
어려울 거 같지 않아요... ^^
tikz로 egameps 논리 구현하는 거...
지금도 대충 흉내는 내고 있어서 꾸역꾸역 쓰고 있는데...
expl3를 잘 다룰 줄 알면... 훨씬 깔끔하게 할 수 있을 것 같다는 것이...
처음에 말을 꺼냈던... 종착지였던 겁니다.
아무튼, 일단 하던 일 정리되면... 위의 아라라 신공^^을 펼치는 수련을 해보겠습니다.
-
nanim
2015.06.16 07:46
대략 말씀드린 아이디어로 테스트 파일을 만들었습니다.
\nomorecompile이 있으면 latex을 외부에서 돌리지 않습니다.
그림 수가 아주 많다면, xelatex으로 돌리는 것보다 나을지 어떨지...
첨부 파일의 코드에는 없지만, 필요하다면 특정 그림에 대해서만 컴파일해서 그림을 만들라든지, 지금까지 있는 것은 그대로 이용하고 새로 적어 넣은 것만 컴파일하여 만들라든지... 그런 식으로 작성하는 것도 어렵지 않을 것 같습니다.
(Window에서는 rm 명령을 적당한 것으로 바꿔야 합니다.)
-
ischo
2015.06.16 15:08
몇 가지 질문거리가 떠오르기는 합니다만...
일단, 첨부파일을 컴파일한 결과만을 한정해서 얘기한다면...
standalone이 그림을 크롭하는 게 이상하다...는 겁니다.
standalone을 더 자세히 봐야 하는 숙제를 받은 듯요...
(그래서 초보들은 이런저런 ad-hoc 신공들을 두려워 하는 겁니다.^^ 산 넘어 또 산이랄까...)
더 검토하겠습니다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
649 | josaref, 자동조사를 취하는 \ref | nanim | 2015.07.30 | 4091 |
648 | polyglossia를 이용하는 한국어 조판 [2] | nanim | 2015.07.27 | 5529 |
647 | 금지어 문의 [1] | 세벌 | 2015.07.26 | 4119 |
646 | 예비회원 승인문제 [1] | Pi | 2015.07.22 | 4113 |
645 | 당신은 어떤 사용자입니까? [15] | yihoze | 2015.06.18 | 4096 |
644 | tex 사용 후 코딩 실력이 늘었네요 ... [2] | tex_초보자... | 2015.07.14 | 4107 |
643 | 온라인 텍 작업환경 sharelatex에서 한글이 됩니다 [9] | nanim | 2014.06.26 | 23903 |
642 | 그리고 보니 KTS 마스코트 이름이 메타네요 [2] | 메타 | 2015.07.02 | 4112 |
641 | 오랜만에 방문한 소감 [14] | 옛날 세벌 | 2015.06.27 | 8017 |
640 | 텍의 노드(node) [10] | JangNa | 2015.06.27 | 4121 |
639 | 바퀴 [2] | yihoze | 2015.06.29 | 4112 |
638 | 스타일 파일을 찾아 열기 [2] | yihoze | 2015.06.26 | 4566 |
637 | 아름다운 사인 곡선 [21] | nanim | 2015.06.23 | 6634 |
636 | 설문 [4] | yihoze | 2015.06.26 | 4146 |
635 | 텍신디를 쓸 때 색인 표제어를 PDF 책갈피에 넣기 | yihoze | 2015.06.23 | 5629 |
634 | 퀴즈: 이 그리스 고전은 무엇일까요? [5] | yihoze | 2015.06.25 | 4252 |
633 | 스토리보드 만들기 | yihoze | 2015.06.24 | 5822 |
632 | pdf 문서의 특정 페이지에 사용된 폰트 알아내기 | Progress | 2015.06.23 | 13126 |
631 | 하이퍼링크 색 | yihoze | 2015.06.23 | 4818 |
630 | 매크로 또는 파일이 존재한다면 | yihoze | 2015.06.23 | 4698 |
nanim님의 코드의 내용을 그대로 가져와서 다시 쓰면...
주요 참고문헌...
%!TEX program=xelatex
\documentclass{oblivoir}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzstyle{solid node}=[circle,draw,inner sep=.75,fill=black]
\begin{document}
tikz로 그리기:
%% Delek game: variation
\begin{tikzpicture}[>=stealth,font=\scriptsize]
\tikzstyle{level 1}=[level distance=15mm,sibling distance=30mm]
%\tikzstyle{level 2}=[level distance=15mm,sibling distance=30mm]
\tikzstyle{level 3}=[level distance=10mm,sibling distance=20mm]
% tree
\node(0)[solid node]{}
child[grow=left,level distance=25mm]{
edge from parent [->] node [above,yshift=-1pt] {$A$}
}
child[grow=down]{node(1)[solid node]{}
child{node(1-1)[solid node]{}
child{edge from parent [->] node [left] {$\ell$}}
child{edge from parent [->] node [right] {$r$}}
edge from parent [->] node [left] {$L$}
}
child{node(1-2)[solid node]{}
child{edge from parent [->] node [left] {$\ell$}}
child{edge from parent [->] node [right] {$r$}}
edge from parent [->] node [right] {$R$}
}
edge from parent [->] node [right,xshift=-2pt] {$D$}
}
;
% information sets %% -----> \usetikzlibrary{calc}
\draw [thick,dotted] (1-1) to (1-2) node [yshift=5pt] at ($(1-1)!.5!(1-2)$) {2};
% owners
\node [right] at (0) {1};
\node [left,yshift=3pt] at (1) {1};
% payoffs
\node[left]at(0-1){(2,2)};
\node [below] at (1-1-1) {(4,2)};
\node [below] at (1-1-2) {(1,1)};
\node [below] at (1-2-1) {(3,2)};
\node [below] at (1-2-2) {(0,3)};
\end{tikzpicture}
\end{document}