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-1
2015.06.10 20:52
위 코드보다 짧은 코드는?
tikz 코드 적어주시면 감사...
(알림) 초보 레벨들만 남고...
고급자 레벨은 "코딩의 즐거움"으로 관심을 돌려 주시길...
댓글 14
-
하늘연
2015.06.10 22:38
-
nanim
2015.06.11 07:08
기본적으로는 위의 하늘연 님 작품과 같습니다만, 최대한 행수를 줄이는 게 목적이라서... label을 활용하여 다시 써본 것입니다. 최대한 심플하게...
\tikzstyle{solid node}=[circle,draw,inner sep=1.5,fill=black]
\tikzstyle{level 1}=[level distance=30mm,sibling distance=25mm]
\begin{tikzpicture}
\node (0) [solid node, label=above:{child}] {}
child [grow=215] {node[label=below:{(0,2)}]{} edge from parent [->] node [left] { \textit{Good} } }
child [grow=325] {
node (1) [solid node, label=right:{parent} ]{}
child [grow=215] {node[label=below:{(1,1)}]{} edge from parent [->] node [left] {\textit{Forgive}} }
child [grow=325] {node[label=below:{(-1,-1)}]{} edge from parent [->] node [right] {\textit{Punish}} }
edge from parent [-> ] node [right] { \textit { Bad } }
};
\end{tikzpicture}
-
ischo
2015.06.11 11:11
자고 일어나서 생각해보니
게임을 그렇게 말고, 이렇게 그리고 싶다면?
기존 코드 활용...
-
nanim
2015.06.11 11:17
\begin{tikzpicture}\node (0) [solid node, label=above:{child}] {}child [grow=325] {node[label=below:{(0,2)}]{} edge from parent [->] node [right] { \textit{Bad} } }child [grow=215] {node (1) [solid node, label=left:{parent} ]{}child [grow=215] {node[label=below:{(1,1)}]{} edge from parent [->] node [left] {\textit{Forgive}} }child [grow=325] {node[label=below:{(-1,-1)}]{} edge from parent [->] node [right] {\textit{Punish}} }edge from parent [-> ] node [left] { \textit { Good } }};\end{tikzpicture} -
ischo
2015.06.11 14:09
본인이 공부한 또 다른 tikz 코드 기다립니다.
특히 이 문서를 따라 공부하신 분의 tikz 코드...
추가적인 tikz 코드 기다리는 동안...
잠시 짬을 내어...
parent-child game 얘기를 해볼까요?
-
ischo
2015.06.11 23:52
%!TEX program=xelatex\documentclass{oblivoir}\usepackage{tikz}\tikzstyle{solid node}=[circle,draw,inner sep=.75,fill=black]\begin{document}tikz로 그리기:%% parent-child game:\begin{tikzpicture}[scale=1.5,>=stealth,font=\scriptsize]\tikzstyle{level 1}=[level distance=10mm,sibling distance=20mm]% tree\node(0)[solid node]{}child{edge from parent [->] node [left] {$Good$}}child{node(1)[solid node]{}child{edge from parent [->] node [left] {$Forgive$}}child{edge from parent [->] node [right] {$Punish$}}edge from parent [->] node [right] {$Bad$}};% owners\node [above] at (0) {child};\node [above right] at (1) {parent};% payoffs\node [below] at (0-1) {$(0,2)$};\node [below] at (1-1) {$(1,1)$};\node [below] at (1-2) {(-1,-1)};\end{tikzpicture}\end{document}기본적으로 하늘연님과 나님님의 작품과 같은 내용인데,행수 상관 않고 쓰는 게 초보의 권리^^라... 길게 썼습니다.xelatex으로 컴파일해보시지요. -
nanim
2015.06.11 14:54
tikz 올린 게 기각당한 게 분해서 (^^)
앞서 보여드렸던 코드를 아주 살~짝 개선했습니다.
settings.outformat = "pdf";
size(10cm,7cm, keepAspect=false);
draw((10,20) -- (0,10), arrow=Arrow);
draw((10,20) -- (20,10), arrow=Arrow);
label("child", (10,20),N);
label("{\em Good}", (10,20)--(0,10), NW);
label("{\em Bad}", (10,20)--(20,10), NE);
draw((0,10) -- (-10,0), arrow=Arrow);
draw((0,10) -- (10,0), arrow=Arrow);
label("parent", (0,10), NW);
label("{\em Forgive}", (0,10)--(-10,0), NW);
label("{\em Punish}", (0,10)--(10,0), NE);
dot((10,20));
dot((0,10));
label("$(0,2)$", (20,10), S);
label("$(1,1)$", (-10,0), S);
label("$(-1,-1)$", (10,0), S); -
ischo
2015.06.11 17:56
제 글 어디에서 기각했다고 보시는지요?
----
^.^ (그냥... 해보고 싶었습니다)
----
하던 얘기 계속하면...
이 게임은 entry game이라는 나름 유명한 게임인데
드물게는 rotten kid game이라 하기도 한답니다.
말 안듣는 철 없는 아이가 휘젓고 다니며 분탕질 쳐도,
두들겨 패느니, 그러면 마음이 더 안좋으니까, 차라리 두고 본다는 이야기입니다.
어른된 입장에서 그렇다는 거죠.
-
nanim
2015.06.12 06:36
\setlength{\unitlength}{2mm}\begin{picture}(50,50)\put(20,30){\circle*{1}}\put(30,20){\circle*{1}}\put(20,30){\vector(-1,-1){10}}\put(20,30){\vector(1,-1){10}}\put(30,20){\vector(-1,-1){10}}\put(30,20){\vector(1,-1){10}}\put(18,31){child}\put(31,20){parent}\put(11,26){\textit{Good}}\put(25,26){\textit{Bad}}\put(20,16){\textit{Forgive}}\put(35,16){\textit{Punish}}\put(8,18){$(0,2)$}\put(18,8){$(1,1)$}\put(37,8){$(-1,-1)$}\end{picture}이 방법의 가장 큰 문제는 put할 위치를 처음부터 알 수가 없어서 매번 결과를 보면서 저 수치를 조금씩 조정해야 한다는 겁니다. 위에 나온 대부분의 그림 언어에서 활용하고 있는 label 위치를 객체에 대하여 상대적으로 잡는 것을 할 수 없기 때문에, 엄청난 인내심이 요구되고 그림이 조금 복잡해지면 쉽게 할 수 있는 일이 아닙니다. 이런 건, "옛날에는 이런 것도 있었다"고만 알면 되고, 이것부터 배울 필요가 없습니다. (사실 배울 것도 없습니다만...)
대부분의 입문서에 간단하게라도 소개하고 있는 것은 역사적 이유와, 이 환경을 알아두면 필요할 때도 있기 때문이지 "그리기"에 이것이 유효한 방법이라서가 결코 아닙니다.
-
ischo
2015.06.12 23:06
위 나님님의 진정한 막노동의 결과를 공유합니다.\documentclass{article}\begin{document}\setlength{\unitlength}{2mm}\begin{picture}(50,50)\put(20,30){\circle*{1}}\put(30,20){\circle*{1}}\put(20,30){\vector(-1,-1){10}}\put(20,30){\vector(1,-1){10}}\put(30,20){\vector(-1,-1){10}}\put(30,20){\vector(1,-1){10}}\put(18,31){child}\put(31,20){parent}\put(11,26){$Good$}\put(25,26){$Bad$}\put(20,16){$Forgive$}\put(35,16){$Punish$}\put(8,18){(0,2)}\put(18,8){(1,1)}\put(37,8){(-1,-1)}\end{picture}\end{document}====잡담: rotten kid game의 결과는애는 까불고 어른은 봐준다는 건데요...세상 일이 그리 간단하지 않잖지 않습니까?마찬가지로, rotten kid game ---요게 반복되거나 하면 좀 복잡해집니다.과연 계속 까불면 어떻게 될까요?관심 있으면 추적하시길... chainstore paradox, repeated games...==== -
ischo
2015.06.13 23:35
덧붙이는 잡담:
혹시, 위의 full 텍코드의 마지막에는 article 클래스를,
나머지는 oblivoir 클래스를 쓴 이유가 무엇인가 하고 궁금하신 초보가 있다면...
꼭 oblivoir 클래스를 써야 하는 것은 아니라는 점도 알고 있지만,
이런저런 내용들을 붙여가며 문서를 작성해 가는 경우에
뭔가를 바꾸고 싶을 때, 생고생을 덜 하려면
oblivoir로 해서 나쁠 것은 없다는 생각을 해온 터라
버릇처럼 쓴 결과일 뿐입니다.
마지막 코드는, 레이텍의 기본 기능으로 할 수도 있지만
표현하자면, 각고의 인내를 바탕으로 한 막노동 작업이 필요할 것이며
작업 결과, 그 품질도 성에 차지 않을 수 있다는 의미에서
그냥 article 클래스를 써도 문제 없을 것이라는 생각에서 그리 한 것입니다.
맨 마지막 예에서 클래스를 oblivoir에서 article로 바꾼 것은 더 좋아서가 아니라는 거지요.
초보 대상 시리즈이므로 덧붙인 잡담이었습니다.
이어서...
처음 말씀 드렸던 또 하나의 게임 트리를 그려 보는 선에서
(길지 않은 시리즈이기는 했지만 예정보다는 짧게 진행된 시점에서)
시리즈를 멈출 생각입니다.
-
DohyunKim
2015.06.14 09:54
이런 것에 가장 적합한 클래스는 standalone 이지 싶습니다.
https://www.ctan.org/tex-archive/macros/latex/contrib/standalone
-
ischo
2015.06.14 15:37
standalone이 (가장 적합한지는 모르겠지만)... 그림 크롭도 할 수 있고,
간단한 테스트에 편리하게 쓸 수 있는 클래스입니다.
하지만, (나같은^^) 초보라면, 이 쓰레드 본문에 나오는 첫번째 코드를 긁어다가
클래스를 standalone으로 바꿔서 컴파일해보면 당황할 수 있다는 의미에서
개인적으로는, 초보를 아직 벗어나지 못한 사용자에게 권장하지는 않겠습니다.
이밖에 이런저런 내용을 덧붙이다보면,
안되네... 뭐가 문제지... 이렇게 하고 싶은데 어떻게 하지... 이런 게 하나둘씩 생길 것이고
그러다보면, article보다 oblivoir가 좀더 편리할 것이라는 생각을 얘기한 것입니다.
(수동변속으로도 운전할 수 있지만 초보자는 자동변속이 좀더 편하지 않을까 하는 단순한 마음으로...)
잡담을 또 하나 덧붙이면...
oblivoir 원래 이름이 fakearticle인가 그랬거든요...
그 당시 나름 저자에게 강하게 푸시했더랬습니다.
이건 앞으로 한국 사람이 가장 많이 쓰는 물건이 될 거다...
이름에 fake가 들어가는 건 아닌 것 같다...
바꿔야 한다...
본인은 어떻게 받아들였는지 모르겠지만,
제 나름대로는 상당히 쎄게 푸시해야 한다고 생각해서 그렇게 했습니다.
그리곤 저자가 생각해낸 것이 망각+메므와... 이거였던 거고
hoze님이 긍정적인 반응을 보였고...
그 이후로 지금까지 oblivoir로 불리고 있는 것입니다.
그러니까 어원으로 보면
(테크니컬한 어려움) 다 잊고 표준인 article 쓰듯이 편리하게 쓰게 하자는 뜻일 겁니다.
article에 메므와 기능을 얹어버렸다고나 할까요...
거기에다가 (영어문서 기준의 각종 문서작성 요소가) 한글문서에 어울리지 않는 부분을
한글문서에 맞게 조정할 수 있도록 한 거라고 알고 있습니다.
처음에는 없던 chapter옵션은 머지 않아 포함되었고,
이러저러한 기능들이 오랜 시간에 걸쳐 개발/개선되어 와서
현재는 한글 책 하나를 작성하는 데 이를 (효과적으로) 대체할 만한 클래스가 없는 상황에까지 이르른 것으로 이해하고 있습니다.
(뭐... 기억이야 사람마다 다를 수 있으니까...
저자가, 누구 시비걸듯, 시비걸지는 않을 것이라고 생각합니다만...^^)
저는 편리하기 때문에 쓰는 거고요...
한글 기능 죽이면, 본래 memoir를 그대로 쓸 수 있는 것이므로,
oblivoir는 (별 노력 없이) memoir로 할 수 있는 것 다 할 수 있고 반대방향으로는 그렇지 않다고 이해하고 있습니다.
물론 article이 하는 일도 다 할 수 있어서,
초보자들에게 article 클래스를 쓸 수도 있지만, oblivoir를 써서 나쁠 것 없다고 권장하는 입장입니다.
잡담이 길어졌네요... (-.-)
-
ischo
2015.06.15 00:45
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
9 | 2016 한국텍학회 정기총회 및 KTUG 컨퍼런스 [5] | 관리자 | 2016.01.18 | 6449 |
8 | 게임 트리 그리기: istgame 패키지 [7] | ndh | 2015.09.02 | 5072 |
7 | 게임 트리 그리기 2-2 (with tikz) [9] | ischo | 2015.08.18 | 4575 |
6 | 게임 트리 그리기 2-1 (with tikz) [2] | ischo | 2015.08.17 | 14078 |
5 | 게임 트리 그리기 2 (with tikz) [5] | ischo | 2015.08.14 | 4746 |
4 | 게임 트리 그리기 1-2 [17] | ischo | 2015.06.15 | 11987 |
» | 게임 트리 그리기 1-1 [14] | ischo | 2015.06.10 | 7812 |
2 | 게임 트리 그리기 1 [10] | ischo | 2015.06.09 | 4348 |
1 | 시작하면 멈출 수 없는 게임 하나 [3] | Progress | 2010.04.09 | 47884 |
잠시 머리 식힐겸 한번 해보았습니다. TikZ가 미숙해서 그런지 코드가 조금 마음에는 안듭니다.
\documentclass{oblivoir}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{>=latex}
\tikzstyle{solid node}=[circle,draw,inner sep=1.5,fill=black]
\begin{document}
\begin{tikzpicture}[level distance=30mm,level/.style={sibling distance=50mm}]
\node[solid node,label=above:{Child}] (start) {}
child {node[solid node,label=below:{(0,2)}] (a) {} edge from parent[->,>=stealth,thick]}
child {node[solid node,label=right:{parent}] (b) {} edge from parent[->,>=stealth,thick]
child {node[solid node,label=below:{(1,1)}] (c) {} }
child {node[solid node,label=below:{(-1,-1)}] (d) {}}
};
\node[xshift=5mm,yshift=17mm] at (a) {\textit{Good}};
\node[xshift=-5mm,yshift=17mm] at (b) {\textit{Bad}};
\node[xshift=5mm,yshift=17mm] at (c) {\textit{Forgive}};
\node[xshift=-5mm,yshift=17mm] at (d) {\textit{Punish}};
\end{tikzpicture}
\end{document}