%!TEX program = arara % arara: pdflatex: {shell: yes, synctex: yes} % arara: xelatex: {shell: yes, synctex: yes} % arara: makeindex: {style: istgame} % arara: xelatex: {shell: yes, synctex: yes} % arara: xelatex: {shell: yes, synctex: yes} \def\tmpdate{2022/03/22} \def\tmpdate{\today} \def\tmpversion{2.1} \def\printtikztreetest{} \def\printtest{} \def\printteststar{} \def\printdoc{} %\renewcommand\printtikztreetest{\input{istgame_test_tree}} %\renewcommand\printtest{\clearpage\input{istgame_test}} %\renewcommand\printteststar{\clearpage\input{istgame_test-star}} \renewcommand\printdoc{\include{istgame-doc-v\tmpversion}} %% ====================================================== \documentclass[a4paper,amsmath]{oblivoir} %% ====================================================== %\documentclass[a4paper,article]{memoir} %\renewcommand\thesection{\arabic{section}} %\usepackage{istgame-v\tmpversion} \usepackage{istgame} \usepackage{fapapersize} \usefapapersize{*,*,30mm,*,28mm,*} \setsecnumdepth{subsubsection} \settocdepth{subsubsection} \setlength\cftsubsubsectionindent{4.5em} %% us date \usepackage{datetime} \usdate \let\mytoday\today \AtBeginDocument{\let\today\mytoday} \AtBeginDocument{% \renewcommand\contentsname{Table of Contents} \renewcommand\figurename{Figure} \renewcommand\tablename{Table} \renewcommand\abstractname{Abstract} \renewcommand\indexname{Index} \renewcommand\pagerefname{\kern-4pt}% } %\usepackage[hidelinks]{hyperref} % (memoir) \hypersetup{pdfborder={0 0 0}} % to suppress the hyperlink red box %\usepackage{amsmath,mathtools} %\usepackage{xparse} %% oblivoir loads xparse %\usepackage{tikz} %% istgame loads tikz \usepackage{makecell} \usepackage{capt-of} \usepackage{multido} \usepackage[normalem]{ulem} % [normalem] to correct the pdf bookmark broken characters \usepackage{idxlayout} %\usepackage{url} %\setistdefaultnodedrawcolor{red} % test %\setistdefaultnodefillcolor{black!16} % (try for MacOS mohave dark mode, TeXShop background color) \usepackage{tcolorbox} \tcbuselibrary{minted,xparse,listings,breakable} \tcbset{% listing engine=minted,breakable, % minted language=latex, after={\par\vspace{.5\baselineskip}\noindent} } \tcbset{% colback=yellow!5!white, colframe=blue!30, listing outside text, righthand width=.3\linewidth, center upper, center lower, sidebyside gap=5pt, minted style=igor, %tango, **igor, xcode, ***manni, *autumn, colorful, listing options={% style=tcblatex, % keywordstyle={\color{blue}}, commentstyle=\color{black!20!green}, % morekeywords={ % istgamefontsize,setistgamefontsize,setistgamearrowendshorten, % istgame,istroot,istrooto,istb,endist,xtdistance,istbm, % istbt,istB,istBt,istbA,cntmAInfoset,cntmAInfosetO, % istrootcntm,istrootcntmA,istrootocntm,istrootocntmA, % setistgrowdirection,istgrowdirection, % setistmathTF,istownerlmathtrue,istownermathfalse,istactioinlabelmathtrue, % istactionlabelmathfalse,istpayoffmathtrue,istpayoffmathfalse, % cntmdistance,cntmlevdist,cntmsibdist, % cntmApreset,cntmistb,cntmAistb,cntmAexpostShowEndPoints, % xtInfoset,xtInfosetO,xtActionLabel, % xtSubgame,xtSubgameBox,xtSubgameOval, % xtgrow,setxtgrowkey,xtInfosetOwner,xtOwner,xtPayoff,xtNode, % xtALPush,xtALShift, % xtShowEndPoints,xtHideEndPoints, % xtShowTerminalNodes,xtHideTerminalNodes, % xtTimeLineH,xtTimeLineV,xtCommentTo,xtCommentFrom,xtShowArrows,xtHideArrows, % xtlevdist,xtsibdist, % xtShowArrows,xtHideArrows,xtShowMidArrows,xtHideMidArrows, % setxtshowarrows,setxtmidarrows,setxtshowmidarrows, % setxtinfosetlayer,setxtsubgamelayer, % setistNewNodeStyle, % setistDecisionNodeStyle,setistOvalNodeStyle, % setistSolidNodeStyle,setistHollowNodeStyle, % setistEllipseNodeStyle,setistNullNodeStyle,setistRectangleNodeStyle, % xtALpush,xtALshift, % xtdefaultsubrootshiftoval, % tikzstyle,draw,coordinate,foreach,setlength, % NewDocumentCommand,NewDocumentEnvironment,IfBooleanTF,tikzset, % xtCInfoset,xtCInfosetO,xtCInfosetOTurnX, % cntmpreset,cntmApreset,cntmAlayerpreset % setxtinfosetstyle,setxtarrowtips,setxtinfosetstyle % }, }, % end of listing options } \DeclareTCBListing{docstx}{ !O{} } {colback=blue!5!white,listing only,#1} \DeclareTCBListing{docsty}{ !O{} } {colback=red!5!white,listing only,#1} \DeclareTCBListing{docplain}{ !O{} } {colback=white,colframe=gray!15,listing only,#1} \DeclareTCBListing{doccode}{ !G{1} !O{} } {righthand width=\expandafter#1\linewidth,#2} %\usepackage{tikz-qtree} %%% DO NOT USE % or, add the following in the option % [ edge from parent path={(\tikzparentnode) -- (\tikzchildnode)} ] \linespread{1} \newcommand*\Tikz{Ti\textit{k}Z} \let\TikZ\Tikz \newenvironment{keywords}{% \par\vskip2pt \noindent\hangfrom{\textsc{Keywords: }}% } \NewExpandableDocumentCommand\xcol{mO{c|}m} {\multicolumn{#1}{#2}{\ensuremath{#3}}} %% more lazy macros \newcommand\xbigskip[1]{\multido{}{#1}\bigskip} \newcommand\xmedskip[1]{\multido{}{#1}\bigskip} \newcommand\xsmallskip[1]{\multido{}{#1}\bigskip} \def\hpara{\hangpara{1.52em}{1}} \def\listdivider{\leavevmode\smallskip\hrule width 1.5em\smallskip} \NewDocumentCommand\remark{ O{1} } {\xmedskip{#1}\noindent \textbf{Remark: }} \NewDocumentCommand\warning{ O{1} } {\xmedskip{#1}\noindent \textbf{Warning: }} % \newcommand\sourcelink[1]{\ttfamily\color{blue}\uline{#1}} % %%% index %\renewcommand\cmd[1]{\cmdprint{#1}} \ExplSyntaxOn \renewcommand \cmd [1] { \texorpdfstring { \cmdprint {#1} } { \textbackslash \cs_to_str:N #1 } } \let\CMD\cmd \ExplSyntaxOff \newcommand\xw[1]{\cmd{#1}} \newcommand\xttw[1]{\texttt{#1}} \newcommand\pkg[1]{\textsf{#1}} \newcommand\env[1]{\textsf{#1}} \newcommand\isw[1]{#1\index{#1}} % simple word in text/index \newcommand\ixsw[1]{\cmd{#1}\index{#1}} % texttt in text, simple word in index \newcommand\ixw[1]{\textsf{#1}\index{#1@\textsf{#1}}} % textsf in text/index \newcommand\ixttw[1]{\texttt{#1}\index{#1@\texttt{#1}}} % texttt in text/index \newcommand\ipkg[1]{\textsf{#1}\index{#1@\textsf{#1}}} \newcommand\ienv[1]{\textsf{#1}\index{#1@\textsf{#1}}} \makeatletter \newcommand{\icmd}[1]{\cmdprint{#1}% \index{\expandafter\@gobble\string#1(@\string\cmdprint{\string#1}}} \makeatother \makeindex \title{\texttt{istgame.sty} \\ Draw Game Trees with \Tikz} \author{In-Sung Cho \\ \texttt{ischo ktug.org}} \date{Economics, Kongju National University\\[3pt] \tmpdate\quad version \tmpversion} \def\tmpclearpage{\clearpage} \AtBeginDocument{\MakeShortVerb{\|}} %%======================================================================= \begin{document} \frontmatter \maketitle \renewcommand{\abstracttextfont}{\normalfont\small\noindent\ignorespaces} \begin{abstract} This is a \LaTeX{} package that provides \Tikz-based macros to draw game trees. The main idea underlying the core macros here is the completion of a whole tree by using a sequence of simple `parent-child' tree structures, with no longer nested relations involved like the use of grandchildren or great-grandchildren. With the \ipkg{istgame} package, you can draw game trees as easily as drawing game trees with pen and paper. \begin{keywords} game trees, nodes, branches, information sets, continuum of branches, subgames \end{keywords} \end{abstract} \tableofcontents* \mainmatter \printtikztreetest \printtest \printteststar \printdoc %\clearpage \setsecnumdepth{chapter} \section{Version history} \label{version-history} \begin{itemize} %\item v\tmpversion (\tmpdate) to be uploaded to CTAN % \begin{itemize} % \item % \end{itemize} \item v2.1 (2022/03/22) uploaded to CTAN \begin{itemize} \item document done! \end{itemize} \item v2.092 (2022/03/21) \begin{itemize} \item working on the documentation \item added |arrows.meta| and |bending| to the list of preloaded |tikz| libraries \begin{itemize} \item applied |arrows.meta| arrow tips to the related examples \end{itemize} \end{itemize} \item v2.091 (2022/03/16) \begin{itemize} \item modified |istgame| environment to add its starred version \begin{itemize} \item |\begin{istgame}*| is essentially the same as |\begin{tikzpicture}| \item but loses some feature of the \pkg{istgame} package \end{itemize} \item fixed all macros related information sets to remove arrow tips \item touched |\AtBeginDocument{\setxtarrowtips}| \item rewrote |\setistmathTF(*)| and related macros to avoid a possible conflict \end{itemize} \item v2.09 (2021/04/05) \begin{itemize} \item removed |\pgfextra| from |\istrootcntm| and |\istrootcntmA| (debugging) \item resolved the null font problem in |\cntmistb| and |\cntmAistb| using |\l_nullfont_tl| (debugging) \item added |\setist<...>nodesize| for |solid|, |hollow|, |ellipse|, and |rectangle| (for global setting in the preamble) \end{itemize} \item v2.0 (2019/01/27) uploaded to CTAN \begin{itemize} \item changed the title of the package to ``Draw Game Trees with \Tikz" \item package document done \end{itemize} \item v2.0rc (2019/01/27) \begin{itemize} \item introduced |\setxtinfosetstyle| \begin{itemize} \item introduced |infoset style|, a new style for information sets \item modified all definitions of information sets, accordingly \end{itemize} \item redefined macros related to layer, to easily restore default values \item modified the cross arrow tip options \item modified defaults of |\setxtarrowtips| not to depend on branch styles initially \item code refinement \end{itemize} \item v2.0beta1 (2019/01/26) \begin{itemize} % \item beta test \item introduced |\xtshowXpoints| and |\xtshowXcircles| (for developer only, not documented) \end{itemize} %%%\item v1.99x (2019/01/24) %%% \begin{itemize} %%% \item changed |expl3| macros %%% \begin{itemize} %%% \item \verb+\str_case_x:nnTF+ to \verb+\str_case_e:nnTF+ and then to \verb+\str_case:nnTF+ %%% \item \verb+\str_if_eq_x:nnTF+ to \verb+\str_if_eq:eeTF+ and then to \verb+\str_if_eq:nnTF+ %%% \end{itemize} %%% \item modified macros on arrows and middle arrows %%% \item redefined |\xtTimeLineH| and |\xtTimeLineV| to deal with swap of branches %%% \item modified |\xtCommentTo| and |\xtCommentFrom| for the last option delimiters %%% \end{itemize} %%%\item v1.99w (2019/01/21) %%% \begin{itemize} %%% \item fixed bug in |\xtInfosetO| regarding |\xtinfosetheihtvar| for |rounded corner| %%% \item corrected |\cntmistb| and |\cntmAistb| %%% \begin{itemize} %%% \item separated options for |\cntmAistb| from those for |\cntmistb| %%% \item those two are independent to each other (except the way to deal with endpoints) %%% \end{itemize} %%% \item redefined |\endist| to restore initial values after each execution of the \verb+cntm(A)istb+ %%% \begin{itemize} %%% \item but not for the effect of printing endpoints %%% \item (internally introduced) |\cntmistbVariablesRestore| %%% \item (internally introduced) |\cntmAistbVariablesRestore| %%% \end{itemize} %%% \item introduced |\xtHideEndPoints*| for extra work for continuum endpoints %%% \item introduced |\cntmAlayerpreset|, with |behind| as default %%% \item redefined |\xtShowArrows| to add an option for a node style %%% \item changed the order of options for |\setxtshowarrows| %%% \item changed the order of options for |\setxtarrowtips| %%% \item renamed |\setxtmidarrows| to |\setxtarrowtips| %%% \end{itemize} %%%\item v1.99v (2018/01/17) %%% \begin{itemize} %%% \item redefined the \env{istgame} environment and |\istgameScaleCallTestAndAdjust| %%% to take care of simultaneous use of |xscale| and |yscale|. %%% \item modified macros to make singleton information sets scaled accordingly when needed %%% \begin{itemize} %%% \item |\xtInfosetO|, |\xtCInfosetO|, |\cntmAInfosetO|, |\istgameScaleCallTestAndAdjust| %%% \item (internally) added |\xtinfosetheightvar| and |\cntminfosetheightvar| %%% \end{itemize} %%% \end{itemize} %%%\item v1.99u (2019/01/15) %%% \begin{itemize} %%% \item redefined macros to deal with local change of sibling distances %%% \begin{itemize} %%% \item redefined |\istrootcntm|, |\istrootcntmA|, |\istrootocntm|, |\istrootocntmA|, %%% \item redefined |\istbA|, |\istbAt| %%% \item redefined |\cntmpreset|, |\cntmApreset| -- NEED TO GO BACK (no need call test) %%% \end{itemize} %%% \item redefined |\xtCInfoset| to add abbreviations for the position of owners %%% \item redefined |\xtCInfoset| to print a singleton information set %%% \item modified |\xtCInfoset| to change the way of input for its position (|add to \textbackslash cntmApos|) %%% \end{itemize}\ %%%\item v1.99t (2019/01/13) %%% \begin{itemize} %%% \item redefined macros to deal with local change of level and sibling distances for |\istbA| %%% \begin{itemize} %%% \item code complication, inevitable to take care of too many cases %%% \item redefined |\istroot| and |\istrooto| %%% \item redefined |\istrootcntm| and its variants %%% \item redefined |\istbA| and |\istbAt| %%% \end{itemize} %%% \end{itemize} %%%\item v1.99s (2019/01/10) %%% \begin{itemize} %%% \item modified |\xtCInfosetO| for better results when swapped with \xw{plotfactor} less than 1 %%% \item modified |\istrootcntm| and its variants for better results of shrunken continua %%% \item redefined |\xtTimeLineH| (for a horizontal time-line) %%% \item introduced |\xtTimeLineH(')| for a vertical time-line %%% \item introduced |\xtCInfosetOTurnX| for turning X circles to use it just in case %%% \end{itemize} %%%\item v1.99r (2019/01/07) %%% \begin{itemize} %%% \item redefined |\istrootcntm| and |\istrootocntm| for smaller triangle continua of branches %%% \item introduced |\cntmpreset| and |\cntmpreset*| %%% \item put `call test' for cases of how to change level distance with |\istbA| %%% \item modified |\xtCInfosetO| and |\cntmAInfosetO| for coloring %%% \end{itemize} %%%\item v1.99q (2019/01/05) %%% \begin{itemize} %%% \item modified |\xtInfosetO| to print a singleton information set by a circle. %%% \item finished fine-tuning |\cntmAInfosetO| (for tuning base circles) %%% \end{itemize} %%%\item v1.99p (2019/01/02) %%% \begin{itemize} %%% \item redefined |\xtInfoset| and |\xtInfosetO| in accordance with new |\xtCInfosetO| %%% \item redefined completely |\cntmAInfoset| and |\cntmAInfsetO| in the way of |\xtCInfosetO| %%% \item redefined |\cntmAInfoset|, |\cntmAInfosetO|, |\istrootcntmA|, and |\istrootocntmA| %%% \begin{itemize} %%% \item to compensate the dependency of arcs on the ratio of |\cntmlevdist| to |\cntmsibdist| %%% \end{itemize} %%% \end{itemize} %%%\item v1.99o (2018/12/31) %%% \begin{itemize} %%% \item redefined completely |\xtCInfosetO| and |\xtCInfoset| for enhancement %%% \begin{itemize} %%% \item (internally) added |\setxtCIAngleAccordingtoGrowswapCallForCI| %%% \item to make it possible for the control points to turn accordingly along the base circles %%% for sides of curved information sets %%% \end{itemize} %%% \end{itemize} %%%\item v1.99n (2018/12/27) %%% \begin{itemize} %%% \item redefined |\setistmathTF*| to make it work with basic text font styles %%% \begin{itemize} %%% \item |\istownertextfont|, |\istactionlabeltextfont|, |\istpayofftextfont| %%% \item all working only in text mode %%% \end{itemize} %%% \item introduced |\xtcureslopedlabelsNS| and |\xtcureslopedlabelsEW| to resolve a \Tikz\ conflict to sloped labels %%% \begin{itemize} %%% \item (internally) added |\xtlevdistadj| and |\xtsibdistadj| %%% \end{itemize} %%% \end{itemize} %%%\item v1.99m (2018/12/21) %%% \begin{itemize} %%% \item added starred versions that work with |\setistmathTF| %%% \begin{itemize} %%% \item |\xtInfoset*|, |\xtInfosetO*|, |\xtCInfoset|, |\xtCInfosetO| %%% \item |\xtOwner*|, |\xtActionLabel*|, |\xtPayoff*|, |\xtInfosetOwner*| %%% \end{itemize} %%% \end{itemize} %%%\item v1.99l (2018/12/18) %%% \begin{itemize} %%% \item changed the order and the type of argument delimiters for input consistency %%% \begin{itemize} %%% \item |\xtCInfosetO|, |\cmtmAinfosetO|, and their related macros %%% \item effective from \xw{v.1.99l} %%% \begin{itemize} %%% \item not consistent with the earlier versions of update %%% \item but intact with the \xw{version 1} %%% \end{itemize} %%% \end{itemize} %%% \end{itemize} %%%\item v1.99k (2018/12/15) %%% \begin{itemize} %%% \item introduced |\xtCInfosetO| for bubble type curved information sets %%% \begin{itemize} %%% \item (internally) added |\xtPrototypeForCInfosetO| -- only for |\xtCInfosetO| %%% \end{itemize} %%% \end{itemize} %%%\item v1.99j (2018/12/11) %%% \begin{itemize} %%% \item introduced |\xtCInfoset| for curved information sets %%% \begin{itemize} %%% \item (internally) added |\istgameScaleCallTestAndAdjust| (must be used in a group) %%% \item (internally) added |\setxtCIAngleAccordingtoGrowswapCall| %%% \end{itemize} %%% \end{itemize} %%%\item v1.99i (2018/12/08) %%% \begin{itemize} %%% \item (macro name change, effective from \xw{v1.99i}) all `\xw{cntmarc}' changed to `\xw{cntmA}' %%% \item introduced |\cntmAInfosetO| %%% \item introduced |\cntmAexpostShowEndPoints| %%% \item introduced |\istbA(*)| and |\istbAt(*)| %%% \end{itemize} %%%\item v1.99h (2018/11/07) %%% \begin{itemize} %%% \item changed the default position of a continuum arc from \xw{.5} to \xw{1} %%% \item introduced |\cntmarcInfoset| %%% \end{itemize} %%%\item v1.99g (2018/09/30) %%% \begin{itemize} %%% \item put |\xtShowArrows| and |\xtShowMidArrows| into |\istB| %%% \item found issues with |\xtShowArrows| and |\xtShowMidArrows| related to \xw{postaction} %%% \item added the arrow end shorten option to |\xtCommentTo| and |\xtCommentFrom|. %%% \item (internal) minor changes %%% \begin{itemize} %%% \item redefined |\setistSolidNodeStyle| to keep consistency with other node styles %%% \item redefined |\setistNullNodeStyle| to keep consistency with other node styles %%% \end{itemize} %%% \end{itemize} %%%\item v1.99f (2018/09/19) %%% \begin{itemize} %%% \item (internally) redefined |\cntmistb| and |\cntmarcistb| to resolve endpoints problems %%% \begin{itemize} %%% \item (internally) added |\cntmOUTERistb| and |\cntmarcOUTERistb| %%% \item (internally) removed |\cntmendpointsShow| and |\cntmendpointsPrint| %%% \item (internally) redefined |\istrootcntm| and its variants accordingly %%% \end{itemize} %%% \end{itemize} %%%\item v1.99e (2018/09/15) %%% \begin{itemize} %%% \item introduced |\xtShowArrows| and |\xtHideArrows(*)| %%% \item introduced |\setxtshowarrows| %%% \item introduced |\xtShowMidArrows| and |\xtHideMidArrows| %%% \end{itemize} %%%\item v1.99d (2018/09/13) %%% \begin{itemize} %%% \item introduced |\setxtarrowtips| with a tikzstyle \xw{->-} %%% \item introduced new arrow styles: \xw{->>-}, \xw{->>>-}, \xw{-o-}, and \xw{-x-} %%% \end{itemize} %%%\item v1.99c (2018/09/09) %%% \begin{itemize} %%% \item introduced |\cntmistb| and |\cntmarcistb| %%% \item redefined |\cntmdistance| to check if |\cntmactsibdist| is called or not %%% \item (internally) added |\cntmendpointsShow| %%% \begin{itemize} %%% \item redefined |\xtShowEndPoints| and |\xtHideEndPoints| accordingly %%% \item introduced |\xtShowEndPoints*| (for outermost branches of a continuum) %%% \end{itemize} %%% \item (internally) added |\cntmendpointsPrint| %%% \begin{itemize} %%% \item redefined |\istrootcntm| and its variants accordingly %%% \end{itemize} %%% \end{itemize} %%%\item v1.99b (2018/09/07) %%% \begin{itemize} %%% \item redesigned |\istrootcntm| and its variants %%% \begin{itemize} %%% \item removed |\ISTCntm(')| and |\ISTCntmArc(')| %%% \end{itemize} %%% \item introduced |\cntmdraw|, |\cntmdrawset| and related macros %%% \item redfined |\cntmdistance| to check if |\cntmactsibdist| is called or not %%% \end{itemize} %%%\item v1.99a (2018/09/05) %%% \begin{itemize} %%% \item introduced |\setistgameshorten| (for \env{istgame} environment option) %%% \end{itemize} %%%\item v1.98 (2018/09/03) %%% \begin{itemize} %%% \item redefined |\istrootcntm(arc)| to make it work with |\setistmathTF(*)| %%% \item redefined |\istrootocntm(arc)| to make it work with |\setistmathTF(*)| %%% \end{itemize} %%%\item v1.97 (2018/09/02) %%% \begin{itemize} %%% \item redefined |\istroot(o)| to resolve tex expansion problems %%% \item redefined |\istrootcntm(arc)| to resolve tex expansion problems %%% \item redefined |\istrootocntm(arc)| to resolve tex expansion problems %%% \item redefined the \env{istgame} environment to add \xw{[shorten >=0pt]} if \xw{[->]} exists %%% \end{itemize} %%%\item 1.96 (2018/08/30) %%% \begin{itemize} %%% \item minor changes %%% \begin{itemize} %%% \item altered the default sibling distance of |\xtdistance| from \xw{15mm} to \xw{\levdist} %%% \item altered initial options for \xw{null}, \xw{solid}, and \xw{hollow} nodes (added \xw{thin}, \xw{solid}) %%% \item added \xw{text depth=.25ex} for some definitions %%% \end{itemize} %%% \end{itemize} %%%\item v1.95 (2018/08/27) %%% \begin{itemize} %%% \item resolved dimension issues for |\cntmdistance| %%% \item added |\xtOwner*|, |\xtActionLabel*|, |\xtPayoff*| (working with |\setistmathTF(*)|) %%% \end{itemize} %%%\item v1.94 (2018/08/22) %%% \begin{itemize} %%% \item resolved tex expansion issues in the macros for a continuum of branches %%% \end{itemize} %%%\item v1.93 (2018/08/19) %%% \begin{itemize} %%% \item introduced |\setistmath| to set input mode for owners, action labels, and payoffs %%% \item introduced |\setistmath*| to print action labels in italics, in case of text mode %%% \item (internally) added |\istownerstyle|, |\istactionlabelstyle|, and |\istpayoffstyle| %%% \end{itemize} %%%\item v1.92 (2018/08/17) %%% \begin{itemize} %%% \item redesigned the \env{istgame} environment %%% \begin{itemize} %%% \item to extract the number input from \xw{scale}, \xw{xscale}, or \xw{yscale} %%% \item added |\xtscale|, |\xtxscale|, and |\xtyscale| to save scale option values %%% \end{itemize} %%% \item tested to apply scale values to improve the result of |\xtInfosetO| %%% \end{itemize} %%%\item v1.91 (2018/08/16) %%% \begin{itemize} %%% \item many changes to resolve expansion problems %%% \begin{itemize} %%% \item redefined |\cntmset|, |\cntmarcset|, and related macors %%% \item redifined |\cntmlevdist| and |\cntmsibdist| as lengths %%% \end{itemize} %%% \end{itemize} %%%\item v1.9 (2018/08/11) %%% \begin{itemize} %%% \item introduced |\cntmarcplotfactorset| %%% \end{itemize} %%%\item v1.8 (2018/08/09) %%% \begin{itemize} %%% \item made possible to use the directional abbreviations with |\xtInfoset| %%% \item introduced |\istrootocntm| and |\istrootocntmarc| (oval versions) %%% \end{itemize} %%%\item v1.7 (2018/08/04) %%% \begin{itemize} %%% \item introduced |\istbm| %%% \item introduced |\setistNewNodeStyle| %%% \end{itemize} %%%\item v1.6 (2018/08/01) %%% \begin{itemize} %%% \item resigned |\cntmdistance| (now ready for users) %%% \begin{itemize} %%% \item added |\cntmactsibdist| to distinguish it from |\cntmsibdist| %%% \end{itemize} %%% \item added |\cntmdistance*| to incorporate with |\xtdistance| %%% \item introduced |\istrootcntmA(')| %%% \begin{itemize} %%% \item added (internally) |\ISTCntmArc(')| %%% \item added |\cntmarcset| %%% \end{itemize} %%% \item introduced |\istrootcntm(')| %%% \begin{itemize} %%% \item added (internally) |\ISTCntm(')| %%% \end{itemize} %%% \item (internally) renamed |\istCntmRoot(Arc)| to |\obsoleteISTCntm(Arc)| %%% \end{itemize} %%%\item v1.5 (2018/07/26) %%% \begin{itemize} %%% \item introduced |\setxtinfosetlayer| %%% \item introduced |\setxtsubgamelayer| %%% \end{itemize} %%%\item v1.4 (2018/07/12) %%% \begin{itemize} %%% \item completely rewrote |\xtInfosetO| to deal with sloped information sets %%% \begin{itemize} %%% \item removed |\xtInfosetO'| and |\xtInfoset'| (critical change for users!) %%% \end{itemize} %%% \end{itemize} %%%\item v1.3 (2018/07/06) %%% \begin{itemize} %%% \item (internally) renamed some macros (such as |\xt@...|) %%% \item (internally) renamed |\xtaction| to |\istaction| %%% \item (internally) renamed |\xtpayoff| to |\istpayoff| %%% \item (internally) renamed |\istRoot(O)| to |\ISTRoot(O)| %%% \end{itemize} %%%\item v1.2 (2017/12/11) %%% \begin{itemize} %%% \item replaced |\istb.| by |\istbt| (critical change for users!) %%% \begin{itemize} %%% \item |\istb| redefined accordingly %%% \item this is the cost of introducing |\istB(*)| %%% \end{itemize} %%% \item introduced |\istB(*)| to deal with dual action labels %%% \item added |\istbt(*)| and |\istBt(*)| %%% \item added \xw{text depth=.25ex} as an option to |\istroot| and |\istrooto| %%% \end{itemize} %%%\item v1.1 (2017/10/02) %%% \begin{itemize} %%% \item introduced |\xtCommentTo| and |\xtCommentFrom| %%% \item introduced |\xtTimeLineH(')| %%% \item redefined |\xtActionLabel| to deal with sloped labels %%% \item replaced |\tikzstyle| by |\tikzset| %%% \end{itemize} \item v1.0 (2017/09/04) \begin{itemize} \item introduced |\cntmlevdist| and |\cntmsibdist| \item introduced |\cntmdistance| \item redefined related marcos \item package document done \end{itemize} %%%\item v1.0 (2017/09/04) ready to submit to CTAN %%% \begin{itemize} %%% \item introduced |\cntmlevdist| and |\cntmsibdist| %%% \item introduced |\cntmdistance| (for internal use) %%% \item redefined related marcos. %%% \item package document done %%% \end{itemize} %%%\item v0.99g (2017/08/21) %%% \begin{itemize} %%% \item redefined the \env{istgame} environment to add \xw{>=stealth} as default %%% \item added \xw{text depth=.25ex} as an option to |\istb| to get better alignment of action labels %%% \end{itemize} %%%\item v0.99f (2017/08/02) %%% \begin{itemize} %%% \item redefined |\xtInfosetO(')| %%% \begin{itemize} %%% \item added \verb+\begin{scope}[on background layer]...\end{scope}+ %%% \end{itemize} %%% \end{itemize} %%%\item v0.99e (2017/08/01) %%% \begin{itemize} %%% \item introduced the prime(\xw{'}) versions to deal with \xw{grow'} (this is the swap version in \TikZ) %%% \item redefined |\istroot(')| %%% \item defined |\istrooto(')| to replace |\istroot*| %%% \begin{itemize} %%% \item |\istroot*| completely replaced by |\istrooto| %%% \end{itemize} %%% \item redefinde |\istcntm| %%% \item defined |\istcntmarc| %%% \begin{itemize} %%% \item |\istcntm*| completely replaced by |\istcntmarc| %%% \end{itemize} %%% \item redefined |\xtInfoset(')| and |\xtInfosetOwner(')| %%% \item introduced |\xtInfosetO(')| %%% \begin{itemize} %%% \item |\xtInfoset*| completely replaced by |\xtInfosetO| %%% \end{itemize} %%% \item introduced |\xt@growswap| introduced %%% \item redefined |\xtNode| accordingly %%% \end{itemize} %%%\item v0.99d (2017/07/27) %%% \begin{itemize} %%% \item defined |\xtSubgameBox(*)| and |\xtSubgameOval(*)| to express a subgame %%% \end{itemize} %%%\item v0.99c (2017/07/20) %%% \begin{itemize} %%% \item defined |\xtgrow| to deal with going `clockwise' of branch arrangement %%% \item defined |\setxtgrowkey| to change between \xw{grow} and \xw{grow'} %%% \item introduced |\setistgrowdirection'| by redefining |\setistgrowdirection| %%% \item updated `related macros' accordingly %%% \end{itemize} %%%\item v0.99b (2017/07/16) %%% \begin{itemize} %%% \item renamed \xw{zero node} as \xw{plain node} %%% \item added |\setistPlainNodeStyle| %%% \item defined |\xtNode*| (for a terminal node text with a plain node) %%% \item redefined |\xt<...>NodeStyle| (now all arguments are optional) %%% \item renamed |\isthorizontallabelshift| as |\istactionlabelxshift|, with default \xw{1pt} %%% \item renamed |\istverticallabelshift| as |\istactionlabelyshift|, with default \xw{2pt} %%% \end{itemize} %%%\item v0.99a (2017/03/10) %%% \begin{itemize} %%% \item started rewriting package manual %%% \item introduced |\istb.|\ (for terminal nodes) %%% \item redefined |\xtShowTerminalNodes| %%% \item introduced |\xtShowEndPoints| and |\xtHideEndPoints| %%% \item redefined |\xtInfoset*|, with |\xtdefaultinfosep| added %%% \end{itemize} %%%\item v0.9 (2017/02/13) %%% \begin{itemize} %%% \item some internal macro names changed (|\xtnode|, |\xttnode|,|\xtshowtnode|) %%%% \item conflict with \pkg{tikz-qtree} resolved. (\env{istgame} differs from \env{tikzpicture} with \pkg{tikz-qtree}) %%%% \item |\setistbranchanchors| added %%% \item added \xw{zero node} %%% \end{itemize} %%%\item v0.8 (2017/01/17) %%% \begin{itemize} %%% \item macro names changed %%% \begin{itemize} %%% \item |\xtdistance|: prefix `\xw{x}' changed to `\xw{xt}' meaning `extensive tree' %%% \item |\xtInfoset(*)|, |\xtInfosetOwner|, |\xtActionLabel|, |xtOwner|, |\xtPayoff|, |\xtNode| %%% \item |\xtShowTerminalNodes|, |\xtHideTerminalNodes| %%% \item |\xtlevdist|, |\xtsibdist| %%% \end{itemize} %%% \item |\xtNode| redefined %%% \item some internal macro names changed (including |\xtpayff|, |\xtmove|) %%% \item node styles redefined %%% \item |\setistNodeStyle| added for node styles %%% \item |\setistdefaultnodecolor|, |setistdefaultnodebgcolor| added %%% \end{itemize} \end{itemize} \section{Acknowledgement} The basic idea of the \pkg{istgame} package came from Osborne's \pkg{egameps} package and Chen (2013). The update of the package \pkg{istgame} to \xw{version 2.0} is partly motivated by the questions and discussions on the \xw{game tree} topic at \url{https://tex.stackexchange.com/}. Special thanks go to Kangsoo Kim of KTUG for his great help in using \pkg{expl3} to simplify the appearance and the usage of the macros, and to resolve the issues on \TeX's expansion. \section{References} \hpara{}Chen, H.~K.~(2013), ``Drawing Game Trees with \TikZ,'' \url{http://www.sfu.ca/~haiyunc/notes/Game_Trees_with_TikZ.pdf}. \hpara{}Cho, I-S.~(2017), ``\pkg{istgame}: Drawing Game Trees with \TikZ,'' in Korean TeX Society, \emph{\TeX, Beyond the World of Typesetting}, Seoul: Kyungmoonsa, 203--237. \hpara{}Osborne, M.~J.~(2004a), ``Manual for \pkg{egameps.sty},'' Version 1.1, \url{http://texdoc.net/texmf-dist/doc/latex/egameps/egameps.pdf} \hpara{}\uline{\hphantom{Osborne, M.~J}}~(2004b), \emph{An Introduction to Game Theory}, New York: Oxford. \hpara{}Tantau, T.~(2021), ``\TikZ\ and PGF: Manual for version 3.1.9a,'' \url{http://sourceforge.net/projects/pgf}. %\section*{Discussions (in Korean) on KTUG board} % %\begin{itemize} %\item Drawing Game Trees 1: \url{http://www.ktug.org/xe/index.php?document_srl=207287} % %\item Drawing Game Trees 1-1: \url{http://www.ktug.org/xe/index.php?document_srl=207513} % %\item Drawing Game Trees 1-2: %\url{http://www.ktug.org/xe/index.php?document_srl=208286} % %\item Drawing Game Trees 2: \url{http://www.ktug.org/xe/index.php?document_srl=212043} % %\item Drawing Game Trees 2-1: %\url{http://www.ktug.org/xe/index.php?document_srl=212225} % %\item Drawing Game Trees 2-2: %\url{http://www.ktug.org/xe/index.php?document_srl=212319} %\end{itemize} \clearpage \printindex \end{document}