texlive[74536] Master: pgf-go (8mar25)
commits+karl at tug.org
commits+karl at tug.org
Sat Mar 8 21:58:18 CET 2025
Revision: 74536
https://tug.org/svn/texlive?view=revision&revision=74536
Author: karl
Date: 2025-03-08 21:58:18 +0100 (Sat, 08 Mar 2025)
Log Message:
-----------
pgf-go (8mar25)
Modified Paths:
--------------
trunk/Master/tlpkg/bin/tlpkg-ctan-check
trunk/Master/tlpkg/libexec/ctan2tds
trunk/Master/tlpkg/tlpsrc/collection-games.tlpsrc
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/pgf-go/
trunk/Master/texmf-dist/doc/latex/pgf-go/README.md
trunk/Master/texmf-dist/doc/latex/pgf-go/en/
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-catalogo.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-definiciones.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplos.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplosiniciales.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-eltablero.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-elterritorio.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lasmarcas.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-laspiedras.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-loelemental.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lopendiente.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-motivacion.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-preamble.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.cfg
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-catalogo.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-definiciones.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplos.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplosiniciales.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-eltablero.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-elterritorio.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lasmarcas.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-laspiedras.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-loelemental.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lopendiente.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-motivacion.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-preamble.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.cfg
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.tex
trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-en.pdf
trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-es.pdf
trunk/Master/texmf-dist/tex/latex/pgf-go/
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-coordinate-parser.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-goban.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-marks.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-players.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-profiles.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-remember.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-shadow-shine.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-stones.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-territory.sty
trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go.sty
trunk/Master/tlpkg/tlpsrc/pgf-go.tlpsrc
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/README.md (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/README.md 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,53 @@
+# pgf-go— for drawing go games.
+
+Release 0.2025.03.07 2025/03/07
+
+## Description
+
+pgf-go is a package for diagramming and commenting on Go games. It is currently not a definitive version, but the syntax will remain consistent.
+
+## Licence
+
+This package may be modified and distributed under the terms and
+conditions of the [LaTeX Project Public License](https://www.latex-project.org/lppl/), version 1.3 or greater.
+
+
+## Requirements
+
+The package compiles with UTF-8, LaTeX and LuaLaTeX. The following dependencies are required, but they are loaded automatically:
+
+- [tikz](https://ctan.org/pkg/tikz)
+ (including `\usetikzlibrary{patterns}`)
+- [xparse](https://ctan.org/pkg/xparse)
+
+
+## Installation
+
+You can use the `pgf-go` package by placing all of the
+distribution files in the directory containing your current tex file.
+
+## How to use it
+
+To use the package `pgf-go`, place the following lines in the preamble of
+your LaTeX document:
+
+```
+\usepackage{pgf-go}
+
+\begin{document}
+\begin{goban}
+
+\end{goban}
+```
+
+
+## Examples
+
+You can find examples on doc directory.
+
+## History
+ - version 0.2025.03.07 : partial realease.
+
+## Author
+
+Jonatán Perren, jonatan (dot) perren (at) gmail (dot) com
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-catalogo.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-catalogo.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-catalogo.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,88 @@
+\section{Catalog}
+\label{sec:catalog}
+
+\subsection{Profiles}
+\subsubsection{default}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{default}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{G1}
+ \mark[b, tcircle]{G2}
+ \mark[n, tsquare]{G3}
+ \end{goban}
+\end{codeexample}
+
+\subsubsection{pgfgo}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgo}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{G1}
+ \mark[b, tcircle]{G2}
+ \mark[n, tsquare]{G3}
+ \end{goban}
+\end{codeexample}
+
+\subsubsection{pgfgosmooth}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{G1}
+ \mark[b, tcircle]{G2}
+ \mark[n, tsquare]{G3}
+ \end{goban}
+\end{codeexample}
+
+\subsubsection{wain}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{wain}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{G1}
+ \mark[b, tcircle]{G2}
+ \mark[n, tsquare]{G3}
+ \end{goban}
+\end{codeexample}
+
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-catalogo.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-definiciones.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-definiciones.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-definiciones.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,328 @@
+\section{Definiciones de piedras y de tableros}
+
+
+\subsection{Piedras y jugadores}
+ \subsubsection{pgfgo}
+
+ \begin{center}
+ \pgfgouseprofile{pgfgo}
+ \begin{goban}[10x2, label = {at = {all}}, scale = 2]
+ \stone{A1}
+ \moves[b]{A:D2}
+ \stone[w, mark = {triangle}]{D1}
+ \moves*[b]{G1--J1|-G2}
+ \mark[b, t-circle]{E1}
+ \mark[w, t-square]{E2}
+ \end{goban}
+ \end{center}
+
+
+ Declaramos todos los jugadores y comenzamos definiendo la apariencia del neutral.
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer{pgfgo-neutral}{
+ stone = {
+ radius = 0.19cm,
+ line = {
+ true,
+ color = black,
+ width = 0.3pt,
+ opacity = 1,
+ },
+ fill = {
+ true,
+ color = gray,
+ opacity = 1,
+ },
+ radius = 0.17cm,
+ scale = 1,
+ drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45},
+ drop shine = {true, angle = 45}
+ },
+ move = {
+ label = {
+ font size = 0.5em,
+ color = black,
+ format = arabic,
+ }
+ },
+ mark = {
+ line = {
+ color = black,
+ width = 1pt,
+ },
+ fill = {false},
+ label = {
+ color = black,
+ format = arabic
+ }
+ }
+ }
+ \end{codeexample}
+
+
+ Algunas cosas como el grosor de linea, opacidades y dem\'as, deseo que se conserven en todas las piedras, as\'i que copio la plantilla del jugador neutral.
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-white}{
+ stone = {
+ fill = {
+ color = wainwhite
+ }
+ },
+ move = {
+ label = {
+ color = black
+ }
+ },
+ mark = {
+ line = {color = black},
+ fill = {color = white},
+ label = {color = black}
+ }
+ }
+
+
+ \pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-black}{
+ stone = {
+ fill = {
+ color = wainblack
+ }
+ },
+ move = {
+ label = {
+ color = pgfgo
+ }
+ },
+ mark = {
+ line = {
+ color = pgfgo,
+ },
+ label = {color = black}
+ }
+ }
+ \end{codeexample}
+
+
+ \subsubsection{pgfgosmooth}
+ \begin{center}
+ \pgfgouseprofile{pgfgosmooth}
+ \begin{goban}[10x2, label = {at = {all}}, scale = 2]
+ \stone{A1}
+ \moves[b]{A:D2}
+ \stone[w, mark = {triangle}]{D1}
+ \moves*[b]{G1--J1|-G2}
+ \mark[b, t-circle]{E1}
+ \mark[w, t-square]{E2}
+ \end{goban}
+ \end{center}
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-neutral]{pgfgosmooth-neutral}{
+ stone = {
+ line = false,
+ radius = 0.19cm,
+ drop shine = {opacity = 0.5}}
+ }
+ \end{codeexample}
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-black]{pgfgosmooth-black}{stone = {line = false, drop shine = {opacity = 0.5}}}
+ \end{codeexample}
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-white]{pgfgosmooth-white}{stone = {line = false}}
+ \end{codeexample}
+
+
+ \subsubsection{wain}
+
+ \begin{center}
+ \pgfgouseprofile{wain}
+ \begin{goban}[10x2, label = {at = {all}}, scale = 2]
+ \stone{A1}
+ \moves[b]{A:D2}
+ \stone[w, mark = {triangle}]{D1}
+ \moves*[b]{G1--J1|-G2}
+ \mark[b, t-circle]{E1}
+ \mark[w, t-square]{E2}
+ \end{goban}
+ \end{center}
+
+
+
+
+ \begin{codeexample}[code only]
+ \definecolor{waingoban}{HTML}{402A2D}
+ \definecolor{waingoban-s}{HTML}{493739}
+ \definecolor{waingrid}{HTML}{FAE0B2}
+ \definecolor{wainblack}{HTML}{4B4B4D} %PIEDRA NEGRA
+ \definecolor{wainshade}{HTML}{E6E7E8}
+ \definecolor{wainwhite}{HTML}{FEFEFE} %PIEDRA BLACA
+ \end{codeexample}
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer{wain-neutral}{
+ stone = {
+ line = {
+ true,
+ color = waingrid,
+ width = 0.2pt,
+ opacity = 1,
+ },
+ fill = {
+ true,
+ color = wainblack!50!wainwhite,
+ opacity = 1,
+ },
+ radius = 0.17cm,
+ scale = 1,
+ drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45},
+ drop shine = {true, angle = 45}
+ },
+ move = {
+ label = {
+ font size = 0.5em,
+ color = black,
+ format = arabic,
+ }
+ },
+ mark = {
+ line = {
+ color = waingoban,
+ width = 1pt,
+ },
+ fill = {false},
+ label = {
+ color = waingoban,
+ format = arabic
+ },
+ }
+ }
+ \end{codeexample}
+
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = wain-neutral]{wain-white}{
+ stone = {
+ fill = {
+ color = wainwhite
+ }
+ },
+ move = {
+ label = {
+ color = waingoban
+ }
+ },
+ mark = {
+ line = {
+ color = waingoban,
+ },
+ label = {color = waingoban}
+ }
+ }
+ \end{codeexample}
+
+
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = wain-neutral]{wain-black}{
+ stone = {
+ fill = {
+ color = wainblack
+ }
+ },
+ move = {
+ label = {
+ color = waingrid
+ }
+ },
+ mark = {
+ line = {
+ color = waingrid,
+ },
+ label = {color = waingrid}
+ }
+ }
+ \end{codeexample}
+
+
+
+
+
+
+\subsection{Tableros}
+\subsubsection{pgfgo}
+\begin{center}
+ \pgfgouseprofile{pgfgo}
+ \begin{goban}[10x2, label = {at = all}, scale = 2]
+ \end{goban}
+\end{center}
+
+\begin{codeexample}[code only]
+ \pgfgodefinegoban{pgfgo}{
+ background = {
+ fill = {
+ color = pgfgo,
+ opacity = 1},
+ line = {
+ color = pgfgo!10!black,
+ opacity = 1},
+ drop shadow},
+ grid = {
+ line = {
+ color = pgfgo!10!black,
+ width = 1pt}},
+ label = {
+ text color = black
+ }
+ }
+\end{codeexample}
+
+
+\subsubsection{pgfgosmooth}
+\begin{center}
+ \pgfgouseprofile{pgfgosmooth}
+ \begin{goban}[10x2, label = {at = all}, scale = 2]
+ \end{goban}
+\end{center}
+
+
+\begin{codeexample}[code only]
+ \pgfgodefinegoban[from = pgfgo]{pgfgosmooth}{
+ background = {line = false, rounded corners = 8pt, drop shadow},
+ grid = {line = {opacity = 0.1}}
+ }
+\end{codeexample}
+
+
+\subsubsection{wain}
+\begin{center}
+ \pgfgouseprofile{wain}
+ \begin{goban}[10x2, label = {at = all}, scale = 2]
+ \end{goban}
+\end{center}
+
+\begin{codeexample}[code only]
+ \pgfgonewprofile{wain}{
+ goban = {
+ background = {
+ fill = {
+ color = waingoban,
+ opacity = 1},
+ line = {
+ color = waingrid,
+ opacity = 1}},
+ grid = {
+ line = {
+ color = waingrid,
+ width = 1pt}},
+ label = {
+ text color = waingoban}
+ }
+ }
+\end{codeexample}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-definiciones.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplos.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplos.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplos.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,85 @@
+\section{Other Examples}
+
+\pgfgouseprofile{pgfgo}
+
+\begin{codeexample}[width=6cm]
+ \setlength{\tabcolsep}{2pt}
+
+ \begin{tabular}{cc}
+ \begin{goban}[partial = {from = A9 to E5}]
+ \stone[b]{C7}
+ \marks[sequence]{C8, D7, C6, B7};
+ \end{goban} &
+ %
+ \begin{goban}[partial = {from = E9 to I5}]
+ \stone[b]{G7}
+ \stone[w]{F7}
+ \marks[sequence]{G8, H7, G6};
+ \end{goban} \\
+ %
+ \begin{goban}[partial = {from = A1 to E5}]
+ \stone[b]{C3}
+ \stones[w]{B3,C2}
+ \marks[sequence]{C4, D3};
+ \end{goban} &
+ %
+ \begin{goban}[partial = {from = E1 to I5}]
+ \stone[b]{G3}
+ \stones[w]{F3,G2, H3}
+ \marks[sequence]{G4};
+ \end{goban}\\
+ \end{tabular}
+\end{codeexample}
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgoset{use i = false}
+
+ \begin{goban}[13, label = {at = {all}}]
+ \stones[b]{A1, J1, K1, G7, N9, D12, D13}
+ \stones[w]{A2, H1, J2, K2, G6, F7, G8, M9, N10, C12, C13, E12, E13}
+ \marks[circle]{B1, L1, N8, H7, D11}
+ \end{goban}
+ \begin{goban}[13, label = {at = {north, east, south}}]
+ \stones[w]{A2, H1, J2, K2, G6, F7, G8, M9, N10, C12, C13, E12, E13}
+ \stones[w,mark = triangle]{B1, L1, N8, H7, D11}
+ \end{goban}
+\end{codeexample}
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgoset{use i = false}
+
+ \begin{goban}[9, label = {at = {south, west}}]
+ \stones[b]{A2-|D1, B1, G1|-F2|-G4|-J7-|E9, G8}
+ \stones[w]{E1|-D6|-A7, D 8:9, F5, B:C 5, A:D 3}
+ \marks[b, t-circle]{J1 R H6, G3, F8 R J9; G8; A1, C1}
+ \marks[b, t-square, white]{A9 R C8, A4 R D6; B:C 5, D6}
+ \marks[t-square, neutral]{F1,F6}
+ \end{goban}
+\end{codeexample}
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[9, label = {at = {south, west}}]
+ \stones[b]{C7}
+ \stones[w]{B6,B7,C8,D7}
+ \moves*{C6,C5,D6,E6,D5,D4,E5,F5,E4,E3}
+ \end{goban}
+\end{codeexample}
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[9, partial = {from = A2 to H9}]
+ \stones[b]{A7,B6,C8,C7}
+ \stones[b, mark = triangle]{D6,D5,D4}
+ \stones[w]{C3,C4,C5,C6,D7,E7,E6}
+ \stone[w, mark = {custom = 1}]{E3}
+ \marks[b, circle, line = {color = red!80!black}] {D3,E4, E5}
+ \end{goban}
+\end{codeexample}
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgouseprofile{pgfgosmooth}
+
+ \begin{goban}[label = {at = all}]
+ \stones[b]{A8 |- B7, B9 -| C8, H:I 1:9, G8:9, A:D 1:2, A3; I2, I6, I8, H9, C1, A2, H:J4;}
+ \stones[w]{E1 |- B3 |- A4, A6 -| C7 -| D9, G1 |- I4 -| G7 -| F9; D7;}
+ \end{goban}
+\end{codeexample}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplos.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplosiniciales.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplosiniciales.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplosiniciales.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,52 @@
+\def\karu{K\={a}ru}
+
+\section{The Boards of \karu}
+
+\subsection{Board and Stones}
+
+\karu\ is writing an article to share with his students. He has noticed that diagramming \emph{software} does not offer satisfactory formats or results. Therefore, he decides to try \pgfgoname\ and starts by representing a game like the one shown in Figure~\ref{fig:first-example}.
+
+\begin{figure}[H]
+ \centering
+ \pgfgouseprofile{pgfgo}
+ \begin{goban}[use i = false, label = {at = {north, west}}]
+ \stones[black]{B2,E2,J2,C3,D3,G3,H3,C5,D5,E5,F5,G5,E6,G6}
+ \stones[white]{D8,F8,E7,H7,C6,D6,F6,H6,B5,J5,B4,E4,J4,J3,H2}
+ \end{goban}
+ \caption{}
+ \label{fig:first-example}
+\end{figure}
+
+\karu\ must start with the board. In \pgfgoname, there is currently a single environment where elements can be placed: |goban|. This environment controls by default the size and color of the board, the position and type of labels, among other properties. It also allows partial board representations.
+
+\begin{codeexample}[width=4.4cm]
+ \begin{goban}
+ \end{goban}
+\end{codeexample}
+
+\karu\ is satisfied. The environment provides a default $9\times 9$ board, which is exactly what he needs, but he must add side labels. The |goban| environment does not require mandatory parameters, although it accepts an optional one: a list of |keys| or |key=values| for configuration. \karu\ consults the section on |goban| (p.~\pageref{sec:board}) and decides to add labels to the environment. He knows that the \emph{keys} controlling the objects in the goban are divided into three groups: |grid|, for the central grid; |background|, for the border and board fill; and |label|, for coordinate labels. The latter is the one that interests him. This \emph{key}, among other options, can take the \emph{key} |at| to define the label position with values such as |above|, |west|, |below|, |right|, |all|, or |none|. Cardinal points can also be used. Since he only wants labels above and to the left of the goban, he will use the \emph{keys} |above| and |left|.
+
+\begin{codeexample}[width=4.7cm]
+ \begin{goban}[label = {at = {above, left}}]
+ \end{goban}
+\end{codeexample}
+
+\karu\ feels that everything is going well, but he notices that his board includes an |I| instead of omitting it and going directly to |J|. By default, in \pgfgoname, "I" exists and is used both as a coordinate and in the side labels, although it is possible to remove it. There are two ways to do this: setting the global \emph{key} |use i| to |false| (|\pgfgoset{use i = false}|), which would prevent \karu\ from worrying about this throughout the rest of the article, or applying it directly to the board with the same \emph{key} and value.
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgoset{use i = false}
+
+ \begin{goban}[label = {at = {above, left}}]
+ \end{goban}
+\end{codeexample}
+
+Now he is ready to place the stones. For this, \karu\ has several macros. Let’s start with the most basic one: |\stone[options]{intersection}|. This command accepts two parameters: the first, optional, controls the appearance and additional elements of the stones (such as marks); the second, mandatory, is the intersection. \karu\ does not need to convert intersections to numbers since he can specify them alphanumerically. By default, the stones are neutral, but he can choose the first player by passing the \emph{key} |black| or |b|.
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[label = {at = {above, left}}, use i = false]
+ \stone[black] {D8}
+ \stone[black] {F8}
+ \stone[b] {E7}
+ \stone[b] {H7}
+ \end{goban}
+\end{codeexample}
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-ejemplosiniciales.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-eltablero.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-eltablero.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-eltablero.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,540 @@
+\section{The Board}
+\label{sec:board}
+
+When we refer to the "board," we mean an environment or \emph{scope} in which both the goban (the game grid) and its contents—stones, coordinate labels, and other relevant information—are rendered. This environment is designed to be flexible and customizable, allowing users to adapt its appearance and functionality according to the needs of the diagram, whether to represent full games, specific sections, or even add visual annotations.
+
+\begin{environment}{{goban}\opt{\oarg{options}}}
+
+ Initializes the goban environment. By default, it draws a square 9×9 intersection board with a visible border, white background, and no labels on the sides.
+
+ \begin{codeexample}[width=5cm]
+ \begin{goban}
+ \end{goban}
+ \end{codeexample}
+
+ Since the board is the only macro that utilizes the TikZ layer, each intersection can be accessed using its alphanumeric coordinate (as in \pgfname) or numeric values in the \tikzname\ coordinate system. This allows combining Go’s intuitive syntax with TikZ’s graphical capabilities, which is especially useful for adding custom elements, such as arrows or marks, directly onto the board.
+
+ \begin{codeexample}[width=5.85cm]
+ \begin{goban}[19, partial = {from = J1 to S9},
+ label = {at = {north, east}}]
+ \stones {K8,R8,Q5,R5,O4,Q4,L3,O3,M2,N2}
+ \mark[black, circle] {K8}
+ \stones[white] {K6,R4,R3,P3,N1,O2,Q2}
+
+ \tikzset{flecha/.style = {-{latex[]}, line width = 2pt, blue}}
+ \draw[flecha] (12,8)--(17,8);
+ \end{goban}
+ \end{codeexample}
+
+ \begin{key}{/pgfgo/goban/use i=\meta{boolean} (default true, initially true)}
+
+ Enables or disables the use of the letter "I" in the board’s coordinates and labels. When disabled ("false"), any reference to "I" is interpreted as "J".
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {13, label = {at = north}}}
+
+ \begin{goban}[label = {at = west}, partial = {from = H1 to M3}]
+ \stone[b]{J2}
+ \end{goban}
+
+ \begin{goban}[use i = false, partial = {from = H1 to N3}]
+ \stone[b]{J2}
+ \end{goban}
+
+ \begin{goban}[use i = false, label = {at = east}, partial = {from = H1 to N3}]
+ \stone[white, mark = {custom = !}] {I2} % If it’s I, it shifts to J.
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/size=\meta{nlines or nlines |x| nlines} (initially 9)}
+
+ Defines the number of vertical and horizontal lines on the board. The word "size" can be omitted, and the value specified directly. If a single integer (e.g., |9|) is provided, the board will be square (9×9). If an expression like |5x3| is used, a rectangular board with 5 columns and 3 rows will be created.
+
+ \begin{codeexample}[width=6.5cm]
+ \begin{goban}[5]
+ \end{goban}
+
+ \begin{goban}[5x3]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/scale=\meta{float} (initially 1)}
+
+ Controls the global scale of the board, affecting both its overall dimensions and the thickness of certain elements (e.g., the "line width" of the lines).
+
+ \begin{codeexample}[width=5.5cm]
+ \begin{goban}[2, scale = 2]
+ \stone[b, mark]{A1}
+ \end{goban}
+
+ \begin{goban}[2, scale = 1]
+ \stone[b, mark]{A1}
+ \end{goban}
+
+ \begin{goban}[2, scale = 0.5]
+ \stone[b, mark]{A1}
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \subsection{Grid}
+
+ The grid refers to the central lines that form the board’s intersections.
+
+ \begin{key}{/pgfgo/goban/grid=\meta{options}}
+ Controls the behavior and appearance of the board’s central lines. This set of options allows modifying their visibility, color, thickness, and spacing, offering a high degree of customization.
+ \end{key}
+
+ \begin{stylekey}{/pgfgo/goban/grid/false}
+
+ Disables the central lines, leaving only the border and stones visible.
+
+ \begin{codeexample}[]
+ \begin{goban}[3]
+ \stone[b]{A1}
+ \stone[w]{B2}
+ \end{goban}
+
+ \begin{goban}[3, grid = false]
+ \stone[b]{A1}
+ \stone[w]{B2}
+ \end{goban}
+ \end{codeexample}
+
+ The first board shows the default grid.
+ \end{stylekey}
+
+ \begin{key}{/pgfgo/goban/grid/line=\meta{options}}
+ Allows controlling the grid lines.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/line/color =\meta{color} (initially black)}
+
+ Allows changing the color of the grid lines.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[grid = {line = {color = blue}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[grid = {line = {color = red}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/line/opacity =\meta{float} (initially 1)}
+
+ Sets the opacity of the grid lines, from 0 (transparent) to 1 (opaque).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[grid = {line = {opacity = 0.2}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/line/width =\meta{dimension} (initially 0.55pt)}
+
+ Defines the thickness of the grid lines.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[grid = {line = {width = 1.5pt}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/x sep =\meta{dimension} (initially 1.25em)}
+ Sets the spacing between vertical lines, adjusting the width of the board’s columns.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/y sep =\meta{dimension} (initially 1.25em)}
+ Sets the spacing between horizontal lines, adjusting the height of the rows.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/sep =\meta{dimension} (initially 1.25em)}
+ Simultaneously defines the vertical and horizontal spacing of the lines, ensuring uniform spacing in both directions. This is a convenient option for maintaining balanced proportions.
+ \end{key}
+
+ \subsection{Border}
+
+ The board’s border is the outline that frames the grid and stones, providing a clear visual boundary. By default, it is active, has a white background, and a black outline.
+
+ \begin{key}{/pgfgo/goban/background=\meta{options} (default true)}
+ Controls the properties of the board’s border, such as its visibility, color, thickness, and shape, allowing detailed customization.
+ \end{key}
+
+ \begin{stylekey}{/pgfgo/goban/background/false}
+
+ Completely disables the board’s border, removing both the outline and fill. This is useful for minimalist diagrams or when the document’s background already provides sufficient contrast.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = false, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{stylekey}
+
+ \begin{key}{/pgfgo/goban/background/fill=\meta{options} (initially true)}
+ Controls options related to the board’s background fill.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/fill=\meta{boolean} (initially true)}
+
+ Determines whether the board’s background fill is active. If disabled, the area inside the border will be transparent, showing only the outline (if enabled).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = false}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/fill/color =\meta{color} (default white)}
+
+ Defines the fill color of the board.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {fill = {color = orange!40}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {fill = {color = olive!30}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/fill/opacity =\meta{float} (initially 1)}
+
+ Controls the opacity of the fill, from 0 (transparent) to 1 (opaque).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {fill = {color = orange!40}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {fill = {color = orange!40}, fill = {opacity = 0.5}}, resume]
+ \end{goban}
+ \end{codeexample}
+
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line=\meta{options} (default true)}
+ Controls the options for the background’s outline.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line=\meta{boolean}}
+ Enables or disables the border line.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = false}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line/color =\meta{color} (default black)}
+
+ Defines the color of the border line, allowing it to stand out from the background or grid lines.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = {color = blue}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line/opacity =\meta{float} (default 1)}
+
+ Adjusts the opacity of the border line.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = {color = red}, line = {opacity = 0.5}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line/width =\meta{dimension} (default 0.75pt)}
+
+ Controls the thickness of the border line.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = {width = 1.5pt}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/rounded corners =\meta{dimension} (default 1pt)}
+
+ Adjusts the rounding of the border’s corners, from 0pt (sharp corners) to larger values for a smoother, more stylized effect.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {rounded corners = 0pt}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {rounded corners = 0.625em}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/sep =\meta{dimension} (default /pgfgo/goban/stone/radius * 1.5)}
+
+ Defines the separation between the grid and the border, based by default on the stone radius multiplied by 1.5. This adjustment ensures that stones near the border do not overlap with it.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {sep = 0.625em}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {sep = 1.5em}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \subsection{Partial Board}
+
+ In many cases, it’s not necessary to represent a full board, but rather just a rectangular section—whether due to space constraints, to focus attention on a specific area, or to simplify diagram creation. The |goban| environment includes the \emph{key} |partial|, which allows defining this region using the sub-\emph{key} |from|. This specifies the opposite vertices of a rectangle, regardless of the order in which they are provided, making it easy to use. For example, |from = A1 to D3| is equivalent to |from = D3 to A1|.
+
+ \begin{figure}[H]
+ \centering
+
+ \begin{tikzpicture}
+ \node[anchor=north] (X) {
+ \begin{goban}[label = {at = {north, west}}]
+ \coordinate (A) at (4,6);
+ \coordinate (B) at (9,9);
+ \coordinate (C) at (A|-B);
+ \coordinate (D) at (A-|B);
+
+ \tikzset{punto/.style = {circle, fill = #1, draw, inner sep=0.25em, fill opacity=0.5, anchor=center}}
+
+ \node[punto = red] at (A){};
+ \node[punto = red] at (B){};
+ \node[punto = blue] at (C){};
+ \node[punto = blue] at (D){};
+
+ \draw[red, {latex}-{latex}, shorten <=5pt, shorten >= 5pt] (A)--(B);
+ \draw[blue, {latex}-{latex}, shorten <=5pt, shorten >= 5pt] (C)--(D);
+
+ \node[fit=(A)(B), draw, inner sep=0.6em, rounded corners, line width=1pt, fill opacity=0.1, fill=orange] {};
+ \end{goban}
+ };
+
+ \node[anchor=north, xshift=15em] {
+ \tikz{
+ \node[inner sep=0] (Y) {
+ \begin{goban}[label = {at = {north, west}}, partial = {from = I9 to D6}]
+ \end{goban}
+ };
+ \node[align = left, anchor=north, inner sep=0, yshift=-1em] at (Y.south){
+ {\color{blue}|partial = {from = D9 to I6}|}\
+ {\color{blue}|partial = {from = I6 to D9}|}\
+ {\color{red} |partial = {from = D6 to I9}|}\
+ {\color{red} |partial = {from = I9 to D6}|}\
+ };
+ }
+ };
+ \end{tikzpicture}
+ \end{figure}
+
+ \begin{key}{/pgfgo/goban/partial=\meta{options}}
+
+ Controls options for representing partial boards, allowing the delimitation of a specific region of the goban.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/partial/from=\meta{intersection |to| intersection}}
+
+ Specifies the opposite vertices of the rectangle defining the partial board. These intersections can be any pair of points forming a diagonal of the desired area.
+
+ \end{key}
+
+ \begin{codeexample}[]
+ \tikzset{flecha/.style = {-{latex[]}, line width = 1pt, red}}
+
+ \begin{goban}[partial = {from = A1 to D3}]
+ \draw[flecha] (1,1)--(4,3); % From A1 to D3
+ \end{goban}
+
+ \begin{goban}[partial = {from = A9 to I6}]
+ \draw[flecha] (1,9)--(9,6); % From A9 to I6
+ \end{goban}
+
+ \begin{goban}[partial = {from = E2 to B4}]
+ \draw[flecha] (5,2)--(2,4); % From E2 to B4
+ \end{goban}
+ \end{codeexample}
+
+ \subsection{Board Labels}
+
+ Labels are the alphanumeric indicators (letters and numbers) that appear on the sides of the board to identify intersections.
+
+ \begin{key}{/pgfgo/goban/label=\meta{options}}
+ Controls the properties of the labels, such as their position and format.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/false}
+ Disables all labels.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/at =\meta{options}}
+
+ Defines on which sides of the board the labels appear. Options include combinations of cardinal positions or predefined values like "all" or "none".
+
+ \begin{stylekey}{/pgfgo/goban/label/at/all}
+
+ Displays labels on all sides of the board (north, south, east, and west).
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/none}
+
+ Equivalent to |label=false|, removing all labels.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/east}
+ Places labels only on the right side (vertical numbers).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/right}
+ Equivalent to |east|.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/north}
+ Places labels only at the top (horizontal letters).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/above}
+ Equivalent to |north|.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/south}
+ Places labels only at the bottom (horizontal letters).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/below}
+ Equivalent to |south|.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/west}
+ Places labels only on the left side (vertical numbers).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/left}
+ Equivalent to |west|.
+ \end{stylekey}
+
+ \begin{codeexample}[]
+ \begin{goban}[12, label = {at = {all}}]
+ \end{goban}
+
+ \begin{goban}[partial = {from = A6 to I9}, label = {at = north}]
+ \end{goban}
+
+ \begin{goban}[partial = {from = B2 to E4}, label = {at = {north, east}}]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/font size = \meta{dimension} (initially 0.75em)}
+
+ Adjusts the font size of the labels.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/sep = \meta{dimension} (initially 0.5em)}
+
+ Controls the distance between the labels and the board’s border.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/text color = \meta{color} (initially black)}
+
+ Defines the text color of the labels.
+ \end{key}
+
+ \subsection{Remembering a Board}
+ The "remember" system allows storing and reusing a board’s state across different |goban| environments. This functionality is highly experimental and, strictly speaking, should not yet be documented.
+
+ \begin{stylekey}{/pgfgo/goban/new remember}
+
+ Starts a new memory state, saving the current board’s stones and configurations for later use.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/add to remember}
+
+ Adds elements to the memorized state without erasing the previous content, allowing incremental diagram construction.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/forget}
+
+ Erases the memorized state, resetting the memory system.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/resume}
+
+ Retrieves and renders the memorized state, useful for continuing from a previous point without rewriting the code.
+
+ \end{stylekey}
+
+\end{environment}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-eltablero.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-elterritorio.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-elterritorio.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-elterritorio.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,42 @@
+\section{Territory}
+\noindent TODO. VOLATILE
+
+\begin{command}{\territory\opt{\oarg{options}}\marg{intersection, intersection,...}}
+ Does not accept coordinate syntax for groups.
+\end{command}
+
+\begin{key}{/pgfgo/territory/forget}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/remember}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/black}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/white}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/neutral}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/line color=\meta{color} (initially black)}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/line opacity=\meta{number} (initially 1)}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/fill color=\meta{color} (initially black)}
+
+\end{key}
+
+\begin{key}{/pgfgo/territory/line opacity=\meta{number} (initially 1)}
+
+\end{key}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-elterritorio.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lasmarcas.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lasmarcas.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lasmarcas.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,495 @@
+\section{Marks}
+
+Marks are graphical elements placed at the intersections of the board to highlight specific positions, indicate points of interest, or number sequences without the need to add stones. \pgfgoname\ offers versatile commands and options to customize these marks, ranging from predefined shapes to custom labels.
+
+\begin{command}{\mark\opt{\oarg{options}}\marg{intersection}}
+
+ Draws an individual mark at the specified intersection (e.g., "C3"). Options allow defining its shape, color, and other attributes.
+\end{command}
+
+\begin{command}{\marks\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+
+ Similar to |\mark|, but applies the same mark to multiple intersections using the coordinate syntax.
+\end{command}
+
+\begin{key}{/pgfgogo/mark = \meta{options} (default cross)}
+
+ Defines the type of mark to be placed, with a cross ("cross") as the default value if no other option is specified.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/circle}
+
+ Places a hollow circle as a mark.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[circle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/triangle}
+
+ Draws a hollow triangle.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/square}
+
+ Places a hollow square.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/cross}
+
+ Draws a cross.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[cross]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/filled square}
+
+ Places a filled square.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[filled square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/filled circle}
+
+ Draws a filled circle.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[filled circle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/t-circle}
+
+ Places a small circle with a thicker border, specifically designed for marking territories.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[t-circle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/t-square}
+
+ Draws a small square with a thick border, similar to "t-circle," used to mark territories.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[t-square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/hatched lines}
+
+ Places a pattern of crossed (hatched) lines.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[hatched lines]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/sequence=\meta{options}(default false, initial false)}
+ Allows numbering a series of marks in order.
+\end{key}
+
+\begin{key}{/pgfgo/mark/sequence/use}
+ Displays the |sequence| mark on the board.
+\end{key}
+
+\begin{key}{/pgfgo/mark/sequence/from=\meta{number}}
+
+ Sets the starting number of a numbered mark sequence, allowing continuation from a specific point instead of 1.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[sequence = {use, from = 3}]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/custom=\meta{token list}}
+
+ Allows defining a custom mark using text or symbols (e.g., "!" or "?") and even images.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[custom = {!}]{C3}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[custom = {\tikz{\node[rounded corners, draw, inner sep = 1em, red]{\dots};}}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/line = \meta{option} (default true)}
+ Controls the outline of the mark.
+\end{key}
+
+\begin{key}{/pgfgo/mark/line/color = \meta{color}}
+ Defines the outline color of the mark.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle, line = {color = red}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/line/width = \meta{dimension}}
+
+ Adjusts the thickness of the mark’s outline.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle]{C3}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle, line = {width = 0.1pt}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/fill = \meta{options} (default true)}
+ Controls the fill of a mark.
+\end{key}
+
+\begin{key}{/pgfgo/mark/fill/color = \meta{color}}
+
+ Sets the fill color of a mark.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[circle, fill = {color = red}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label = \meta{option}}
+ Controls the appearance of labels for marks that have them.
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/color = \meta{color}}
+
+ Controls the color of the text or symbol in custom marks (e.g., with |custom|).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[custom = {!}, label = {color = red}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format=\meta{options} (default arabic)}
+
+ Controls the numbering style of enumeration labels (e.g., |sequence|), with options such as Arabic numerals, letters, or Roman numerals.
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/arabic}
+
+ Uses Arabic numerals for sequences.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = arabic}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/alph}
+
+ Uses lowercase letters for the sequence.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = alph}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/Alph}
+
+ Uses uppercase letters.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = Alph}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/roman}
+
+ Uses lowercase Roman numerals.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = roman}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/Roman}
+
+ Uses uppercase Roman numerals.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = Roman}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/black}
+
+ Applies the properties of the first player (black) to the mark.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle]{C3}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[black, t-square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/white}
+
+ Applies the properties of the second player (white) to the mark.
+\end{key}
+
+\begin{key}{/pgfgo/mark/neutral}
+
+ Keeps the mark unassociated with any player.
+\end{key}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lasmarcas.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-laspiedras.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-laspiedras.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-laspiedras.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,533 @@
+\section{Stones, Moves, and Prisoners}
+
+Stones are the fundamental elements. In \pgfgoname, commands and options are provided to draw them flexibly, allowing customization of their appearance and behavior according to the needs of the diagram.
+
+\subsection{Stones}
+
+\begin{command}{\stone\opt{\oarg{options}}\marg{intersection}}
+ This command draws an individual stone at the specified intersection. The mandatory argument is the coordinate (e.g., "C2"), while optional options allow adjusting its style, such as color, size, or markings, following the convention of the first player in Go.
+\end{command}
+
+\begin{command}{\stones\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+ Similar to |\stone|, but allows placing multiple stones using the corresponding syntax (see Coordinate Syntax).
+\end{command}
+
+It is possible to change an option for all players using |\pgfgoset{stone = {...}}|. This is equivalent to |\pgfgoset{players = {all = {stone = {...}}}}|.
+
+\begin{key}{/pgfgo/stone/fill = \meta{option} (default true)}
+ Controls the fill options of a stone.
+\end{key}
+
+\begin{key}{/pgfgo/stone/fill/color = \meta{color}}
+ Defines the fill color of a stone.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[fill = {color = cyan!80!black}]{C2,D3}
+ \stone[fill = {color = magenta!80!black}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/fill/opacity = \meta{float} (initially 1)}
+
+ Controls the opacity of the stone’s fill, ranging from 0 (transparent) to 1 (opaque).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, fill = {opacity = 0.8}]{C2,D3}
+ \stone[w, fill = {opacity = 0.5}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/line = \meta{option} (initially true)}
+ Controls the border options of a stone.
+\end{key}
+
+\begin{key}{/pgfgo/stone/line/color = \meta{color} (initially black)}
+
+ Sets the border color of the stone, which is black by default for all stones.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, line = {color = magenta}]{C2,D3}
+ \stone[w, line = {color = cyan}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/line/opacity = \meta{float} (initially 1)}
+
+ Defines the opacity of the stone’s border, allowing it to be more subtle or transparent.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, line = {opacity = 0.5}]{C2,D3}
+ \stone[w, line = {opacity = 0.8}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/line/width = \meta{dimension} (initially 0.9pt)}
+
+ Controls the thickness of the stone’s border.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w, line = {width = 2pt}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/radius = \meta{dimension} (initially 0.55em)}
+
+ Sets the size of the stone by its radius.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, radius = 0.15cm]{C2,D3}
+ \stone[w, radius = 0.25cm]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/scale = \meta{float} (initially 1)}
+
+ Defines a scaling factor that affects all elements of the stone (radius, border, markings), maintaining their proportions.
+\end{key}
+
+\begin{key}{/pgfgo/stone/black}
+
+ Assigns the stone the characteristics of the first player (black by default), including fill and border color. This is the initial state of any stone unless another option is specified.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[black]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/b}
+
+ Abbreviation for "black," with identical functionality.
+\end{key}
+
+\begin{key}{/pgfgo/stone/white}
+
+ Assigns the stone the characteristics of the second player (white by default), with a white fill and black border.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[white]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[white]{C2,D3}
+ \stone[white]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/w}
+
+ Abbreviation for "white," with the same functionality.
+\end{key}
+
+\begin{key}{/pgfgo/stone/mark = \meta{mark keys}}
+
+ Places a mark on the stone (e.g., triangle, circle). Marks can be further customized with other keys, such as color or size.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, mark = triangle]{C2,D3}
+ \stone[w, mark = t-circle]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/forget}
+
+ When the board uses a memory system (|new remember|, |resume|), this option indicates that the stone should not be remembered, allowing it to be excluded from subsequent states.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w, forget]{B4}
+ \end{goban}
+
+ \begin{goban}[resume]
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/remember}
+
+ In a board with active memory, ensures that the stone is remembered even if the general environment uses |forget|.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[forget]
+ \stones[b]{C2,D3}
+ \stone[w, remember]{B4}
+ \end{goban}
+
+ \begin{goban}[resume]
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/prisoner=\meta{prisoner options} (default fill opacity = 0.5)}
+
+ Characterizes a stone as a prisoner, typically with reduced opacity (0.5 by default) to indicate it has been captured. Other options can be added to customize its appearance.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, prisoner]{C2,D3}
+ \stone[white]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\subsection{Moves}
+
+Move commands allow representing sequences of plays, automatically alternating between black and white. They include options for numbering the moves and customizing the associated stones.
+
+\begin{command}{\move\opt{*}\opt{\oarg{options}}\marg{intersection}}
+
+ Draws a stone as part of a move sequence, automatically alternating colors (black, white, black, etc.). The starred version (|\move*|) adds a numeric label to the stone.
+\end{command}
+
+\begin{command}{\moves\opt{*}\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+
+ Similar to |\move|, but applies the sequence to multiple intersections in a single line.
+\end{command}
+
+It is possible to change options for all players using |\pgfgoset{move = {...}}|, which is equivalent to |\pgfgoset{players = {all = {move = {...}}}}|.
+
+\begin{key}{/pgfgo/move/black}
+
+ Sets the move sequence to start with the black player, useful for forcing the start of a play in specific diagrams.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves[b]{C2,B4}
+ \move{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/white}
+
+ Sets the sequence to start with the white player, altering the natural order of moves.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves[white]{C2,B4}
+ \move{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/from = \meta{number}}
+
+ Defines the starting number of a numbered move sequence, allowing continuation from a specific point instead of starting at 1.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label = \meta{options}}
+
+ Controls the properties of numeric labels in starred moves, such as size, color, or format.
+\end{key}
+
+\begin{key}{/pgfgo/move/label/font size=\meta{dimension} (initially 0.5em)}
+
+ Adjusts the font size of the labels, allowing them to adapt to the stone size or overall design.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*[label = {font size = 0.125em}]{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format = \meta{options} (initially arabic)}
+
+ Defines the numbering style of the labels.
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/arabic}
+
+ Uses Arabic numerals, the default format for move labels.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/alph}
+
+ Uses lowercase letters for the labels.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move={label = {format=alph}}}
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/Alph}
+
+ Uses uppercase letters.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move = {label = {format = Alph}}}
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/roman}
+
+ Uses lowercase Roman numerals.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move = {label = {format = roman}}}
+ \begin{goban}
+ \moves*{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/Roman}
+
+ Uses uppercase Roman numerals.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move = {label = {format = Roman}}}
+ \begin{goban}
+ \moves*{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/color = \meta{color}}
+
+ Defines the color of the labels.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \moves*{C2,B4}
+ \move*{D3}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[label = {color = red}]{C2,B4}
+ \move*[label = {color = blue}]{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/forget}
+
+ Prevents move labels from being stored in the board’s memory when using |remember|, allowing stones to persist without their numbers.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \moves*[label = forget]{C2,B4,D3}
+ \end{goban}
+
+ \begin{goban}[resume]
+ \moves*{C:D4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/remember}
+
+ Ensures that labels are stored in memory, even if the environment uses |forget|, maintaining their continuity in subsequent diagrams.
+\end{key}
+
+\begin{key}{/pgfgo/move/forget}
+
+ Indicates that moves should not be remembered in the board’s memory, removing them from future states when using |resume|.
+\end{key}
+
+\begin{key}{/pgfgo/move/remember}
+
+ Ensures that moves are remembered, preserving them for reuse with |resume|.
+\end{key}
+
+\subsection{Prisoners}
+
+\pgfgoname\ provides specific commands to represent prisoners, typically with reduced opacity to distinguish them from active stones.
+
+\begin{command}{\prisoner\opt{\oarg{options}}\marg{intersection}}
+
+ Draws a prisoner stone at a specific intersection, with options to customize its style.
+\end{command}
+
+\begin{command}{\prisoners\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+
+ Places multiple prisoner stones in a single line, efficient for showing captured groups.
+\end{command}
+
+\begin{key}{/pgfgo/prisoner=\meta{stone options} (default fill opacity = 0.5)}
+
+ Defines the characteristics of prisoner stones, with a default fill opacity of 0.5 to indicate their status. Other |\stone| options, such as color or size, can be applied.
+
+\end{key}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-laspiedras.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-loelemental.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-loelemental.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-loelemental.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,892 @@
+\section{The keystone}
+
+\subsection{The \texttt{\textbackslash let} Game}
+
+To enable the use of the macros |\mark| and |\marks|, these primitives have been reassigned to |\pgfgo_old_mark| and |\pgfgo_old_marks|, respectively. This is done to avoid conflicts with previous definitions and ensure that the new functionalities of the \pgfgoname\ package can be seamlessly integrated into existing documents. In practice, if a user needs to access the original versions, they can still do so using the renamed commands.
+
+\subsection{Configuration}
+
+The macro |\pgfgoset{...}| allows defining general configurations for the package. It is equivalent to |\keys_set:nn{pgfgo}{...}|, meaning it uses the LaTeX3 key system to set options in a structured and hierarchical manner. This macro is particularly useful for customizing the package's global behavior, such as the appearance of the board, stones, or moves, without needing to repeat configurations in each individual environment. For example, a user could define custom colors for players or adjust the board's design to apply to all diagrams in the document. It also serves as a gateway to direct formatting.\footnote{Use with discretion\dots unlike footnotes.}
+
+\begin{command}{\pgfgoset\marg{options}}
+\end{command}
+
+\begin{key}{/pgfgo/goban = \meta{goban options}}
+ Sets general options for the board. This includes properties such as size, background color, visibility of grid lines, or coordinate labels. For example, it can be used to create partial boards or modify the visual style of the border.
+\end{key}
+
+\begin{key}{/pgfgo/stone = \meta{stone options}}
+ Defines general options for stones, such as their fill color, outline, or default markings. It is useful for establishing a consistent style across all stones in a document (neutral, white, or black).
+\end{key}
+
+%\begin{key}{/pgfgo/move = \meta{move options}}
+% Sets general options for moves, such as color or automatic labeling.
+%\end{key}
+
+%\begin{key}{/pgfgo/mark = \meta{mark options}}
+% Sets general options for markings, allowing the definition of default shapes (circles, triangles, etc.) or colors to highlight specific positions on the board.
+%\end{key}
+
+\begin{key}{/pgfgo/use i = \meta{boolean} (default true)}
+ Allows deciding whether or not to use the "I" label on the board. By default, it is enabled ("true"), meaning coordinates include the letter "I". If disabled ("false"), the system skips this letter and jumps directly from "H" to "J", which is common in certain Go game representations.
+\end{key}
+
+\begin{key}{/pgfgo/players = \meta{players options}}
+ Allows defining options for each player (including neutral ones). This \emph{key} acts as a container encompassing specific configurations for black, white, and neutral players, facilitating customization based on the user's rules or preferences. All available options and how to customize stone styles will be detailed in another section.
+\end{key}
+
+\begin{codeexample}[]
+ \pgfgoset{
+ goban = {
+ background = {
+ fill = {color = pgfgo},
+ line = false},
+ grid = {line = {color = white}}},
+ players = {
+ black = {
+ stone = {
+ line = {color = magenta},
+ fill = {color = blue!50!black}}},
+ white = {
+ stone = {line = {color = blue}},
+ mark = {line = {color = orange}}
+ }
+ }
+ }
+
+ \begin{goban}[3]
+ \stone[black] {A1}
+ \stone[white, mark = {triangle}] {A2}
+ \end{goban}
+
+ \begin{goban}[4]
+ \stone[black] {A2}
+ \stones[white, mark = {circle}] {B2,A3}
+ \end{goban}
+\end{codeexample}
+
+Subsequent |goban| environments inherit these configurations, although they can be overridden locally if necessary.
+
+\subsection{Coordinate Syntax}
+\label{subsec:coordinate-syntax}
+
+One feature that distinguishes \pgfgoname\ from other packages is the ability to input coordinates using various syntaxes, offering flexibility to represent positions on the board intuitively.
+\begin{itemize}
+ \item Multiple entries can be separated by commas.
+ \item Stones can be removed by adding a subtractive group after a semicolon («;»).
+\end{itemize}
+
+However, for performance and consistency reasons, some freedoms that were initially unrestricted have been limited. For example, to refer to an intersection, the alphabetical coordinate must be written in uppercase and without spaces. Thus, the B5 intersection must be entered as |B5|, not as |B 5|, |B 5|, or |b5|, since spaces between the letter and number are invalid in this context. Restrictions will be explained in each case.
+
+\subsubsection{Stone Groups}
+
+\def\sssseccion#1{\vskip0.5em\noindent\textbf{#1}\par}
+
+\sssseccion{Intersection}
+
+Intersections are specified by indicating the letter followed by the number, with no spaces between the alphabetic and numeric components.
+
+\begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[label = {at = {south, west}}]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \stone[w]{B 3} % Not recognized because it has a space.
+ \end{goban}
+\end{codeexample}
+
+In the example, |B 3| is not recognized due to the space, while |B4| is correctly drawn as a white stone.
+
+\sssseccion{Segments}
+
+Segments are explicitly delimited groups of vertical or horizontal stones. Since they are unidirectional (either vertical or horizontal), one of their coordinates remains constant and does not need to be repeated; only the range of the other variable is specified.
+
+\begin{itemize}
+ \item For horizontal segments, the syntax is |L:LN| or |L:L N|.
+ \item For vertical segments, the syntax is |LN:N| or |L N:N|.
+\end{itemize}
+
+\begin{codeexample}[width=6cm]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{B2,B3,B4}
+ \stones[w]{C2,D2}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{B2:4}
+ \stones[w]{C:D2}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{B 2:4} % Spaces work between distinct elements.
+ \stones[w]{C:D 2}
+ \end{goban}
+\end{codeexample}
+
+Here, |B2:4| represents a horizontal segment from B2 to B4, while |C:D2| indicates a horizontal segment from C2 to D2.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A:E5}
+ \stones[fill = {color = blue}]{H9:2}
+ \stones[fill = {color = orange}]{E:A2}
+ \stones[fill = {color = magenta}]{A:D7, A:C9} % Can be combined.
+ \end{goban}
+\end{codeexample}
+
+\sssseccion{Rectangle: An Artificial Consequence}
+
+The segment syntax allows creating ranges between coordinates to insert stones. I found it useful to extend it to include two ranges, offering a first approximation to rectangles (though it’s not my favorite method, here it is). In this case, the syntax is |L:L N:N| or |L:LN:N|.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A:E 7:8} % Space is not mandatory.
+ \stones[fill = {color = blue}]{I:G 9:2}
+ \stones[fill = {color = orange}]{A:B 2:4, F:D 1:3}
+ \end{goban}
+\end{codeexample}
+
+For example, |A:E 7:8| creates a rectangle spanning columns A to E in rows 7 and 8, while |I:G 9:2| descends from I9 to G2. Although functional, this syntax can be less intuitive, leading to more specific operators we’ll see later.
+
+So far, we’ve covered commands for intersections that cannot be combined with others in the same instruction and therefore \textbf{must} be separated by commas. Now, we’ll explore commands that can be chained together, offering greater flexibility for complex patterns.
+
+\sssseccion{Horizontal--Vertical and Vertical--Horizontal}
+
+Given two intersections that are neither vertically nor horizontally aligned, these commands generate the intersections connecting the first to the second via a "horizontal--vertical" or "vertical--horizontal" path. This may remind you of the TikZ \verb+-|+ operator, from which I borrowed the idea. The syntax is \verb+LN -| LN+ (for the first case) or \verb+LN |- LN+ (for the second), with or without spaces. These commands, along with the next one, can be chained to form ladders or paths typical of the Manhattan metric.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A1 -| D3}
+ \stones[fill = {color = blue}]{D4 -| A2}
+ \stones[fill = {color = orange}] {A9 -| C7 -| G5} % Chained.
+ \stones[fill = {color = magenta}] {F1 |- I3 -| E4} % Try to guess.
+ \end{goban}
+\end{codeexample}
+
+In this example, \verb+A1 -| D3+ goes horizontally from A1 to D1 and then vertically to D3.
+
+\sssseccion{Horizontal or Vertical Line}
+
+Given two intersections aligned vertically or horizontally, this operator connects them with a straight line of stones. Its syntax is |LN -- LN|. It can be chained with the previous two commands to form more elaborate patterns. If the intersections are not aligned, the operator draws nothing (who knows, maybe in the future it will generate ladders ;)).
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A1 -- A5}
+ \stones[fill = {color = blue}] {A1 -- D1}
+ \stones[fill = {color = magenta}] {A6 -- B9} % Doesn’t draw because they’re not aligned.
+ \stones[fill = {color = orange}] {I9 -| F6 -- I6} % Chained.
+ \end{goban}
+\end{codeexample}
+
+Here, |A1 -- A5| draws a vertical line, while \verb+I9 -| F6 -- I6+ combines a "horizontal--vertical" path with an additional horizontal line.
+
+Beware! \verb+A1 -- D1 -| F3+ is a permitted chain, while \verb+A:D1 -| F3+ is not, because |:| is not a chain operator. This might change in future versions of the package.
+
+\sssseccion{Filled and Empty Rectangles}
+
+The previous rectangle syntax |L:L N:N| is unintuitive and more of a legacy of bounded segments. Therefore, there are two more direct operators for creating rectangles: |R| and |r|. The difference is that |R| generates a filled rectangle, while |r| only draws its outline. Given two diametrically opposite vertices of the rectangle, the syntax is |LN R LN| or |LN r LN|. Although spaces are not currently mandatory, I recommend using them for better readability.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A1 R D3}
+ \stones[fill = {color = blue}] {A5 r D8}
+ \stones[fill = {color = orange}] {I8 r G4, H6} % It’s alive!
+ \end{goban}
+\end{codeexample}
+
+For example, |A1 R D3| fills a rectangle from A1 to D3, while |A5 r D8| draws only the border of a larger rectangle.
+
+Rectangles are also chain operators and can be used as such to create more complex patterns.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = orange}] {I8 r G6 r I4} % You guess.
+ \marks[sequence]{I8,G6,I4}
+ \stones[fill = {color = blue!20}] {A1 R E3 r A6 |- E9 -- E8} % Wow!
+ \marks[sequence]{A1,E3,A6,E9,E8}
+ \end{goban}
+\end{codeexample}
+
+In this case, |I8 r G6 r I4| chains two outline rectangles, while \verb+A1 R E3 r A6 |- E9 -- E8+ combines a filled rectangle, an outline, a "vertical--horizontal" path, and a line, showcasing the power of chaining.
+
+\subsubsection{Additive and Subtractive Groups}
+
+Suppose we want to draw the following diagram:
+
+\begin{figure}[H]
+ \centering
+ \begin{goban}
+ \stones[b]{A1 R E6; C6 |- E3, A1:2;}
+ \end{goban}
+\end{figure}
+
+This can be achieved with the operators already seen, breaking the pattern into several parts:
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = orange}] {A6 R B3, B2 R E1, D4 R E6}
+ \end{goban}
+\end{codeexample}
+
+But we could also imagine starting from a complete rectangle from which we’ve removed the marked stones, offering a more conceptual perspective:
+
+\begin{figure}[H]
+ \centering
+ \begin{goban}
+ \stones[b]{A1 R E6}
+ \marks[cross, line = {color = white}]{C6 |- E3, A1:2}
+ \end{goban}
+\end{figure}
+
+This is what additive and subtractive groups are about. An additive group adds intersections to the list, while a subtractive group removes them. By default, commands always begin processing additive groups, which explains why they draw stones directly. In \pgfgoname, we can switch between both types using |;|.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6} % Additive group.
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A 1:2} % Additive group; subtractive group.
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A 1:2, C6 |- E3} % Additive group; subtractive group.
+ \end{goban}
+\end{codeexample}
+
+In this sequence, a full rectangle is drawn first (|A1 R E6|), then the horizontal segment |A1:2| is removed, and finally, the path \verb+C6 |- E3+ is subtracted. This results in the same diagram as the initial example but with a more compact approach.
+
+The advantage of this system is that it allows adjustments when needed. Sometimes, an additive pattern is ideal except for one or two stones; in those cases, we can remove them with a subtractive group without redesigning everything.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[b]{A1 R E6; B:D 5, C2}
+ \end{goban}
+\end{codeexample}
+
+Here, |B:D 5| removes a horizontal segment in row 5, and |C2| removes a specific stone, adjusting the initial rectangle.
+
+Note that additive and subtractive groups can be chained, separated by |;|, allowing alternation between adding and removing elements in a single line as many times as desired.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6} % AD
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A1 R C4, E6} % AD, SU
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A1 R C4, E6; A 1:2} % AD, SU, AD
+ \end{goban}
+\end{codeexample}
+
+In this last example, a rectangle is created, two regions are removed (|A1 R C4| and |E6|), and then a segment is added (|A 1:2|).
+
+\subsection{Profiles}
+
+Profiles are equivalent to styles in \tikzname. In short, they allow saving a board and stone configuration under a name and recalling it whenever desired.
+
+\begin{command}{\pgfgodefinegoban\opt{\oarg{options}}\marg{goban name}\marg{goban options}}
+ Allows assigning a name to a group of goban options. It has two optional settings.
+
+ \begin{key}{/pgfgo/profiles/goban/from = \meta{goban name}}
+ Allows defining a goban based on a copy of another.
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[from = gobanA]{gobanB}{...}
+ \end{codeexample}
+
+ It’s possible to copy itself to add options, though it’s not the best alternative.
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[from = gobanB]{gobanB}{...}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/profiles/goban/append}
+ Allows expanding the options of a goban.
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[append]{gobanB}{...}
+ \end{codeexample}
+ It is equivalent to:
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[from = gobanB]{gobanB}{...}
+ \end{codeexample}
+ \end{key}
+\end{command}
+
+\begin{command}{\pgfgodefineplayer\opt{\oarg{options}}\marg{player name}\marg{player options}}
+ Allows assigning a name to a group of stone options. Its options and \emph{keys} are equivalent to those of |\pgfgodefinegoban|.
+\end{command}
+
+\begin{command}{\pgfgousegoban\marg{goban name}}
+ Locally applies the options of the goban defined by |goban name|.
+\end{command}
+
+\begin{command}{\pgfgouseneutral\marg{player name}}
+ Locally applies the stone options defined by |player name| to the neutral player.
+\end{command}
+
+\begin{command}{\pgfgouseblack\marg{player name}}
+ Locally applies the stone options defined by |player name| to the black player.
+\end{command}
+
+\begin{command}{\pgfgousewhite\marg{player name}}
+ Locally applies the stone options defined by |player name| to the white player.
+\end{command}
+
+\begin{command}{\pgfgouseplayers\marg{neutral player name}\marg{black player name}\marg{white player name}}
+ Locally applies the stone options defined by |neutral player name|, |black player name|, and |white player name| to the corresponding players.
+\end{command}
+
+\begin{command}{\pgfgouseprofile\marg{name}}
+ This macro is equivalent to:
+ \begin{codeexample}[code only]
+ \pgfgousegoban{name}
+ \pgfgouseplayers{name-neutral}{name-black}{name-white}
+ \end{codeexample}
+
+ Note that stones named |name-neutral|, |name-black|, and |name-white| must exist. For example, when we previously ran |\pgfgouseprofile{pgfgo}|, it worked because there is a goban called |pgfgo|, and stones named |pgfgo-neutral|, |pgfgo-black|, and |pgfgo-white|.
+\end{command}
+
+\begin{codeexample}[width=3cm]
+ \pgfgodefinegoban{example}{background = {fill = {color = blue!05}}}
+ \pgfgodefineplayer[from = default-neutral]{example-neutral}
+ {stone = {
+ fill = {color = gray},
+ line = {color = magenta!20!black}}
+ }
+
+ \pgfgodefineplayer[from = example-neutral]{example-white}
+ {stone = {fill = {color = yellow}}}
+
+ \pgfgodefineplayer[from = example-neutral]{example-black}
+ {stone = {fill = {color = blue}}}
+
+ \pgfgouseprofile{example}
+
+ \begin{goban}[partial = {from = A1 to C3}]
+ \moves{A1:3}
+ \stones[b]{B1,B3,C2}
+ \stones[w]{C1,C3}
+ \stone{B2}
+ \end{goban}
+\end{codeexample}
+
+\subsection{Changing Options on the Fly}
+\label{subsec:profiles}
+
+When you want to change a board option with |\pgfgoset|, it can be done directly with |\pgfgoset{goban = {...}}|. For players, the situation is slightly different. For this, the following \emph{keys} are available:
+
+\begin{key}{/pgfgo/players = \meta{players options}}
+ Allows adjusting player options. By default, there are three: |neutral|, |black|, and |white|. Players should not be confused with stone profiles. Once a stone profile is loaded, a change can be made with these \emph{keys}.
+\end{key}
+
+Player options can be configured all at once with the \emph{key} |all|, or separately. Changes made here will not affect the profile definitions. That is, if we load the |pgfgo| profile and modify the black player, this won’t affect the definition of |pgfgo-black|, but rather the player’s own options first.
+
+\begin{key}{/pgfgo/players/all = \meta{all player options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/neutral = \meta{neutral player options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/black = \meta{first player options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white = \meta{second player options}}
+\end{key}
+
+Each player has access to the same key tree. For this reason, the following, although they mention |white|, apply to all players. Each is explained in the section corresponding to the object type, but they are briefly illustrated here.
+
+\begin{key}{/pgfgo/players/white/stone = \meta{stone options}}
+ Controls the options for the second player’s stones.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line = \meta{stone line options}}
+ Controls the options for the borders of the second player’s stones.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/true}
+ Determines whether the stone’s border appears or not.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = true}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/false}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/width = \meta{dimension}}
+ Determines the thickness of the stone’s border.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = {true, width = 1pt}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/color = \meta{color}}
+ Determines the color of the stone’s border.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = {true, width = 1pt, color = red}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/opacity = \meta{float}}
+ Determines the opacity of the stone’s border.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = {true, width = 2pt, opacity = 0.25}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill = \meta{stone fill options}}
+ Controls options related to the stone’s fill.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/true}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/false}
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {fill = false}}}}
+ % What’s visible in the figure is what remains of the stone: shadows and highlights.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/color = \meta{color}}
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {fill = {color = magenta!20}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/opacity = \meta{float}}
+ Sets the opacity of the stone’s fill.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {fill = {opacity = 0.5}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/radius = \meta{dimension}}
+ Sets the stone’s radius.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {radius = 0.3cm}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/scale = \meta{float}}
+ Controls the stone’s scale, which also affects markings.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {scale = 1.25}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w, mark = circle]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow = \meta{stone drop shadow options}}
+ Controls options specific to shadows on stones.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/true}
+ Enables the shadow on the stone.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/false}
+ Disables the shadow on the stone.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = false}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/angle = \meta{float}}
+ Sets the shadow’s angle.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = {angle = 225}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/offset = \meta{dimension}}
+ Sets the shadow’s offset from the center.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = {offset = 0.125cm}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/opacity = \meta{float}}
+ Controls the shadow’s opacity.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = {offset = 0.125cm, opacity = 0.1}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine = \meta{stone drop shine options}}
+ Controls highlights on stones.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/true}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/false}
+ Hides highlights on stones.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {black = {stone = {drop shine = false}}}}
+ % On black, where it’s more noticeable.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/angle = \meta{float}}
+ Controls the highlight’s angle.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {black = {stone = {drop shine = {angle = 0}}}}}
+ % On black, where it’s more noticeable.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/opacity = \meta{float}}
+ Controls the highlight’s opacity.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {black = {stone = {drop shine = {opacity = 0.5}}}}}
+ % On black, where it’s more noticeable.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/prisoner = \meta{stone options}}
+ Controls the appearance of prisoners.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/font size = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/color = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/arabic = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/alph = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/Alph = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/roman = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/Roman = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark = \meta{stone options}}
+ Controls the options for markings associated with the corresponding player.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/line = \meta{stone mark line options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/line/color = \meta{color}}
+ Controls the line color of markings.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {mark = {line = {color = red!80!black}}}}}
+
+ \begin{goban}
+ \stones[b] {B1}
+ \stone [b, mark] {C2}
+ \stone [w, mark = circle] {A3}
+ \mark [w, circle] {A2}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/line/width = \meta{dimension}}
+ Controls the line thickness of markings.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {mark = {line = {color = red!80!black}}}}}
+
+ \begin{goban}
+ \stones[b] {B1}
+ \stone [b, mark] {C2}
+ \stone [w, mark = circle] {A3}
+ \mark [w, circle] {A2}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill = \meta{stone mark fill options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill/true}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill/false}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill/color = \meta{color}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/label = \meta{stone mark label options}}
+ Controls label options for markings that have them.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/label/color = \meta{color}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence = \meta{stone mark sequence options}}
+ Controls sequence options.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format = \meta{stone mark sequence format choice}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/arabic}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/alph}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/Alph}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/roman}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/Roman}
+\end{key}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-loelemental.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lopendiente.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lopendiente.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lopendiente.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,8 @@
+\section{Lo pendiente}
+
+
+Actualmente hay una lista de pendientes:
+\begin{itemize}
+ \item Corregir bugs. Sobre todo en el sistema de recuerdo.
+ \item Optimizaci\'on.
+\end{itemize}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-lopendiente.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-motivacion.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-motivacion.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-motivacion.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,13 @@
+\section{Motivation}
+
+The following package offers a collection of macros designed to represent Go boards and positions, fully implemented in \pgfname. This project, although still in development, incorporates innovative features aimed at simplifying and streamlining the creation of diagrams related to the game of Go:
+\begin{itemize}
+ \item Profile management for boards and players.
+ \item Loading multiple coordinates simultaneously using a syntax that some may find familiar.
+\end{itemize}
+
+The development of \pgfgoname\ arose from the frustration of not finding packages that met my needs. The packages I explored allow the representation of black-and-white boards, suitable for printing, but impractical when combined with technologies such as |beamer| or in documents where a color presentation is desired.
+
+Initially, \pgfgoname\ was intended to be limited to these tasks; however, I now conceive it more as an interface for managing styles and states, avoiding excessive use of direct formatting. This will mainly be reflected in the structure of the \emph{keys} tree.
+
+Regarding the name, although the macros are implemented in \pgfname\ and L3, the board is built on |\tikzpicture| so that users familiar with this environment can take advantage of its macros.
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-motivacion.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-preamble.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-preamble.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-preamble.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,387 @@
+% Copyright 2019 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+
+% pgf version is defined in \pgfversion in file
+% generic/pgf/utilities/pgfrcs.code.tex
+
+\def\xcolorversion{2.00}
+
+\usepackage[version=latest]{pgf}
+
+\usepackage{xkeyval,calc,listings,tikz,fp}
+
+\usepackage{imakeidx}
+\makeindex
+\usepackage{hyperref}
+\hypersetup{%
+ colorlinks=false, % use true to enable colors below:
+ linkcolor=blue,%red,
+ filecolor=blue,%magenta,
+ urlcolor=blue,%cyan,
+ citecolor=blue,
+ pdfborder=0 0 0,
+}
+
+% We need lots of libraries...
+\usetikzlibrary{
+ 3d,
+ arrows,
+ arrows.spaced,
+ arrows.meta,
+ bending,
+ babel,
+ calc,
+ fit,
+ patterns,
+ patterns.meta,
+ plotmarks,
+ shapes.geometric,
+ shapes.misc,
+ shapes.symbols,
+ shapes.arrows,
+ shapes.callouts,
+ shapes.multipart,
+ shapes.gates.logic.US,
+ shapes.gates.logic.IEC,
+ circuits.logic.US,
+ circuits.logic.IEC,
+ circuits.logic.CDH,
+ circuits.ee.IEC,
+ datavisualization,
+ datavisualization.polar,
+ datavisualization.formats.functions,
+ er,
+ automata,
+ backgrounds,
+ chains,
+ topaths,
+ trees,
+ petri,
+ mindmap,
+ matrix,
+ calendar,
+ folding,
+ fadings,
+ shadings,
+ spy,
+ through,
+ turtle,
+ positioning,
+ scopes,
+ decorations.fractals,
+ decorations.shapes,
+ decorations.text,
+ decorations.pathmorphing,
+ decorations.pathreplacing,
+ decorations.footprints,
+ decorations.markings,
+ shadows,
+ lindenmayersystems,
+ intersections,
+ fixedpointarithmetic,
+ fpu,
+ svg.path,
+ external,
+ graphs,
+ graphs.standard,
+ quotes,
+ math,
+ angles,
+ views,
+ animations,
+ rdf,
+ perspective,
+}
+
+\usepackage{ifluatex}
+\newif\ifgdccodebasic
+\newif\ifgdccodeogdf
+
+\ifluatex
+
+ \usetikzlibrary{graphdrawing}
+ \usegdlibrary{trees,circular,layered,examples,force,phylogenetics,routing}
+
+ % Test whether C code is available:
+ \directlua{
+ if pcall(require,'pgf_gd_examples_c_SimpleDemoC') then
+ tex.print('\string\\gdccodebasictrue')
+ end
+ }
+
+ \ifgdccodebasic
+ \usegdlibrary{pgf_gd_examples_c_SimpleDemoC,pgf_gd_examples_c_SimpleDemoCPlusPlus}
+
+ % Test whether OGDF code is available:
+ \directlua{
+ if pcall(require,'pgf_gd_ogdf_c_SimpleDemoOGDF') then
+ tex.print('\string\\gdccodeogdftrue')
+ end
+ }
+
+ \ifgdccodeogdf
+ \usegdlibrary{pgf_gd_ogdf_c_SimpleDemoOGDF,ogdf}
+ \fi
+
+ \fi
+
+\fi
+
+\def\LuaTeX{Lua\TeX}%
+
+
+\newif\ifpgfmanualexternalize
+\pgfmanualexternalizefalse
+\ifpgfmanualexternalize
+ \tikzexternalize[
+ mode=list only,export=true,% simply skips EVERY picture -> good for debugging the text.
+ ]{pgfmanual}
+
+ \tikzifexternalizing{%
+ \pgfkeys{/pdflinks/codeexample links=false}%
+ }{}%
+\fi
+
+
+\usepackage[a4paper,left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
+\usepackage{amsmath,amssymb}
+\usepackage{xxcolor}
+\usepackage{pifont}
+
+\ifluatex
+% \usepackage[no-math]{fontspec}
+% \usepackage{luatextra}
+
+ % TT: I have commented luatextra since it loads fontspec, which
+ % currently breaks "$\mathrm{\Omega}$" (nothing is
+ % shown). Also, fontspec loads so much stuff, I'm not really sure
+ % any of it is needed...
+
+ % \filedescription is defined in expl3, required by fontspec,
+ % required by luatextra. Needs to be \relaxed since
+ % pgfmanual-en-macros.tex defines an environment named filedescription
+ \let\filedescription\relax
+ \usepackage[utf8]{luainputenc}
+ % dvisvgm does not support OpenType fonts so we have to bite the bullet and
+ % use T1 where quotes are weird. In LuaTeX \outputmode=0 means DVI.
+ \ifnum\outputmode=0
+ \usepackage[T1]{fontenc}
+ \fi
+\else
+ \usepackage[utf8]{inputenc}
+ \usepackage[T1]{fontenc}
+\fi
+
+% Promote `Missing character` reports to full errors
+% require texlive 2021 or above
+\tracinglostchars=3
+
+\graphicspath{{../../images/}}
+\input{pgfmanual-en-macros}
+
+\usepackage{todonotes}
+\newcommand\todosp[2][]{% % Stefan Pinnow
+ \todo[
+ disable,
+ color=blue!40,
+ #1]{#2}
+}
+
+\makeatletter
+\renewcommand*\l at section[2]{%
+ \ifnum \c at tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{2.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \bfseries
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb at xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi}
+\renewcommand*\l at subsection{\@dottedtocline{2}{2.5em}{3.3em}}
+\renewcommand*\l at subsubsection{\@dottedtocline{3}{5.8em}{4.2em}}
+\def\@pnumwidth{2.2em}
+\makeatother
+
+%\includeonly{pgfmanual-en-library-profiler}
+
+% Global styles:
+\tikzset{
+ every plot/.style={prefix=plots/pgf-},
+ shape example/.style={
+ color=black!30,
+ draw,
+ fill=yellow!30,
+ line width=.5cm,
+ inner xsep=2.5cm,
+ inner ysep=0.5cm}
+}
+
+\index{Options for graphics|see{Graphic options and styles}}
+\index{Styles for graphics|see{Graphic options and styles}}
+\index{Options for packages|see{Package options}}
+\index{Handlers for keys|see{Key handlers}}
+\index{File|see{Packages and files}}
+\index{Layout|see{Page layout}}
+\index{Node|see{Predefined node}}
+\index{Data formats|see{Formats}}
+
+
+% Animations:
+
+\tikzset{make snapshot if necessary}
+
+% Detect changed labels
+% by David Carlisle https://tex.stackexchange.com/a/169245
+\makeatletter
+\def\@testdef#1#2#3{%
+ \def\reserved at a{#3}%
+ \expandafter\ifx\csname #1@#2\endcsname\reserved at a\else
+ \typeout{^^JLabel `#2' changed:^^J\meaning\reserved at a^^J\expandafter\meaning\csname #1@#2\endcsname^^J}%
+ \@tempswatrue
+ \fi}
+\makeatother
+
+%% -----------------------------------------------------------------------------
+%\includeonly{
+%% pgfmanual-en-introduction,
+%% pgfmanual-en-tutorial,
+%% pgfmanual-en-tutorial-nodes,
+%% pgfmanual-en-tutorial-Euclid,
+%% pgfmanual-en-tutorial-chains,
+%% pgfmanual-en-tutorial-map,
+%% pgfmanual-en-guidelines,
+%% pgfmanual-en-installation,
+%% pgfmanual-en-license,
+%% pgfmanual-en-drivers,
+%% pgfmanual-en-tikz-design,
+%% pgfmanual-en-tikz-scopes,
+%% pgfmanual-en-tikz-coordinates,
+%% pgfmanual-en-tikz-paths,
+%% pgfmanual-en-tikz-actions,
+%% pgfmanual-en-tikz-arrows,
+%% pgfmanual-en-tikz-shapes,
+%% pgfmanual-en-tikz-pics,
+%% pgfmanual-en-tikz-graphs,
+%% pgfmanual-en-tikz-matrices,
+%% pgfmanual-en-tikz-trees,
+%% pgfmanual-en-tikz-plots,
+%% pgfmanual-en-tikz-transparency,
+%% pgfmanual-en-tikz-decorations,
+%% pgfmanual-en-tikz-transformations,
+%% pgfmanual-en-tikz-animations,
+%% pgfmanual-en-gd-overview,
+%% pgfmanual-en-gd-usage-tikz,
+%% pgfmanual-en-gd-usage-pgf,
+%% pgfmanual-en-gd-trees,
+%% pgfmanual-en-gd-layered,
+%% pgfmanual-en-gd-force,
+%% pgfmanual-en-gd-circular,
+%% pgfmanual-en-gd-phylogenetics,
+%% pgfmanual-en-gd-edge-routing,
+%%% pgfmanual-en-gd-ogdf,
+%% pgfmanual-en-gd-algorithm-layer,
+%% pgfmanual-en-gd-algorithms-in-c,
+%% pgfmanual-en-gd-display-layer,
+%% pgfmanual-en-gd-binding-layer,
+%% pgfmanual-en-library-angles,
+%% pgfmanual-en-library-arrows,
+%% pgfmanual-en-library-automata,
+%% pgfmanual-en-library-babel,
+%% pgfmanual-en-library-backgrounds,
+%% pgfmanual-en-library-calc,
+%% pgfmanual-en-library-calendar,
+%% pgfmanual-en-library-chains,
+%% pgfmanual-en-library-circuits,
+%% pgfmanual-en-library-decorations,
+%% pgfmanual-en-library-er,
+%% pgfmanual-en-library-external,
+%% pgfmanual-en-library-fadings,
+%% pgfmanual-en-library-fit,
+%% pgfmanual-en-library-fixedpoint,
+%% pgfmanual-en-library-fpu,
+%% pgfmanual-en-library-lsystems,
+%% pgfmanual-en-library-math,
+%% pgfmanual-en-library-matrices,
+%% pgfmanual-en-library-mindmaps,
+%% pgfmanual-en-library-folding,
+%% pgfmanual-en-library-patterns,
+%% pgfmanual-en-library-petri,
+%% pgfmanual-en-library-plot-handlers,
+%% pgfmanual-en-library-plot-marks,
+%% pgfmanual-en-library-profiler,
+%% pgfmanual-en-library-rdf,
+%% pgfmanual-en-library-shadings,
+%% pgfmanual-en-library-shadows,
+%% pgfmanual-en-library-shapes,
+%% pgfmanual-en-library-spy,
+%% pgfmanual-en-library-svg-path,
+%% pgfmanual-en-library-edges,
+%% pgfmanual-en-library-through,
+%% pgfmanual-en-library-trees,
+%% pgfmanual-en-library-turtle,
+%% pgfmanual-en-library-views,
+%% pgfmanual-en-dv-introduction,
+%% pgfmanual-en-dv-main,
+%% pgfmanual-en-dv-formats,
+%% pgfmanual-en-dv-axes,
+%% pgfmanual-en-dv-visualizers,
+%% pgfmanual-en-dv-stylesheets,
+%% pgfmanual-en-dv-polar,
+%% pgfmanual-en-dv-backend,
+%% pgfmanual-en-pgfkeys,
+%% pgfmanual-en-pgffor,
+%% pgfmanual-en-pgfcalendar,
+%% pgfmanual-en-pages,
+%% pgfmanual-en-xxcolor,
+%% pgfmanual-en-module-parser,
+%% pgfmanual-en-math-design,
+%% pgfmanual-en-math-parsing,
+%% pgfmanual-en-math-commands,
+%% pgfmanual-en-math-algorithms,
+%% pgfmanual-en-math-numberprinting,
+%% pgfmanual-en-oo,
+%% pgfmanual-en-base-design,
+%% pgfmanual-en-base-scopes,
+%% pgfmanual-en-base-points,
+%% pgfmanual-en-base-paths,
+%% pgfmanual-en-base-decorations,
+%% pgfmanual-en-base-actions,
+%% pgfmanual-en-base-arrows,
+%% pgfmanual-en-base-nodes,
+%% pgfmanual-en-base-matrices,
+%% pgfmanual-en-base-transformations,
+%% pgfmanual-en-base-patterns,
+%% pgfmanual-en-base-images,
+%% pgfmanual-en-base-external,
+%% pgfmanual-en-base-plots,
+%% pgfmanual-en-base-layers,
+%% pgfmanual-en-base-shadings,
+%% pgfmanual-en-base-transparency,
+%% pgfmanual-en-base-animations,
+%% pgfmanual-en-base-internalregisters,
+%% pgfmanual-en-base-quick,
+%% pgfmanual-en-pgfsys-overview,
+%% pgfmanual-en-pgfsys-commands,
+%% pgfmanual-en-pgfsys-paths,
+%% pgfmanual-en-pgfsys-protocol,
+%% pgfmanual-en-pgfsys-animations,
+%}
+%% -----------------------------------------------------------------------------
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual"
+%%% End:
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo-preamble.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.cfg
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.cfg (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.cfg 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,21 @@
+% Copyright 2019 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+
+\usepackage[hyphens]{url}
+\makeatletter
+\g at addto@macro\selectfont{%
+ \long\edef\longf at family{\f at family}%
+ \ifx\longf at family\ttdefault
+ \ignoreligaturesinfont\font\relax
+ \fi
+}
+\makeatother
+
+% Just make sure to compile this using lualatex.
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.cfg
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,85 @@
+% Copyright 2025 by Jonatan Perren
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+
+
+\documentclass[a4paper,doc2]{ltxdoc}
+
+
+
+\input{pgfgo.cfg}
+\input{pgfgo-preamble.tex}
+
+\usepackage{../../latex/pgf-go}
+\def\pgfgoname{\textsc{pgfgo}}
+
+\usepackage[english]{babel}
+
+\usepackage{float}
+\usetikzlibrary{positioning, fit}
+\usepackage{caption}
+
+
+
+\definecolor{pgfgo}{RGB}{220,179,92}
+\colorlet{tablero2}{red!10!blue!10}
+\colorlet{tablero3}{blue!10!green!10}
+\definecolor{tablero4}{HTML}{9B8465}
+
+
+\ExplSyntaxOn
+
+
+
+\ExplSyntaxOff
+
+\begin{document}
+ \title{\Huge\bfseries pgf-go\\[1em]
+ \normalsize
+
+ \begin{center}
+ \pgfgouseprofile{pgfgosmooth}
+ \begin{goban}[partial = {from = B2 to E3}]
+ \stones[black]{C2,D2,E3}
+ \stones[white] {B2,C3,D3}
+ \mark[w, custom = {36}]{B2}
+ \mark[custom = {a}] {E2}
+
+ \marks[circle, line = {color = red!80!black}] {C3,D3}
+
+ \end{goban}
+ \end{center}
+
+ \large Manual for version 0.2025.03.07}
+ \author{Jonat\'an Perren Hug\\
+ \texttt{jonatan.perren at gmail.com}
+ }
+
+ \maketitle
+
+
+
+ \label{table-of-contents}
+ \tableofcontents
+
+
+ \clearpage
+
+ \input{pgfgo-motivacion}
+ \input{pgfgo-ejemplosiniciales}
+ \input{pgfgo-loelemental}
+ \input{pgfgo-eltablero}
+ \input{pgfgo-laspiedras}
+ \input{pgfgo-lasmarcas}
+ \input{pgfgo-elterritorio}
+
+% \input{pgfgo-lopendiente}
+ \input{pgfgo-ejemplos}
+%%
+ \input{pgfgo-catalogo}
+%
+ \input{pgfgo-definiciones}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/en/pgfgo.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-catalogo.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-catalogo.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-catalogo.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,123 @@
+\section{Cat\'alogo}
+\label{sec:catalogo}
+
+
+\subsection{Perfiles}
+\subsubsection{default}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{default}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{F1}
+ \mark[b, tcircle]{F1}
+ \mark[n, tsquare]{F1}
+ \end{goban}
+\end{codeexample}
+
+
+\subsubsection{pgfgo}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgo}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{F1}
+ \mark[b, tcircle]{F1}
+ \mark[n, tsquare]{F1}
+ \end{goban}
+\end{codeexample}
+
+
+
+\subsubsection{pgfgosmooth}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{F1}
+ \mark[b, tcircle]{F1}
+ \mark[n, tsquare]{F1}
+ \end{goban}
+\end{codeexample}
+
+
+
+\subsubsection{wain}
+\begin{codeexample}[width=4cm]
+ \pgfgouseprofile{wain}
+
+ \begin{goban}[partial = {from = A1 to G3}]
+ \moves*[from = 1]{A:F 3}
+ \stones[w]{A1:2}
+ \stones[b]{B1:2}
+ \stones[n]{C1:2}
+ \stone[w, mark = circle]{D1}
+ \mark[w, circle]{D2}
+ \stone[b, mark = circle]{E1}
+ \mark[b, circle]{E2}
+ \stone[n, mark = circle]{F1}
+ \mark[n, circle]{F2}
+ \mark[w, tsquare]{F1}
+ \mark[b, tcircle]{F1}
+ \mark[n, tsquare]{F1}
+ \end{goban}
+\end{codeexample}
+
+
+%\subsection{Colores}
+%
+%
+%\pgfgoname\ a\~nade los siguientes nombres para colores
+%\begin{verbatim}
+% \definecolor{pgfgo}{RGB}{220,179,92}
+% \colorlet{tablero2}{red!10!blue!10}
+% \colorlet{tablero3}{blue!10!green!10}
+% \definecolor{tablero4}{HTML}{9B8465}
+%\end{verbatim}
+%
+%
+%
+%\begin{codeexample}[width=7cm]
+% \pgfgoset{goban = {partial = {from = A1 to C6}}}
+%
+% \begin{goban}[background = {fill = {color = pgfgo}}]
+% \end{goban}
+%
+% \begin{goban}[background = {fill = {color = tablero2}}]
+% \end{goban}
+%
+% \begin{goban}[background = {fill = {color = tablero3}}]
+% \end{goban}
+%
+% \begin{goban}[background = {fill = {color = tablero4}}]
+% \end{goban}
+%\end{codeexample}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-catalogo.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-definiciones.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-definiciones.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-definiciones.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,328 @@
+\section{Definiciones de piedras y de tableros}
+
+
+\subsection{Piedras y jugadores}
+ \subsubsection{pgfgo}
+
+ \begin{center}
+ \pgfgouseprofile{pgfgo}
+ \begin{goban}[10x2, label = {at = {all}}, scale = 2]
+ \stone{A1}
+ \moves[b]{A:D2}
+ \stone[w, mark = {triangle}]{D1}
+ \moves*[b]{G1--J1|-G2}
+ \mark[b, t-circle]{E1}
+ \mark[w, t-square]{E2}
+ \end{goban}
+ \end{center}
+
+
+ Declaramos todos los jugadores y comenzamos definiendo la apariencia del neutral.
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer{pgfgo-neutral}{
+ stone = {
+ radius = 0.19cm,
+ line = {
+ true,
+ color = black,
+ width = 0.3pt,
+ opacity = 1,
+ },
+ fill = {
+ true,
+ color = gray,
+ opacity = 1,
+ },
+ radius = 0.17cm,
+ scale = 1,
+ drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45},
+ drop shine = {true, angle = 45}
+ },
+ move = {
+ label = {
+ font size = 0.5em,
+ color = black,
+ format = arabic,
+ }
+ },
+ mark = {
+ line = {
+ color = black,
+ width = 1pt,
+ },
+ fill = {false},
+ label = {
+ color = black,
+ format = arabic
+ }
+ }
+ }
+ \end{codeexample}
+
+
+ Algunas cosas como el grosor de linea, opacidades y dem\'as, deseo que se conserven en todas las piedras, as\'i que copio la plantilla del jugador neutral.
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-white}{
+ stone = {
+ fill = {
+ color = wainwhite
+ }
+ },
+ move = {
+ label = {
+ color = black
+ }
+ },
+ mark = {
+ line = {color = black},
+ fill = {color = white},
+ label = {color = black}
+ }
+ }
+
+
+ \pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-black}{
+ stone = {
+ fill = {
+ color = wainblack
+ }
+ },
+ move = {
+ label = {
+ color = pgfgo
+ }
+ },
+ mark = {
+ line = {
+ color = pgfgo,
+ },
+ label = {color = black}
+ }
+ }
+ \end{codeexample}
+
+
+ \subsubsection{pgfgosmooth}
+ \begin{center}
+ \pgfgouseprofile{pgfgosmooth}
+ \begin{goban}[10x2, label = {at = {all}}, scale = 2]
+ \stone{A1}
+ \moves[b]{A:D2}
+ \stone[w, mark = {triangle}]{D1}
+ \moves*[b]{G1--J1|-G2}
+ \mark[b, t-circle]{E1}
+ \mark[w, t-square]{E2}
+ \end{goban}
+ \end{center}
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-neutral]{pgfgosmooth-neutral}{
+ stone = {
+ line = false,
+ radius = 0.19cm,
+ drop shine = {opacity = 0.5}}
+ }
+ \end{codeexample}
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-black]{pgfgosmooth-black}{stone = {line = false, drop shine = {opacity = 0.5}}}
+ \end{codeexample}
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = pgfgo-white]{pgfgosmooth-white}{stone = {line = false}}
+ \end{codeexample}
+
+
+ \subsubsection{wain}
+
+ \begin{center}
+ \pgfgouseprofile{wain}
+ \begin{goban}[10x2, label = {at = {all}}, scale = 2]
+ \stone{A1}
+ \moves[b]{A:D2}
+ \stone[w, mark = {triangle}]{D1}
+ \moves*[b]{G1--J1|-G2}
+ \mark[b, t-circle]{E1}
+ \mark[w, t-square]{E2}
+ \end{goban}
+ \end{center}
+
+
+
+
+ \begin{codeexample}[code only]
+ \definecolor{waingoban}{HTML}{402A2D}
+ \definecolor{waingoban-s}{HTML}{493739}
+ \definecolor{waingrid}{HTML}{FAE0B2}
+ \definecolor{wainblack}{HTML}{4B4B4D} %PIEDRA NEGRA
+ \definecolor{wainshade}{HTML}{E6E7E8}
+ \definecolor{wainwhite}{HTML}{FEFEFE} %PIEDRA BLACA
+ \end{codeexample}
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer{wain-neutral}{
+ stone = {
+ line = {
+ true,
+ color = waingrid,
+ width = 0.2pt,
+ opacity = 1,
+ },
+ fill = {
+ true,
+ color = wainblack!50!wainwhite,
+ opacity = 1,
+ },
+ radius = 0.17cm,
+ scale = 1,
+ drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45},
+ drop shine = {true, angle = 45}
+ },
+ move = {
+ label = {
+ font size = 0.5em,
+ color = black,
+ format = arabic,
+ }
+ },
+ mark = {
+ line = {
+ color = waingoban,
+ width = 1pt,
+ },
+ fill = {false},
+ label = {
+ color = waingoban,
+ format = arabic
+ },
+ }
+ }
+ \end{codeexample}
+
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = wain-neutral]{wain-white}{
+ stone = {
+ fill = {
+ color = wainwhite
+ }
+ },
+ move = {
+ label = {
+ color = waingoban
+ }
+ },
+ mark = {
+ line = {
+ color = waingoban,
+ },
+ label = {color = waingoban}
+ }
+ }
+ \end{codeexample}
+
+
+
+
+ \begin{codeexample}[code only]
+ \pgfgodefineplayer[from = wain-neutral]{wain-black}{
+ stone = {
+ fill = {
+ color = wainblack
+ }
+ },
+ move = {
+ label = {
+ color = waingrid
+ }
+ },
+ mark = {
+ line = {
+ color = waingrid,
+ },
+ label = {color = waingrid}
+ }
+ }
+ \end{codeexample}
+
+
+
+
+
+
+\subsection{Tableros}
+\subsubsection{pgfgo}
+\begin{center}
+ \pgfgouseprofile{pgfgo}
+ \begin{goban}[10x2, label = {at = all}, scale = 2]
+ \end{goban}
+\end{center}
+
+\begin{codeexample}[code only]
+ \pgfgodefinegoban{pgfgo}{
+ background = {
+ fill = {
+ color = pgfgo,
+ opacity = 1},
+ line = {
+ color = pgfgo!10!black,
+ opacity = 1},
+ drop shadow},
+ grid = {
+ line = {
+ color = pgfgo!10!black,
+ width = 1pt}},
+ label = {
+ text color = black
+ }
+ }
+\end{codeexample}
+
+
+\subsubsection{pgfgosmooth}
+\begin{center}
+ \pgfgouseprofile{pgfgosmooth}
+ \begin{goban}[10x2, label = {at = all}, scale = 2]
+ \end{goban}
+\end{center}
+
+
+\begin{codeexample}[code only]
+ \pgfgodefinegoban[from = pgfgo]{pgfgosmooth}{
+ background = {line = false, rounded corners = 8pt, drop shadow},
+ grid = {line = {opacity = 0.1}}
+ }
+\end{codeexample}
+
+
+\subsubsection{wain}
+\begin{center}
+ \pgfgouseprofile{wain}
+ \begin{goban}[10x2, label = {at = all}, scale = 2]
+ \end{goban}
+\end{center}
+
+\begin{codeexample}[code only]
+ \pgfgonewprofile{wain}{
+ goban = {
+ background = {
+ fill = {
+ color = waingoban,
+ opacity = 1},
+ line = {
+ color = waingrid,
+ opacity = 1}},
+ grid = {
+ line = {
+ color = waingrid,
+ width = 1pt}},
+ label = {
+ text color = waingoban}
+ }
+ }
+\end{codeexample}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-definiciones.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplos.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplos.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplos.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,106 @@
+\section{Otros ejemplos}
+
+
+
+\pgfgouseprofile{pgfgo}
+
+\begin{codeexample}[width=6cm]
+ \setlength{\tabcolsep}{2pt}
+
+ \begin{tabular}{cc}
+ \begin{goban}[partial = {from = A9 to E5}]
+ \stone[b]{C7}
+ \marks[sequence]{C8, D7, C6, B7};
+ \end{goban} &
+ %
+ \begin{goban}[partial = {from = E9 to I5}]
+ \stone[b]{G7}
+ \stone[w]{F7}
+ \marks[sequence]{G8, H7, G6};
+ \end{goban} \\
+ %
+ \begin{goban}[partial = {from = A1 to E5}]
+ \stone[b]{C3}
+ \stones[w]{B3,C2}
+ \marks[sequence]{C4, D3};
+ \end{goban} &
+ %
+ \begin{goban}[partial = {from = E1 to I5}]
+ \stone[b]{G3}
+ \stones[w]{F3,G2, H3}
+ \marks[sequence]{G4};
+ \end{goban}\\
+ \end{tabular}
+\end{codeexample}
+
+
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgoset{use i = false}
+
+ \begin{goban}[13, label = {at = {all}}]
+ \stones[b]{A1, J1, K1, G7, N9, D12, D13}
+ \stones[w]{A2, H1, J2, K2, G6, F7, G8, M9, N10, C12, C13, E12, E13}
+ \marks[circle]{B1, L1, N8, H7, D11}
+ \end{goban}
+ \begin{goban}[13, label = {at = {north, east, south}}]
+ \stones[w]{A2, H1, J2, K2, G6, F7, G8, M9, N10, C12, C13, E12, E13}
+ \stones[w,mark = triangle]{B1, L1, N8, H7, D11}
+ \end{goban}
+\end{codeexample}
+
+
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgoset{use i = false}
+
+ \begin{goban}[9, label = {at = {south, west}}]
+ \stones[b]{A2-|D1, B1, G1|-F2|-G4|-J7-|E9, G8}
+ \stones[w]{E1|-D6|-A7, D 8:9, F5, B:C 5, A:D 3}
+ \marks[b, t-circle]{J1 R H6, G3, F8 R J9; G8; A1, C1}
+ \marks[b, t-square, white]{A9 R C8, A4 R D6; B:C 5, D6}
+ \marks[t-square, neutral]{F1,F6}
+ \end{goban}
+\end{codeexample}
+
+
+
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[9, label = {at = {south, west}}]
+ \stones[b]{C7}
+ \stones[w]{B6,B7,C8,D7}
+ \moves*{C6,C5,D6,E6,D5,D4,E5,F5,E4,E3}
+ \end{goban}
+\end{codeexample}
+
+
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[9, partial = {from = A2 to H9}]
+ \stones[b]{A7,B6,C8,C7}
+ \stones[b, mark = triangle]{D6,D5,D4}
+ \stones[w]{C3,C4,C5,C6,D7,E7,E6}
+ \stone[w, mark = {custom = 1}]{E3}
+ \marks[b, circle, line = {color = red!80!black}] {D3,E4, E5}
+ \end{goban}
+\end{codeexample}
+
+
+
+
+
+
+
+
+
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgouseprofile{pgfgosmooth}
+
+ \begin{goban}[label = {at = all}]
+ \stones[b]{A8 |- B7, B9 -| C8, H:I 1:9, G8:9, A:D 1:2, A3; I2, I6, I8, H9, C1, A2, H:J4;}
+ \stones[w]{E1 |- B3 |- A4, A6 -| C7 -| D9, G1 |- I4 -| G7 -| F9; D7;}
+ \end{goban}
+\end{codeexample}
+
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplos.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplosiniciales.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplosiniciales.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplosiniciales.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,300 @@
+\def\karu{K\={a}ru}
+
+\section{Los tableros de \karu}
+
+\subsection{Tablero y piedras}
+
+\karu\ está escribiendo un artículo para compartir con sus estudiantes. Ha notado que los \emph{softwares} para diagramar no ofrecen formatos ni resultados satisfactorios. Por ello, decide probar \pgfgoname\ y comienza representando una partida como la que se muestra en la Figura~\ref{fig:primer-ejemplo}.
+
+\begin{figure}[H]
+ \centering
+ \pgfgouseprofile{pgfgo}
+ \begin{goban}[use i = false, label = {at = {north, west}}]
+ \stones[black]{B2,E2,J2,C3,D3,G3,H3,C5,D5,E5,F5,G5,E6,G6}
+ \stones[white]{D8,F8,E7,H7,C6,D6,F6,H6,B5,J5,B4,E4,J4,J3,H2}
+ \end{goban}
+ \caption{}
+ \label{fig:primer-ejemplo}
+\end{figure}
+
+\karu\ debe empezar por el tablero. En \pgfgoname\ existe actualmente un único entorno donde se pueden colocar los elementos: |goban|. Este entorno controla por defecto el tamaño y el color del tablero, la posición y el tipo de etiquetas, entre otras propiedades. También permite representar tableros parciales.
+
+\begin{codeexample}[width=4.4cm]
+ \begin{goban}
+ \end{goban}
+\end{codeexample}
+
+\karu\ está satisfecho. El entorno proporciona por defecto un tablero de $9\times 9$, que es justo lo que necesita, pero debe añadirle etiquetas laterales. El entorno |goban| no requiere parámetros obligatorios, aunque acepta uno opcional: una lista de |keys| o |key=values| para configurarlo. \karu\ consulta la sección sobre |goban| (pág.~\pageref{sec:tablero}) y decide añadir etiquetas al entorno. Sabe que las \emph{keys} que controlan los objetos del goban se dividen en tres grupos: |grid|, para la cuadrícula central; |background|, para el borde y el relleno del tablero; y |label|, para las etiquetas de las coordenadas. Esta última es la que le interesa. A esta \emph{key}, entre otras opciones, se le puede pasar la \emph{key} |at| para definir la posición de las etiquetas con valores como |above|, |west|, |below|, |right|, |all| o |none|. También se pueden usar puntos cardinales. Como solo quiere etiquetas arriba y a la izquierda del goban, empleará las \emph{keys} |above| y |left|.
+
+\begin{codeexample}[width=4.7cm]
+ \begin{goban}[label = {at = {above, left}}]
+ \end{goban}
+\end{codeexample}
+
+\karu\ siente que todo va bien, pero nota que su tablero incluye una |I| en lugar de omitirla y pasar directamente a la |J|. Por defecto, en \pgfgoname\ las «I» existen y se usan tanto como coordenadas como en las etiquetas laterales, aunque es posible eliminarlas. Hay dos formas de hacerlo: establecer la \emph{key} global |use i| con el valor |false| (|\pgfgoset{use i = false}|), lo que evitaría a \karu\ preocuparse por esto en el resto del artículo, o aplicarla directamente al tablero con la misma \emph{key} y valor.
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgoset{use i = false}
+
+ \begin{goban}[label = {at = {above, left}}]
+ \end{goban}
+\end{codeexample}
+
+Ahora sí está listo para colocar las piedras. Para ello, \karu\ dispone de varias macros. Empecemos por la más básica: |\stone[options]{intersection}|. Este comando acepta dos parámetros: el primero, opcional, controla la apariencia y los elementos adicionales de las piedras (como marcas); el segundo, obligatorio, es la intersección. \karu\ no necesita convertir las intersecciones a números, ya que puede indicarlas alfanuméricamente. Por defecto, las piedras son neutrales, pero puede elegir al primer jugador pasando la \emph{key} |black| o |b|.
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[label = {at = {above, left}}, use i = false]
+ \stone[black] {D8}
+ \stone[black] {F8}
+ \stone[b] {E7}
+ \stone[b] {H7}
+ \end{goban}
+\end{codeexample}
+
+\karu\ sospecha que esta no es la mejor opción si necesita añadir 200 piedras o más. Para simplificar la sintaxis, descubre en la documentación la macro |\stones[options]{intersection, intersection, ...}|, que acepta las mismas \emph{keys} opcionales que |\stone|.\footnote{Entre \texttt{\textbackslash stone\{A1\}} y \texttt{\textbackslash stones\{A1\}}, la primera opción es mucho más rápida. Veremos más adelante que hay muchos procesos involucrados en la lectura del parámetro obligatorio de las macros plurales.}
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[label = {at = {north, west}}, use i = false]
+ \stones[b]{B2,E2,J2,C3,D3,G3,H3,C5,D5,E5,F5,G5,E6,G6}
+ \end{goban}
+\end{codeexample}
+
+\karu\ también nota que existe un sistema sintáctico (pág.~\pageref{subsec:sintaxis-de-coordenadas}) para agregar varias coordenadas simultáneamente. Por ejemplo, para una línea de piedras de C5 a G5, puede escribir |C:G5| o |C5--G5|.
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[label = {at = {north, west}}, use i = false]
+ \stones[b]{B2,E2,J2,C3,D3,G3,H3,E6,G6,C:G5}
+ \end{goban}
+\end{codeexample}
+
+Para añadir piedras blancas, \karu\ debe incluir la \emph{key} |white| en el comando |\stones|. Sabe que |white| y |black| no se refieren literalmente a los colores blanco y negro, sino al primer y segundo jugador, respectivamente, y que al aplicar estas \emph{keys} los objetos heredan sus propiedades.
+
+\begin{codeexample}[width=4.8cm]
+ \begin{goban}[label = {at = {north, west}}, use i = false]
+ \stones[b]{B2,E2,J2,C3,D3,G3,H3,E6,G6,C:G5}
+ \stones[w]{D8,F8,E7,H7,C6,D6,F6,H6,B5,B4,E4,H2,J3:5}
+ \end{goban}
+\end{codeexample}
+
+Por último, resta aplicar el estilo a su tablero. Para ello, revisa el catálogo (pág.~\pageref{sec:catalogo}) y encuentra un estilo que le gusta: |pgfgo|. Para aplicarlo, consulta la sección correspondiente a los perfiles (pág.~\pageref{subsec:perfiles}) y decide usar la macro |\pgfgouseprofile{<name>}|.
+
+\begin{codeexample}[width=4.8cm]
+ \pgfgouseprofile{pgfgo}
+
+ \begin{goban}[label = {at = {north, west}}, use i = false]
+ \stones[b]{B2,E2,J2,C3,D3,G3,H3,E6,G6,C:G5}
+ \stones[w]{D8,F8,E7,H7,C6,D6,F6,H6,B5,B4,E4,H2,J3:5}
+ \end{goban}
+\end{codeexample}
+
+\subsection{Movimientos}
+
+Cuando se desea cargar las piedras en orden o siguiendo la secuencia «negro, blanco, negro, blanco», puede resultar tedioso e innecesario especificar la \emph{key} correspondiente a cada jugador.
+
+\begin{codeexample}[code only]
+ \begin{goban}
+ \stone[b] {F7}
+ \stone[w] {E6}
+ \stone[b] {G3}
+ \stone[w] {D6}
+ \end{goban}
+\end{codeexample}
+
+Por eso, \pgfgoname\ incluye macros que facilitan este proceso. Empecemos con la singular:
+\begin{command}{\move\opt{\oarg{options}}\marg{intersection}}
+\end{command}
+Este comando funciona como |\stone|, pero alterna automáticamente los colores.
+
+\begin{codeexample}[width=5cm]
+ \begin{goban}[label = {at = all}]
+ \move {F7}
+ \move {E6}
+ \move {G3}
+ \move {D6}
+ \end{goban}
+\end{codeexample}
+
+La macro |\move|, al igual que |\stone|, tiene una versión plural:
+\begin{command}{\moves\opt{\oarg{options}}\marg{intersection}}
+\end{command}
+En este caso, especificar la \emph{key} |black| o |white| solo determina quién es el primer jugador de la secuencia.
+
+\begin{codeexample}[width=5cm]
+ \begin{goban}[label = {at = all}]
+ \stone[b] {F7}
+ \moves[white] { E6,G3,D6,F5,E7,E2,F8,E6,D8,D3,
+ G7,C5,C6,D5,B5,G5,B4,B2,H6,C3,
+ I3,I2,I5,H3}
+ \end{goban}
+\end{codeexample}
+
+Las macros |\move| y |\moves| también cuentan con versiones «estrelladas» (|\move*| y |\moves*|), que permiten etiquetar las jugadas. Es posible controlar desde dónde comenzará el etiquetado con la \emph{key} |from|.
+
+\begin{codeexample}[width=5cm]
+ \begin{goban}[label = {at = all}]
+ \moves[white] { E6,G3,D6,F5,E7,E2,F8,E6,D8,D3,
+ G7,C5,C6,D5,B5,G5,B4,B2,H6,C3,
+ I3,I2,I5,H3}
+
+ \moves*[from = 26]{F6,E5,I4,G6}
+ \move* {H2} % Es negra y etiquetada con 30, sin necesidad de expresarlo.
+ \end{goban}
+\end{codeexample}
+
+En este último ejemplo, se observa que |H2| se colocó con |\move*| y, aunque está separado de |\moves*|, es negra y está etiquetada con 30, ya que la última piedra colocada (|G6|) era negra y estaba etiquetada con 29.
+
+\subsection{Tablero parcial y marcas}
+
+En ocasiones, interesa centrarse en una región particular del tablero. Por esta razón, es posible enfocarse en una porción de este.
+
+\begin{figure}[H]
+ \centering
+ \begin{goban}[partial = {from = B2 to E4}, background = false]
+ \stones[b] {C2,B3,C4}
+ \stones[w] {D4,E3,D2}
+ \stone[w, mark = {circle, line = {color = red}}] {C3}
+ \mark[custom = {!}] {D3}
+ \end{goban}
+\end{figure}
+
+Para representar este tablero, comenzamos cargando las piedras.
+
+\begin{codeexample}[width=5cm]
+ \begin{goban}
+ \stones[b] {C2,B3,C4}
+ \stones[w] {D4,E3,D2,C3}
+ \end{goban}
+\end{codeexample}
+
+A través de la \emph{key} |partial|, podemos especificar el rango del tablero mediante su \emph{key} |from|. Esta recibe un valor de la forma |LN to LN|, donde cada |LN| representa un par de vértices opuestos del rectángulo.
+
+\begin{codeexample}[]
+ \begin{goban}[partial = {from = B2 to E4}]
+ \stones[b] {C2,B3,C4}
+ \stones[w] {D4,E3,D2,C3}
+ \end{goban}
+\end{codeexample}
+
+Para eliminar la línea del tablero, recurrimos a la \emph{key} |line| del |background| del |goban|.
+
+\begin{codeexample}[]
+ \begin{goban}[partial = {from = B2 to E4}, background = {line = false}]
+ \stones[b] {C2,B3,C4}
+ \stones[w] {D4,E3,D2,C3}
+ \end{goban}
+\end{codeexample}
+
+Ahora bien, para colocar marcas contamos con la macro
+\begin{command}{\mark\opt{\oarg{options}}\marg{intersection}}
+\end{command}
+y con su versión plural.
+
+Esta macro es bastante amplia y se encuentra documentada en su página correspondiente. Por el momento, debemos saber dos cosas:
+\begin{itemize}
+ \item La marca para la circunferencia se llama |circle|.
+ \item La marca «!» puede añadirse mediante |custom|.
+\end{itemize}
+
+\begin{codeexample}[]
+ \begin{goban}[partial = {from = B2 to E4}, background = {line = false}]
+ \stones[b] {C2,B3,C4}
+ \stones[w] {D4,E3,D2}
+ \mark[custom = {!}] {D3}
+ \stone[w, mark = circle] {C3}
+ \end{goban}
+\end{codeexample}
+
+Podemos cambiar el color de la línea de una marca mediante la \emph{key} |mark/line/color|.
+
+\begin{codeexample}[]
+ \begin{goban}[partial = {from = B2 to E4}, background = {line = false}]
+ \stones[b] {C2,B3,C4}
+ \stones[w] {D4,E3,D2}
+ \mark[custom = {!}] {D3}
+ \stone[w, mark = {circle, line = {color = red}}] {C3}
+ \end{goban}
+\end{codeexample}
+
+\subsection{El final del juego: Territorio}
+
+\begin{figure}[H]
+ \centering
+ \pgfgouseprofile{wain}
+ \begin{goban}[label = {at = {above, left}}]
+ \stones[b] {A5,A6,B1,B2,B3,B4,B5,C1,C4,D1,D2,D5,D7,E2,E5,E7,E9,F4,F5,F6,F7,F8,F9,G5,G6,G7,H6,H8,I7}
+ \stones[w] {A7,B6,B8,C2,C3,C5,C6,C7,C8,D3,D4,D6,D8,D9,E3,E4,E6,E8,F1,F2,F3,G4,H2,H3,H5,I5,I6}
+ \prisoners{H1,I1,I2}
+ \prisoner[white] {A1}
+
+ \marks[b, t-circle] {A1,A2,A3,A4,G8,G9,H9,I9,I8,H7}
+ \marks[w, t-square] {A9,B9,C9,A8,B7,H4,I4,I3,I2,I1,H1,G1,G2,G3}
+ \mark[neutral, t-square] {E1}
+ \end{goban}
+\end{figure}
+
+Partamos del siguiente tablero:
+
+\begin{codeexample}[]
+ \pgfgouseprofile{wain}
+
+ \begin{goban}[label = {at = {above, left}}]
+ \stones[b] {A6|-B5|-D1|-E2, C4, E9-|F4, D5-|G7--D7, H6, H8, I7}
+ \stones[w] {E8-|C5, B:E6, A7, B8, D9, I6|- H5, H2:3, F1|-C3, C2, D:E4, G4}
+ \end{goban}
+\end{codeexample}
+
+Lo siguiente será identificar las piedras prisioneras. Los prisioneros se pueden marcar mediante la \emph{key} |prisoner| o mediante la macro
+\begin{command}{\prisoner\opt{\oarg{options}}\marg{intersection}}
+\end{command}
+que cuenta también con su versión plural.
+
+\begin{codeexample}[width=4.75cm]
+ \pgfgouseprofile{wain}
+
+ \begin{goban}[label = {at = {above, left}}]
+ \stones[b] {A6|-B5|-D1|-E2, C4, E9-|F4, D5-|G7--D7, H6, H8, I7}
+ \stones[w] {E8-|C5, B:E6, A7, B8, D9, I6|- H5, H2:3, F1|-C3, C2, D:E4, G4}
+
+ \stones[b, prisoner]{H1-|I2} % Equivalente a \prisoners[b] {...}
+ \prisoner[w] {A1} % Equivalente a \stone[w, prisoner] {...}
+ \end{goban}
+\end{codeexample}
+
+Ahora definamos los territorios. Esto se puede hacer de muchas maneras. En particular, hay dos implementadas con seguridad: la marca |t-square| y la marca |t-circle|. Estas marcas toman siempre como relleno el color de relleno de la piedra a la que pertenecen y como color y grosor de borde los de la cuadrícula.
+
+\begin{codeexample}[width=4.75cm]
+ \pgfgouseprofile{wain}
+
+ \begin{goban}[label = {at = {above, left}}]
+ \stones[b] {A6|-B5|-D1|-E2, C4, E9-|F4, D5-|G7--D7, H6, H8, I7}
+ \stones[w] {E8-|C5, B:E6, A7, B8, D9, I6|- H5, H2:3, F1|-C3, C2, D:E4, G4}
+
+ \stones[b, prisoner]{H1-|I2}
+ \prisoner[w] {A1}
+
+ \marks[b, t-circle]{A1:4, G8|-I9, I8, H7}
+ \marks[w, t-square]{G3|-I1|-H4, C9-|A8, B7}
+ \marks[t-square, fill = {color = red}] {E1} % No se rellena de rojo, porque toma el color de neutral
+ \end{goban}
+\end{codeexample}
+
+Otro comando para delimitar territorios es |\territory|. El argumento obligatorio es la lista de vértices del polígono de la región que se desea delimitar.
+
+\begin{codeexample}[width=4.75cm]
+ \pgfgouseprofile{wain}
+
+ \begin{goban}[label = {at = {above, left}}]
+ \stones[b]{A6|-B5|-D1|-E2, C4, E9-|F4, D5-|G7--D7, H6, H8, I7}
+ \stones[w]{E8-|C5, B:E6, A7, B8, D9, I6|- H5, H2:3, F1|-C3, C2, D:E4, G4}
+
+ \stones[b, prisoner]{H1-|I2}
+ \prisoner[w] {A1}
+
+ \territory[b]{A1,A5,B5,B1}
+ \territory[b]{F9,F7,G7,G6,I6,I9}
+ \territory[w]{F1,F4,G4,G5,I5,I1}
+ \territory[w]{A9,A6,C6,C8,D8,D9}
+ \end{goban}
+\end{codeexample}
+
+En cualquier caso, esta macro no aparece documentada por el momento, y no recomiendo usarla hasta que esté implementada definitivamente.
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-ejemplosiniciales.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-eltablero.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-eltablero.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-eltablero.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,540 @@
+\section{El tablero}
+\label{sec:tablero}
+
+Cuando hablamos de «tablero», nos referimos a un entorno o \emph{scope} en el que se renderizan tanto el goban (la cuadrícula del juego) como los elementos que contiene: piedras, etiquetas de coordenadas y otra información relevante. Este entorno está diseñado para ser flexible y personalizable, permitiendo a los usuarios adaptar su apariencia y funcionalidad según las necesidades del diagrama, ya sea para representar partidas completas, secciones específicas o incluso añadir anotaciones visuales.
+
+\begin{environment}{{goban}\opt{\oarg{options}}}
+
+ Inicializa el entorno del goban. Por defecto, dibuja un tablero cuadrado de 9×9 intersecciones, con un borde visible, fondo blanco y sin etiquetas en los laterales.
+
+ \begin{codeexample}[width=5cm]
+ \begin{goban}
+ \end{goban}
+ \end{codeexample}
+
+ Dado que el tablero es la única macro que utiliza la capa de TikZ, cada intersección puede ser accedida mediante su coordenada alfanumérica (como en \pgfname) o mediante valores numéricos en el sistema de coordenadas de \tikzname. Esto permite combinar la sintaxis intuitiva del Go con las capacidades gráficas de TikZ, lo que resulta especialmente útil para añadir elementos personalizados, como flechas o marcas, directamente sobre el tablero.
+
+ \begin{codeexample}[width=5.85cm]
+ \begin{goban}[19, partial = {from = J1 to S9},
+ label = {at = {north, east}}]
+ \stones {K8,R8,Q5,R5,O4,Q4,L3,O3,M2,N2}
+ \mark[black, circle] {K8}
+ \stones[white] {K6,R4,R3,P3,N1,O2,Q2}
+
+ \tikzset{flecha/.style = {-{latex[]}, line width = 2pt, blue}}
+ \draw[flecha] (12,8)--(17,8);
+ \end{goban}
+ \end{codeexample}
+
+ \begin{key}{/pgfgo/goban/use i=\meta{boolean} (default true, initially true)}
+
+ Permite activar o desactivar el uso de la letra «I» en las coordenadas y etiquetas del tablero. Cuando está desactivada («false»), cualquier referencia a «I» se interpreta como «J».
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {13, label = {at = north}}}
+
+ \begin{goban}[label = {at = west}, partial = {from = H1 to M3}]
+ \stone[b]{J2}
+ \end{goban}
+
+ \begin{goban}[use i = false, partial = {from = H1 to N3}]
+ \stone[b]{J2}
+ \end{goban}
+
+ \begin{goban}[use i = false, label = {at = east}, partial = {from = H1 to N3}]
+ \stone[white, mark = {custom = !}] {I2} % Si es I, entonces pasa a J.
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/size=\meta{nlines or nlines |x| nlines} (initially 9)}
+
+ Define el número de líneas verticales y horizontales del tablero. Puede omitirse la palabra «size» y especificarse directamente el valor. Si se indica un único entero (como |9|), el tablero será cuadrado (9×9). Si se usa una expresión como |5x3|, se creará un tablero rectangular de 5 columnas por 3 filas.
+
+ \begin{codeexample}[width=6.5cm]
+ \begin{goban}[5]
+ \end{goban}
+
+ \begin{goban}[5x3]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/scale=\meta{float} (initially 1)}
+
+ Controla la escala global del tablero, afectando tanto las dimensiones generales como el grosor de ciertos elementos (como el «line width» de las líneas).
+
+ \begin{codeexample}[width=5.5cm]
+ \begin{goban}[2, scale = 2]
+ \stone[b, mark]{A1}
+ \end{goban}
+
+ \begin{goban}[2, scale = 1]
+ \stone[b, mark]{A1}
+ \end{goban}
+
+ \begin{goban}[2, scale = 0.5]
+ \stone[b, mark]{A1}
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \subsection{Cuadrícula}
+
+ La cuadrícula se refiere a las líneas centrales que forman las intersecciones del tablero.
+
+ \begin{key}{/pgfgo/goban/grid=\meta{options}}
+ Controla el comportamiento y la apariencia de las líneas centrales del tablero. Este conjunto de opciones permite modificar su visibilidad, color, grosor y separación, ofreciendo un alto grado de personalización.
+ \end{key}
+
+ \begin{stylekey}{/pgfgo/goban/grid/false}
+
+ Desactiva las líneas centrales, dejando visibles solo el borde y las piedras.
+
+ \begin{codeexample}[]
+ \begin{goban}[3]
+ \stone[b]{A1}
+ \stone[w]{B2}
+ \end{goban}
+
+ \begin{goban}[3, grid = false]
+ \stone[b]{A1}
+ \stone[w]{B2}
+ \end{goban}
+ \end{codeexample}
+
+ El primer tablero muestra la cuadrícula por defecto.
+ \end{stylekey}
+
+ \begin{key}{/pgfgo/goban/grid/line=\meta{options}}
+ Permite controlar las líneas de la cuadrícula.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/line/color =\meta{color} (initially black)}
+
+ Permite cambiar el color de las líneas de la cuadrícula.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[grid = {line = {color = blue}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[grid = {line = {color = red}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/line/opacity =\meta{float} (initially 1)}
+
+ Establece la opacidad de las líneas de la cuadrícula, desde 0 (transparente) hasta 1 (opaco).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[grid = {line = {opacity = 0.2}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/line/width =\meta{dimension} (initially 0.55pt)}
+
+ Define el grosor de las líneas de la cuadrícula.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[grid = {line = {width = 1.5pt}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/x sep =\meta{dimension} (initially 1.25em)}
+ Establece la separación entre las líneas verticales, ajustando el ancho de las columnas del tablero.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/y sep =\meta{dimension} (initially 1.25em)}
+ Establece la separación entre las líneas horizontales, ajustando la altura de las filas.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/grid/sep =\meta{dimension} (initially 1.25em)}
+ Define simultáneamente la separación vertical y horizontal de las líneas, asegurando un espaciado uniforme en ambas direcciones. Es una opción conveniente para mantener proporciones equilibradas.
+ \end{key}
+
+ \subsection{Borde}
+
+ El borde del tablero es el contorno que enmarca la cuadrícula y las piedras, proporcionando un límite visual claro. Por defecto, está activo, tiene un fondo blanco y un contorno negro.
+
+ \begin{key}{/pgfgo/goban/background=\meta{options} (default true)}
+ Controla las propiedades del borde del tablero, como su visibilidad, color, grosor y forma, permitiendo una personalización detallada.
+ \end{key}
+
+ \begin{stylekey}{/pgfgo/goban/background/false}
+
+ Desactiva completamente el borde del tablero, eliminando tanto el contorno como el relleno. Esto es útil para diagramas minimalistas o cuando el fondo del documento ya proporciona el contraste necesario.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = false, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{stylekey}
+
+ \begin{key}{/pgfgo/goban/background/fill=\meta{options} (initially true)}
+ Controla las opciones relacionadas con el relleno del fondo del tablero.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/fill=\meta{boolean} (initially true)}
+
+ Determina si el relleno del fondo del tablero está activo. Si se desactiva, el área dentro del borde será transparente, mostrando solo el contorno (si está habilitado).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = false}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/fill/color =\meta{color} (default white)}
+
+ Define el color de relleno del tablero.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {fill = {color = orange!40}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {fill = {color = olive!30}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/fill/opacity =\meta{float} (initially 1)}
+
+ Controla la opacidad del relleno, desde 0 (transparente) hasta 1 (opaco).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {fill = {color = orange!40}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {fill = {color = orange!40}, fill = {opacity = 0.5}}, resume]
+ \end{goban}
+ \end{codeexample}
+
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line=\meta{options} (default true)}
+ Controla las opciones de la línea de contorno del fondo.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line=\meta{boolean}}
+ Activa o desactiva la línea del borde.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = false}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line/color =\meta{color} (default black)}
+
+ Define el color de la línea del borde, permitiendo distinguirlo del fondo o de las líneas de la cuadrícula.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = {color = blue}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line/opacity =\meta{float} (default 1)}
+
+ Ajusta la opacidad de la línea del borde.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {line = {color = red}}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = {color = red}, line = {opacity = 0.5}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/line/width =\meta{dimension} (default 0.75pt)}
+
+ Controla el grosor de la línea del borde.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {line = {width = 1.5pt}}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/rounded corners =\meta{dimension} (default 1pt)}
+
+ Ajusta el redondeo de las esquinas del borde, desde 0pt (esquinas rectas) hasta valores mayores para un efecto más suave y estilizado.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {rounded corners = 0pt}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {rounded corners = 0.625em}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/background/sep =\meta{dimension} (default /pgfgo/goban/stone/radius * 1.5)}
+
+ Define la separación entre la cuadrícula y el borde, basada por defecto en el radio de las piedras multiplicado por 1.5. Este ajuste asegura que las piedras cercanas al borde no se superpongan con él.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[background = {sep = 0.625em}, new remember]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}[background = {sep = 1.5em}, resume]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \subsection{Tablero parcial}
+
+ En muchas ocasiones, no es necesario representar un tablero completo, sino solo una sección rectangular, ya sea por limitaciones de espacio, para enfocar la atención en una zona específica o para simplificar la creación de diagramas. El entorno |goban| incluye la \emph{key} |partial|, que permite definir esta región mediante la sub-\emph{key} |from|. Esta indica los vértices opuestos de un rectángulo, sin importar el orden en que se especifiquen, lo que facilita su uso. Por ejemplo, |from = A1 to D3| es equivalente a |from = D3 to A1|.
+
+ \begin{figure}[H]
+ \centering
+
+ \begin{tikzpicture}
+ \node[anchor=north] (X) {
+ \begin{goban}[label = {at = {north, west}}]
+ \coordinate (A) at (4,6);
+ \coordinate (B) at (9,9);
+ \coordinate (C) at (A|-B);
+ \coordinate (D) at (A-|B);
+
+ \tikzset{punto/.style = {circle, fill = #1, draw, inner sep=0.25em, fill opacity=0.5, anchor=center}}
+
+ \node[punto = red] at (A){};
+ \node[punto = red] at (B){};
+ \node[punto = blue] at (C){};
+ \node[punto = blue] at (D){};
+
+ \draw[red, {latex}-{latex}, shorten <=5pt, shorten >= 5pt] (A)--(B);
+ \draw[blue, {latex}-{latex}, shorten <=5pt, shorten >= 5pt] (C)--(D);
+
+ \node[fit=(A)(B), draw, inner sep=0.6em, rounded corners, line width=1pt, fill opacity=0.1, fill=orange] {};
+ \end{goban}
+ };
+
+ \node[anchor=north, xshift=15em] {
+ \tikz{
+ \node[inner sep=0] (Y) {
+ \begin{goban}[label = {at = {north, west}}, partial = {from = I9 to D6}]
+ \end{goban}
+ };
+ \node[align = left, anchor=north, inner sep=0, yshift=-1em] at (Y.south){
+ {\color{blue}|partial = {from = D9 to I6}|}\\
+ {\color{blue}|partial = {from = I6 to D9}|}\\
+ {\color{red} |partial = {from = D6 to I9}|}\\
+ {\color{red} |partial = {from = I9 to D6}|}\\
+ };
+ }
+ };
+ \end{tikzpicture}
+ \end{figure}
+
+ \begin{key}{/pgfgo/goban/partial=\meta{options}}
+
+ Controla las opciones para representar tableros parciales, permitiendo delimitar una región específica del goban.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/partial/from=\meta{intersection |to| intersection}}
+
+ Especifica los vértices opuestos del rectángulo que define el tablero parcial. Estas intersecciones pueden ser cualquier par de puntos que formen una diagonal del área deseada.
+
+ \end{key}
+
+ \begin{codeexample}[]
+ \tikzset{flecha/.style = {-{latex[]}, line width = 1pt, red}}
+
+ \begin{goban}[partial = {from = A1 to D3}]
+ \draw[flecha] (1,1)--(4,3); % Desde A1 hasta D3
+ \end{goban}
+
+ \begin{goban}[partial = {from = A9 to I6}]
+ \draw[flecha] (1,9)--(9,6); % Desde A9 hasta I6
+ \end{goban}
+
+ \begin{goban}[partial = {from = E2 to B4}]
+ \draw[flecha] (5,2)--(2,4); % Desde E2 hasta B4
+ \end{goban}
+ \end{codeexample}
+
+ \subsection{Etiquetas del tablero}
+
+ Las etiquetas son los indicadores alfanuméricos (letras y números) que aparecen en los lados del tablero para identificar las intersecciones.
+
+ \begin{key}{/pgfgo/goban/label=\meta{options}}
+ Controla las propiedades de las etiquetas, como su ubicación y formato.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/false}
+ Desactiva todas las etiquetas.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/at =\meta{options}}
+
+ Define en qué lados del tablero aparecen las etiquetas. Las opciones incluyen combinaciones de posiciones cardinales o valores predefinidos como «all» o «none».
+
+ \begin{stylekey}{/pgfgo/goban/label/at/all}
+
+ Muestra etiquetas en todos los lados del tablero (norte, sur, este y oeste).
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/none}
+
+ Equivale a |label=false|, eliminando todas las etiquetas.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/east}
+ Coloca etiquetas solo en el lado derecho (números verticales).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/right}
+ Equivalente a |east|.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/north}
+ Coloca etiquetas solo en la parte superior (letras horizontales).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/above}
+ Equivalente a |north|.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/south}
+ Coloca etiquetas solo en la parte inferior (letras horizontales).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/below}
+ Equivalente a |south|.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/label/at/west}
+ Coloca etiquetas solo en el lado izquierdo (números verticales).
+ \end{stylekey}
+ \begin{stylekey}{/pgfgo/goban/label/at/left}
+ Equivalente a |west|.
+ \end{stylekey}
+
+ \begin{codeexample}[]
+ \begin{goban}[12, label = {at = {all}}]
+ \end{goban}
+
+ \begin{goban}[partial = {from = A6 to I9}, label = {at = north}]
+ \end{goban}
+
+ \begin{goban}[partial = {from = B2 to E4}, label = {at = {north, east}}]
+ \end{goban}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/font size = \meta{dimension} (initially 0.75em)}
+
+ Ajusta el tamaño de la fuente de las etiquetas.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/sep = \meta{dimension} (initially 0.5em)}
+
+ Controla la distancia entre las etiquetas y el borde del tablero.
+ \end{key}
+
+ \begin{key}{/pgfgo/goban/label/text color = \meta{color} (initially black)}
+
+ Define el color del texto de las etiquetas.
+ \end{key}
+
+ \subsection{Recordar un tablero}
+ El sistema de «recordar» permite almacenar y reutilizar el estado de un tablero entre diferentes entornos |goban|. Esta funcionalidad es extremadamente experimental y, en rigor, no debería estar documentada aún.
+
+ \begin{stylekey}{/pgfgo/goban/new remember}
+
+ Inicia un nuevo estado de memoria, guardando las piedras y configuraciones del tablero actual para usarlas más adelante.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/add to remember}
+
+ Añade elementos al estado memorizado sin borrar lo anterior, permitiendo construir diagramas incrementalmente.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/forget}
+
+ Borra el estado memorizado, reiniciando el sistema de memoria.
+ \end{stylekey}
+
+ \begin{stylekey}{/pgfgo/goban/resume}
+
+ Recupera el estado memorizado y lo renderiza, útil para continuar desde un punto previo sin reescribir el código.
+
+ \end{stylekey}
+
+\end{environment}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-eltablero.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-elterritorio.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-elterritorio.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-elterritorio.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,62 @@
+\section{Territorio}
+\noindent TODO. VOLÁTIL
+
+
+\begin{command}{\territory\opt{\oarg{options}}\marg{intersection, intersection,...}}
+ No acepta sintaxis de coordenadas para grupos.
+\end{command}
+
+
+
+
+
+\begin{key}{/pgfgo/territory/forget}
+
+\end{key}
+
+
+
+\begin{key}{/pgfgo/territory/remember}
+
+\end{key}
+
+
+
+\begin{key}{/pgfgo/territory/black}
+
+\end{key}
+
+
+
+\begin{key}{/pgfgo/territory/white}
+
+\end{key}
+
+
+
+\begin{key}{/pgfgo/territory/neutral}
+
+\end{key}
+
+
+
+\begin{key}{/pgfgo/territory/line color=\meta{color} (initially black)}
+
+\end{key}
+
+
+\begin{key}{/pgfgo/territory/line opacity=\meta{number} (initially 1)}
+
+\end{key}
+
+
+
+\begin{key}{/pgfgo/territory/fill color=\meta{color} (initially black)}
+
+\end{key}
+
+
+\begin{key}{/pgfgo/territory/line opacity=\meta{number} (initially 1)}
+
+\end{key}
+
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-elterritorio.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lasmarcas.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lasmarcas.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lasmarcas.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,508 @@
+\section{Marcas}
+
+Las marcas son elementos gráficos que se colocan en las intersecciones del tablero para resaltar posiciones específicas, indicar puntos de interés o numerar secuencias, sin necesidad de añadir piedras. \pgfgoname\ ofrece comandos y opciones versátiles para personalizar estas marcas, desde formas predefinidas hasta etiquetas personalizadas.
+
+\begin{command}{\mark\opt{\oarg{options}}\marg{intersection}}
+
+ Dibuja una marca individual en la intersección especificada (ej. «C3»). Las opciones permiten definir su forma, color y otros atributos.
+\end{command}
+
+\begin{command}{\marks\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+
+ Similar a |\mark|, pero aplica la misma marca a múltiples intersecciones mediante la sintaxis de coordenadas.
+\end{command}
+
+\begin{key}{/pgfgogo/mark = \meta{options} (default cross)}
+
+ Define el tipo de marca a colocar, con una cruz («cross») como valor predeterminado si no se especifica otra opción.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/circle}
+
+ Coloca un círculo hueco como marca.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[circle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/triangle}
+
+ Dibuja un triángulo hueco.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/square}
+
+ Coloca un cuadrado hueco.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/cross}
+
+ Dibuja una cruz.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[cross]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/filled square}
+
+ Coloca un cuadrado relleno.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[filled square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/filled circle}
+
+ Dibuja un círculo relleno.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[filled circle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/t-circle}
+
+ Coloca un círculo pequeño con un borde más grueso, diseñado específicamente para marcar territorios.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[t-circle]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/t-square}
+
+ Dibuja un cuadrado pequeño con borde grueso, similar a «t-circle», usado para señalar territorios.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[t-square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/hatched lines}
+
+ Coloca un patrón de líneas cruzadas (tramado).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[hatched lines]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/sequence=\meta{options}(default false, initial false)}
+ Permite numerar una serie de marcas en orden.
+\end{key}
+
+\begin{key}{/pgfgo/mark/sequence/use}
+ Muestra la marca |sequence| sobre el tablero.
+\end{key}
+
+\begin{key}{/pgfgo/mark/sequence/from=\meta{number}}
+
+ Establece el número inicial de la secuencia de marcas numeradas, permitiendo continuar desde un punto específico en lugar de 1.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[sequence = {use, from = 3}]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+
+
+\begin{key}{/pgfgo/mark/custom=\meta{token list}}
+
+ Permite definir una marca personalizada usando texto o símbolos (como «!» o «?») e incluso im\'agenes.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[custom = {!}]{C3}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[custom = {\tikz{\node[rounded corners, draw, inner sep = 1em, red]{\dots};}}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+\begin{key}{/pgfgo/mark/line = \meta{option} (default true)}
+ Controla el contorno de la marca.
+\end{key}
+
+
+\begin{key}{/pgfgo/mark/line/color = \meta{color}}
+ Define el color del contorno de la marca.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle, line = {color = red}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+\begin{key}{/pgfgo/mark/line/width = \meta{dimension}}
+
+ Ajusta el grosor del contorno de las marcas.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle]{C3}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle, line = {width = 0.1pt}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+
+\begin{key}{/pgfgo/mark/fill = \meta{options} (default true)}
+ Controla el relleno de una marca
+\end{key}
+
+\begin{key}{/pgfgo/mark/fill/color = \meta{color}}
+
+ Establece el color de relleno de una marca.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[circle, fill = {color = red}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+\begin{key}{/pgfgo/mark/label = \meta{option}}
+ Controla la apariencia de las etiquetas de las marcas que las tengan.
+\end{key}
+
+
+\begin{key}{/pgfgo/mark/label/color = \meta{color}}
+
+ Controla el color del texto o símbolo en marcas personalizadas (como con |custom|).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[custom = {!}, label = {color = red}]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format=\meta{options} (default arabic)}
+
+ Controla el estilo de numeración de las etiquetas de enumeraci\'on (como |sequence|), con opciones como números arábigos, letras o romanos.
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/arabic}
+
+ Usa números arábigos para secuencias.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = arabic}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/alph}
+
+ Usa letras minúsculas para la secuencia.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = alph}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/Alph}
+
+ Usa letras mayúsculas.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = Alph}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/roman}
+
+ Usa números romanos minúsculos.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = roman}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/label/format/Roman}
+
+ Usa números romanos mayúsculos.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \marks[label = {format = Roman}, sequence]{C3,B3,C4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+
+\begin{key}{/pgfgo/mark/black}
+
+ Aplica las propiedades del primer jugador (negro) a la marca.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[triangle]{C3}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \mark[black, t-square]{C3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/mark/white}
+
+ Aplica las propiedades del segundo jugador (blanco) a la marca.
+\end{key}
+
+\begin{key}{/pgfgo/mark/neutral}
+
+ Mantiene la marca sin asociarla a ningún jugador.
+\end{key}
+
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lasmarcas.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-laspiedras.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-laspiedras.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-laspiedras.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,547 @@
+\section{Las piedras, movimientos y prisioneros}
+
+Las piedras son los elementos fundamentales. En \pgfgoname, se proporcionan comandos y opciones para dibujarlas de manera flexible, permitiendo personalizar su apariencia y comportamiento según las necesidades del diagrama.
+
+\subsection{Piedras}
+
+\begin{command}{\stone\opt{\oarg{options}}\marg{intersection}}
+ Este comando dibuja una piedra individual en la intersección especificada. El argumento obligatorio es la coordenada (ej. «C2»), mientras que las opciones opcionales permiten ajustar su estilo, como color, tamaño o mar, siguiendo la convención del primer jugador en Go.
+\end{command}
+
+
+\begin{command}{\stones\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+ Similar a |\stone|, pero permite colocar múltiples piedras con la sintaxis correspondiente (Ver Sintaxis de coordenadas).
+\end{command}
+
+Es posible cambiar una opci\'on en todos los jugadores mediante |\pgfgoset{stone = {...}}|. Esto es equivalente a |\pgfgoset{players = {all = {stone = {...}}}}|.
+
+
+\begin{key}{/pgfgo/stone/fill = \meta{option} (default true)}
+ Controla las opciones de relleno de una piedra.
+\end{key}
+
+
+\begin{key}{/pgfgo/stone/fill/color = \meta{color}}
+ Define el color de relleno de una piedra.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[fill = {color = cyan!80!black}]{C2,D3}
+ \stone[fill = {color = magenta!80!black}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/fill/opacity = \meta{float} (initially 1)}
+
+ Controla la opacidad del relleno de la piedra, desde 0 (transparente) hasta 1 (opaco).
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, fill = {opacity = 0.8}]{C2,D3}
+ \stone[w, fill = {opacity = 0.5}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+\begin{key}{/pgfgo/stone/line = \meta{option} (initially true)}
+ Controla las opciones de la frontera de una piedra.
+\end{key}
+
+\begin{key}{/pgfgo/stone/line/color = \meta{color} (initially black)}
+
+ Establece el color del borde de la piedra, que por defecto es negro para todas las piedras.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, line = {color = magenta}]{C2,D3}
+ \stone[w, line = {color = cyan}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/line/opacity = \meta{float} (initially 1)}
+
+ Define la opacidad del borde de la piedra, permitiendo hacerlo más sutil o transparente.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, line = {opacity = 0.5}]{C2,D3}
+ \stone[w, line = {opacity = 0.8}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/line/width = \meta{dimension} (initially 0.9pt)}
+
+ Controla el grosor del borde de la piedra.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w, line = {width = 2pt}]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/radius = \meta{dimension} (initially 0.55em)}
+
+ Establece el tamaño de la piedra mediante su radio.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, radius = 0.15cm]{C2,D3}
+ \stone[w, radius = 0.25cm]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/scale = \meta{float} (initially 1)}
+
+ Define un factor de escala que afecta todos los elementos de la piedra (radio, borde, marcas), manteniendo sus proporciones.
+\end{key}
+
+\begin{key}{/pgfgo/stone/black}
+
+ Asigna a la piedra las características del primer jugador (negro por defecto), incluyendo color de relleno y borde. Es el estado inicial de toda piedra si no se especifica otra opción.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[black]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/b}
+
+ Abreviatura de «black», con idéntica funcionalidad.
+\end{key}
+
+\begin{key}{/pgfgo/stone/white}
+
+ Asigna a la piedra las características del segundo jugador (blanco por defecto), con relleno blanco y borde negro.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[white]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[white]{C2,D3}
+ \stone[white]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/w}
+
+ Abreviatura de «white», con la misma funcionalidad.
+\end{key}
+
+\begin{key}{/pgfgo/stone/mark = \meta{mark keys}}
+
+ Coloca una marca sobre la piedra (ej. triángulo, círculo). Las marcas pueden personalizarse ulteriormente con otras claves, como color o tamaño.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, mark = triangle]{C2,D3}
+ \stone[w, mark = t-circle]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/forget}
+
+ Cuando el tablero usa un sistema de memoria (|new remember|, |resume|), esta opción indica que la piedra no debe recordarse, permitiendo excluirla de estados posteriores.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \stones[b]{C2,D3}
+ \stone[w, forget]{B4}
+ \end{goban}
+
+ \begin{goban}[resume]
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/remember}
+
+ En un tablero con memoria activa, asegura que la piedra se recuerde incluso si el entorno general usa |forget|.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[forget]
+ \stones[b]{C2,D3}
+ \stone[w, remember]{B4}
+ \end{goban}
+
+ \begin{goban}[resume]
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/stone/prisoner=\meta{prisoner options} (default fill opacity = 0.5)}
+
+ Caracteriza a una piedra como prisionera, típicamente con una opacidad reducida (0.5 por defecto) para indicar que ha sido capturada. Pueden añadirse otras opciones para personalizar su apariencia.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b, prisoner]{C2,D3}
+ \stone[white]{B4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+
+
+
+
+\subsection{Movimientos}
+
+Los comandos de movimientos permiten representar secuencias de jugadas alternando automáticamente entre negro y blanco. Incluyen opciones para numerar las jugadas y personalizar las piedras asociadas.
+
+\begin{command}{\move\opt{*}\opt{\oarg{options}}\marg{intersection}}
+
+ Dibuja una piedra como parte de una secuencia de movimientos, alternando colores automáticamente (negro, blanco, negro, etc.). La versión estrellada (|\move*|) añade una etiqueta numérica a la piedra.
+\end{command}
+
+\begin{command}{\moves\opt{*}\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+
+ Similar a |\move|, pero aplica la secuencia a múltiples intersecciones en una sola línea.
+\end{command}
+
+Es posible cambiar las opciones de todos los jugadores mediante |\pgfgoset{move = {...}}| que es equivalente a |\pgfgoset{players = {all = {move = {...}}}}|.
+
+\begin{key}{/pgfgo/move/black}
+
+ Establece que la secuencia de movimientos comienza con el jugador negro, útil para forzar el inicio de una jugada en diagramas específicos.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves[b]{C2,B4}
+ \move{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/white}
+
+ Establece que la secuencia comienza con el jugador blanco, alterando el orden natural de las jugadas.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves[white]{C2,B4}
+ \move{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/from = \meta{number}}
+
+ Define el número inicial de una secuencia numerada de movimientos, permitiendo continuar desde un punto específico en lugar de empezar en 1.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label = \meta{options}}
+
+ Controla las propiedades de las etiquetas numéricas en los movimientos estrellados, como tamaño, color o formato.
+\end{key}
+
+\begin{key}{/pgfgo/move/label/font size=\meta{dimension} (initially 0.5em)}
+
+ Ajusta el tamaño de la fuente de las etiquetas, permitiendo adaptarlas al tamaño de las piedras o al diseño general.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*[label = {font size = 0.125em}]{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format = \meta{options} (initially arabic)}
+
+ Define el estilo de numeración de las etiquetas.
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/arabic}
+
+ Usa números arábigos, el formato por defecto para las etiquetas de movimientos.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/alph}
+
+ Usa letras minúsculas para las etiquetas.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move={label = {format=alph}}}
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/Alph}
+
+ Usa letras mayúsculas.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move = {label = {format = Alph}}}
+ \begin{goban}
+ \moves*[from = 7]{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/roman}
+
+ Usa números romanos minúsculos.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move = {label = {format = roman}}}
+ \begin{goban}
+ \moves*{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/format/Roman}
+
+ Usa números romanos mayúsculos.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \end{goban}
+
+ \pgfgoset{move = {label = {format = Roman}}}
+ \begin{goban}
+ \moves*{C2,B4}
+ \move*{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/color = \meta{color}}
+
+ Define el color de las etiquetas.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \moves*{C2,B4}
+ \move*{D3}
+ \end{goban}
+
+ \begin{goban}
+ \moves*[label = {color = red}]{C2,B4}
+ \move*[label = {color = blue}]{D3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/forget}
+
+ Evita que las etiquetas de movimientos se guarden en la memoria del tablero cuando se usa |remember|, permitiendo que las piedras persistan sin sus números.
+
+ \begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[new remember]
+ \moves*[label = forget]{C2,B4,D3}
+ \end{goban}
+
+ \begin{goban}[resume]
+ \moves*{C:D4}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/move/label/remember}
+
+ Garantiza que las etiquetas se guarden en la memoria, incluso si el entorno usa |forget|, asegurando su continuidad en diagramas posteriores.
+\end{key}
+
+\begin{key}{/pgfgo/move/forget}
+
+ Indica que los movimientos no se recuerden en la memoria del tablero, eliminándolos de estados futuros al usar |resume|.
+\end{key}
+
+\begin{key}{/pgfgo/move/remember}
+
+ Asegura que los movimientos se recuerden, preservándolos para su reutilización con |resume|.
+\end{key}
+
+
+
+
+
+
+
+\subsection{Prisioneros}
+
+\pgfgoname\ ofrece comandos específicos para representar prisioneros, generalmente con una opacidad reducida para distinguirlas de las piedras activas.
+
+\begin{command}{\prisoner\opt{\oarg{options}}\marg{intersection}}
+
+ Dibuja una piedra prisionera en una intersección específica, con opciones para personalizar su estilo.
+\end{command}
+
+\begin{command}{\prisoners\opt{\oarg{options}}\marg{intersection \opt{, intersection, ...}}}
+
+ Coloca múltiples piedras prisioneras en una sola línea, eficiente para mostrar grupos capturados.
+\end{command}
+
+\begin{key}{/pgfgo/prisoner=\meta{stone options} (default fill opacity = 0.5)}
+
+ Define las características de las piedras prisioneras, con una opacidad de relleno de 0.5 por defecto para indicar su estado. Pueden aplicarse otras opciones de |\stone|, como color o tamaño.
+
+\end{key}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-laspiedras.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-loelemental.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-loelemental.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-loelemental.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,892 @@
+\section{Fundamentos}
+
+\subsection{El juego del \texttt{\textbackslash let}}
+
+Para permitir el uso de las macros |\mark| y |\marks|, estas primitivas han sido reasignadas a |\pgfgo_old_mark| y |\pgfgo_old_marks|, respectivamente. Esto se realiza para evitar conflictos con definiciones previas y garantizar que las nuevas funcionalidades del paquete \pgfgoname\ puedan integrarse sin inconvenientes en documentos existentes. En la práctica, si un usuario necesita acceder a las versiones originales, aún puede hacerlo mediante los comandos renombrados.
+
+\subsection{Configuración}
+
+La macro |\pgfgoset{...}| permite definir configuraciones generales para el paquete. Es equivalente a |\keys_set:nn{pgfgo}{...}|, lo que implica que utiliza el sistema de claves de LaTeX3 para establecer opciones de manera estructurada y jerárquica. Esta macro resulta especialmente útil para personalizar el comportamiento global del paquete, como el aspecto del tablero, las piedras o los movimientos, sin necesidad de repetir configuraciones en cada entorno individual. Por ejemplo, un usuario podría definir colores personalizados para los jugadores o ajustar el diseño del tablero de forma que se aplique a todos los diagramas del documento. También sirve como una puerta al formato directo.\footnote{Úsese con discreción\dots no como los pies de página.}
+
+\begin{command}{\pgfgoset\marg{options}}
+\end{command}
+
+\begin{key}{/pgfgo/goban = \meta{goban options}}
+ Establece opciones generales para el tablero. Esto incluye propiedades como el tamaño, el color de fondo, la visibilidad de las líneas de la cuadrícula o las etiquetas de coordenadas. Por ejemplo, se puede usar para crear tableros parciales o modificar el estilo visual del borde.
+\end{key}
+
+\begin{key}{/pgfgo/stone = \meta{stone options}}
+ Define opciones generales para las piedras, como su color de relleno, contorno o marcas predeterminadas. Es útil para establecer un estilo consistente en todas las piedras de un documento (neutrales, blancas o negras).
+\end{key}
+
+%\begin{key}{/pgfgo/move = \meta{move options}}
+% Establece opciones generales para los movimientos, como el color o el etiquetado automático.
+%\end{key}
+
+%\begin{key}{/pgfgo/mark = \meta{mark options}}
+% Establece opciones generales para las marcas, permitiendo definir formas (círculos, triángulos, etc.) o colores por defecto para destacar posiciones específicas en el tablero.
+%\end{key}
+
+\begin{key}{/pgfgo/use i = \meta{boolean} (default true)}
+ Permite decidir si se utiliza o no la etiqueta «I» en el tablero. Por defecto, está activada («true»), lo que significa que las coordenadas incluyen la letra «I». Si se desactiva («false»), el sistema omite esta letra y pasa directamente de «H» a «J», algo habitual en ciertas representaciones del juego de Go.
+\end{key}
+
+\begin{key}{/pgfgo/players = \meta{players options}}
+ Permite definir opciones para cada jugador (incluidas las neutrales). Esta \emph{key} actúa como un contenedor que engloba configuraciones específicas para los jugadores negro, blanco y neutral, facilitando la personalización según las reglas o preferencias del usuario. Todas las opciones disponibles y cómo personalizar estilos de piedras se detallarán en otra sección.
+\end{key}
+
+\begin{codeexample}[]
+ \pgfgoset{
+ goban = {
+ background = {
+ fill = {color = pgfgo},
+ line = false},
+ grid = {line = {color = white}}},
+ players = {
+ black = {
+ stone = {
+ line = {color = magenta},
+ fill = {color = blue!50!black}}},
+ white = {
+ stone = {line = {color = blue}},
+ mark = {line = {color = orange}}
+ }
+ }
+ }
+
+ \begin{goban}[3]
+ \stone[black] {A1}
+ \stone[white, mark = {triangle}] {A2}
+ \end{goban}
+
+ \begin{goban}[4]
+ \stone[black] {A2}
+ \stones[white, mark = {circle}] {B2,A3}
+ \end{goban}
+\end{codeexample}
+
+Los entornos |goban| posteriores heredan estas configuraciones, aunque pueden sobrescribirse localmente si es necesario.
+
+\subsection{Sintaxis de coordenadas}
+\label{subsec:sintaxis-de-coordenadas}
+
+Algo que distingue a \pgfgoname\ de otros paquetes es la posibilidad de introducir coordenadas con diversas sintaxis, ofreciendo flexibilidad para representar posiciones en el tablero de manera intuitiva.
+\begin{itemize}
+ \item Posibilidad de tener multiples entradas separando con comas.
+ \item Posibilidad de eliminar piedras agregando el grupo sustractivo despu\'es de un <<;>>.
+\end{itemize}
+
+Sin embargo, por motivos de rendimiento y consistencia, se han restringido algunas libertades que en un comienzo no estaban. Por ejemplo, para referirse a una intersección, la coordenada alfabética debe escribirse en mayúsculas y sin espacios. Así, la intersección B5 debe ingresarse como |B5|, y no como |B 5|, |B 5| o |b5|, ya que los espacios entre letra y número no son válidos en este contexto. Las restricciones se explicarán en cada caso.
+
+\subsubsection{Grupos de piedras}
+
+\def\sssseccion#1{\vskip0.5em\noindent\textbf{#1}\par}
+
+\sssseccion{Intersección}
+
+Las intersecciones se especifican indicando la letra seguida del número, sin espacios entre el componente alfabético y el numérico.
+
+\begin{codeexample}[]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}[label = {at = {south, west}}]
+ \stones[b]{C2,D3}
+ \stone[w]{B4}
+ \stone[w]{B 3} % No se reconoce porque tiene un espacio.
+ \end{goban}
+\end{codeexample}
+
+En el ejemplo, |B 3| no se reconoce debido al espacio, mientras que |B4| se dibuja correctamente como una piedra blanca.
+
+\sssseccion{Segmentos}
+
+Los segmentos son grupos de piedras verticales u horizontales explícitamente delimitados. Como son unidireccionales (solo verticales o solo horizontales), una de sus coordenadas permanece constante y no necesita repetirse; solo se especifica el rango de la otra variable.
+
+\begin{itemize}
+ \item Para segmentos horizontales, la sintaxis es |L:LN| o |L:L N|.
+ \item Para segmentos verticales, la sintaxis es |LN:N| o |L N:N|.
+\end{itemize}
+
+\begin{codeexample}[width=6cm]
+ \pgfgoset{goban = {5, partial = {from = B2 to D4}}}
+
+ \begin{goban}
+ \stones[b]{B2,B3,B4}
+ \stones[w]{C2,D2}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{B2:4}
+ \stones[w]{C:D2}
+ \end{goban}
+
+ \begin{goban}
+ \stones[b]{B 2:4} % Los espacios funcionan entre elementos distintos.
+ \stones[w]{C:D 2}
+ \end{goban}
+\end{codeexample}
+
+Aquí, |B2:4| representa un segmento horizontal de B2 a B4, mientras que |C:D2| indica un segmento horizontal de C2 a D2.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A:E5}
+ \stones[fill = {color = blue}]{H9:2}
+ \stones[fill = {color = orange}]{E:A2}
+ \stones[fill = {color = magenta}]{A:D7, A:C9} % Pueden combinarse.
+ \end{goban}
+\end{codeexample}
+
+\sssseccion{Rectángulo: una consecuencia artificial}
+
+La sintaxis de segmentos permite crear rangos entre coordenadas para insertar piedras. Me pareció útil extenderla para incluir dos rangos y así ofrecer una primera aproximación a los rectángulos (aunque no es mi método favorito, aquí está). En este caso, la sintaxis es |L:L N:N| o |L:LN:N|.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A:E 7:8} % El espacio no es obligatorio.
+ \stones[fill = {color = blue}]{I:G 9:2}
+ \stones[fill = {color = orange}]{A:B 2:4, F:D 1:3}
+ \end{goban}
+\end{codeexample}
+
+Por ejemplo, |A:E 7:8| crea un rectángulo que abarca las columnas de A a E en las filas 7 y 8, mientras que |I:G 9:2| desciende de I9 a G2. Aunque funcional, esta sintaxis puede resultar menos intuitiva, lo que lleva a los operadores más específicos que veremos más adelante.
+
+Hasta aquí hemos visto comandos para intersecciones que no pueden combinarse con otros en una misma instrucción y que, por lo tanto, \textbf{deben} separarse por comas. Ahora exploraremos comandos que sí permiten encadenarse entre sí, ofreciendo mayor flexibilidad para patrones complejos.
+
+\sssseccion{Horizontal--Vertical y Vertical--Horizontal}
+
+Dadas dos intersecciones no alineadas vertical ni horizontalmente, estos comandos generan las intersecciones que conectan la primera con la segunda mediante un recorrido «horizontal--vertical» o «vertical--horizontal». Esto puede recordar al operador \verb+-|+ de TikZ, de donde tomé prestada la idea. La sintaxis es \verb+LN -| LN+ (para el primer caso) o \verb+LN |- LN+ (para el segundo), con o sin espacios. Estos comandos, junto con el siguiente, pueden encadenarse para formar escaleras o recorridos propios de la m\'etrica de Manhattan.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A1 -| D3}
+ \stones[fill = {color = blue}]{D4 -| A2}
+ \stones[fill = {color = orange}] {A9 -| C7 -| G5} % Encadenados.
+ \stones[fill = {color = magenta}] {F1 |- I3 -| E4} % Intente adivinar.
+ \end{goban}
+\end{codeexample}
+
+En este ejemplo, \verb+A1 -| D3+ va horizontalmente de A1 a D1 y luego verticalmente a D3.
+
+\sssseccion{Línea horizontal o vertical}
+
+Dadas dos intersecciones alineadas vertical u horizontalmente, este operador las conecta con una línea recta de piedras. Su sintaxis es |LN -- LN|. Puede encadenarse con los dos comandos anteriores para formar patrones más elaborados. Si las intersecciones no están alineadas, el operador no dibuja nada (quién sabe, quizás en el futuro genere escaleras ;)).
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A1 -- A5}
+ \stones[fill = {color = blue}] {A1 -- D1}
+ \stones[fill = {color = magenta}] {A6 -- B9} % No dibuja porque no están alineados.
+ \stones[fill = {color = orange}] {I9 -| F6 -- I6} % Encadenado.
+ \end{goban}
+\end{codeexample}
+
+Aquí, |A1 -- A5| dibuja una línea vertical, mientras que \verb+I9 -| F6 -- I6+ combina un recorrido «horizontal--vertical» con una línea horizontal adicional.
+
+¡Ojo! \verb+A1 -- D1 -| F3+ es un encadenamiento permitido, mientras que \verb+A:D1 -| F3+ no lo es, porque |:| no es un operador de cadena. Esto podría cambiar en futuras versiones del paquete.
+
+\sssseccion{Rectángulos rellenos y vacíos}
+
+La sintaxis previa para rectángulos |L:L N:N| es poco intuitiva y más bien una herencia de los segmentos acotados. Por ello, existen dos operadores más directos para crear rectángulos: |R| y |r|. La diferencia radica en que |R| genera un rectángulo relleno, mientras que |r| solo dibuja su contorno. Dados dos vértices diametralmente opuestos del rectángulo, la sintaxis es |LN R LN| o |LN r LN|. Aunque los espacios no son obligatorios por ahora, recomiendo usarlos para mayor legibilidad.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = red}]{A1 R D3}
+ \stones[fill = {color = blue}] {A5 r D8}
+ \stones[fill = {color = orange}] {I8 r G4, H6} % ¡Está vivo!
+ \end{goban}
+\end{codeexample}
+
+Por ejemplo, |A1 R D3| rellena un rectángulo de A1 a D3, mientras que |A5 r D8| dibuja solo el borde de un rectángulo mayor.
+
+Los rectángulos también son operadores de cadena y pueden usarse como tales para crear patrones más complejos.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = orange}] {I8 r G6 r I4} % Ud. adivine.
+ \marks[sequence]{I8,G6,I4}
+ \stones[fill = {color = blue!20}] {A1 R E3 r A6 |- E9 -- E8} % ¡Wow!
+ \marks[sequence]{A1,E3,A6,E9,E8}
+ \end{goban}
+\end{codeexample}
+
+En este caso, |I8 r G6 r I4| encadena dos rectángulos de contorno, mientras que \verb+A1 R E3 r A6 |- E9 -- E8+ combina un rectángulo relleno, un contorno, un recorrido «vertical--horizontal» y una línea, mostrando la potencia del encadenamiento.
+
+\subsubsection{Grupos aditivos y sustractivos}
+
+Supongamos que queremos dibujar el siguiente diagrama:
+
+\begin{figure}[H]
+ \centering
+ \begin{goban}
+ \stones[b]{A1 R E6; C6 |- E3, A1:2;}
+ \end{goban}
+\end{figure}
+
+Esto puede lograrse con los operadores ya vistos, dividiendo el patrón en varias partes:
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[fill = {color = orange}] {A6 R B3, B2 R E1, D4 R E6}
+ \end{goban}
+\end{codeexample}
+
+Pero también podemos imaginar que partimos de un rectángulo completo al que le hemos quitado las piedras marcadas, ofreciendo una perspectiva más conceptual:
+
+\begin{figure}[H]
+ \centering
+ \begin{goban}
+ \stones[b]{A1 R E6}
+ \marks[cross, line = {color = white}]{C6 |- E3, A1:2}
+ \end{goban}
+\end{figure}
+
+De esto tratan los grupos aditivos y sustractivos. Un grupo aditivo añade intersecciones a la lista, mientras que uno sustractivo las elimina. Por defecto, los comandos siempre comienzan procesando grupos aditivos, lo que explica que dibujen piedras directamente. En \pgfgoname, podemos alternar entre ambos tipos usando |;|.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6} % Grupo aditivo.
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A 1:2} % Grupo aditivo; sustractivo.
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A 1:2, C6 |- E3} % Grupo aditivo; sustractivo.
+ \end{goban}
+\end{codeexample}
+
+En esta secuencia, primero se dibuja un rectángulo completo (|A1 R E6|), luego se elimina el segmento horizontal |A1:2|, y finalmente se quita el recorrido \verb+C6 |- E3+. Esto resulta en el mismo diagrama que el ejemplo inicial, pero con un enfoque más compacto.
+
+La ventaja de este sistema es que permite realizar ajustes cuando sea necesario. A veces, un patrón aditivo es ideal salvo por una o dos piedras; en esos casos, podemos eliminarlas con un grupo sustractivo sin rehacer todo el diseño.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}]
+ \stones[b]{A1 R E6; B:D 5, C2}
+ \end{goban}
+\end{codeexample}
+
+Aquí, |B:D 5| elimina un segmento horizontal en la fila 5, y |C2| quita una piedra específica, ajustando el rectángulo inicial.
+
+Recordemos que los grupos aditivos y sustractivos pueden encadenarse, separándolos con |;|, lo que permite alternar entre añadir y quitar elementos en una sola línea tantas veces como se desee.
+
+\begin{codeexample}[width=6cm]
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6} % AD
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A1 R C4, E6} % AD, SU
+ \end{goban}
+
+ \begin{goban}[label = {at = all}, partial = {from = A1 to E6}]
+ \stones[b]{A1 R E6; A1 R C4, E6; A 1:2} % AD, SU, AD
+ \end{goban}
+\end{codeexample}
+
+En este último ejemplo, se crea un rectángulo, se eliminan dos regiones (|A1 R C4| y |E6|), y luego se añade un segmento (|A 1:2|).
+
+\subsection{Perfiles}
+
+Los perfiles son equivalentes a los estilos de \tikzname. En resumen, permiten guardar una configuración de tablero y piedras con un nombre y llamarla cuando se desee.
+
+\begin{command}{\pgfgodefinegoban\opt{\oarg{options}}\marg{goban name}\marg{goban options}}
+ Permite asignar un nombre a un grupo de opciones de goban. Tiene dos posibles opciones no obligatorias.
+
+ \begin{key}{/pgfgo/profiles/goban/from = \meta{goban name}}
+ Permite definir un goban a partir de una copia de otro.
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[from = gobanA]{gobanB}{...}
+ \end{codeexample}
+
+ Es posible copiarse a sí mismo para añadir opciones, aunque no es la mejor alternativa.
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[from = gobanB]{gobanB}{...}
+ \end{codeexample}
+ \end{key}
+
+ \begin{key}{/pgfgo/profiles/goban/append}
+ Permite ampliar las opciones de un goban.
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[append]{gobanB}{...}
+ \end{codeexample}
+ Es equivalente a:
+ \begin{codeexample}[code only]
+ \pgfgodefinegoban[from = gobanB]{gobanB}{...}
+ \end{codeexample}
+ \end{key}
+\end{command}
+
+\begin{command}{\pgfgodefineplayer\opt{\oarg{options}}\marg{player name}\marg{player options}}
+ Permite asignar un nombre a un grupo de opciones de piedras. Sus opciones y \emph{keys} son equivalentes a las de |\pgfgodefinegoban|.
+\end{command}
+
+\begin{command}{\pgfgousegoban\marg{goban name}}
+ Aplica localmente las opciones del goban definido mediante |goban name|.
+\end{command}
+
+\begin{command}{\pgfgouseneutral\marg{player name}}
+ Aplica localmente las opciones de piedras definidas mediante |player name| al jugador neutral.
+\end{command}
+
+\begin{command}{\pgfgouseblack\marg{player name}}
+ Aplica localmente las opciones de piedras definidas mediante |player name| al jugador negro.
+\end{command}
+
+\begin{command}{\pgfgousewhite\marg{player name}}
+ Aplica localmente las opciones de piedras definidas mediante |player name| al jugador blanco.
+\end{command}
+
+\begin{command}{\pgfgouseplayers\marg{neutral player name}\marg{black player name}\marg{white player name}}
+ Aplica localmente las opciones de piedras definidas mediante |neutral player name|, |black player name| y |white player name| a los jugadores correspondientes.
+\end{command}
+
+\begin{command}{\pgfgouseprofile\marg{name}}
+ Esta macro es equivalente a:
+ \begin{codeexample}[code only]
+ \pgfgousegoban{name}
+ \pgfgouseplayers{name-neutral}{name-black}{name-white}
+ \end{codeexample}
+
+ Nótese que es necesario que existan piedras llamadas |name-neutral|, |name-black| y |name-white|. Por ejemplo, cuando previamente ejecutamos |\pgfgouseprofile{pgfgo}| funcionó porque existe un goban llamado |pgfgo|, y piedras denominadas |pgfgo-neutral|, |pgfgo-black| y |pgfgo-white|.
+\end{command}
+
+\begin{codeexample}[width=3cm]
+ \pgfgodefinegoban{example}{background = {fill = {color = blue!05}}}
+ \pgfgodefineplayer[from = default-neutral]{example-neutral}
+ {stone = {
+ fill = {color = gray},
+ line = {color = magenta!20!black}}
+ }
+
+ \pgfgodefineplayer[from = example-neutral]{example-white}
+ {stone = {fill = {color = yellow}}}
+
+ \pgfgodefineplayer[from = example-neutral]{example-black}
+ {stone = {fill = {color = blue}}}
+
+ \pgfgouseprofile{example}
+
+ \begin{goban}[partial = {from = A1 to C3}]
+ \moves{A1:3}
+ \stones[b]{B1,B3,C2}
+ \stones[w]{C1,C3}
+ \stone{B2}
+ \end{goban}
+\end{codeexample}
+
+\subsection{Cambiar opciones sobre la marcha}
+\label{subsec:perfiles}
+
+Cuando se desea cambiar una opción de tablero con |\pgfgoset|, puede hacerse directamente con |\pgfgoset{goban = {...}}|. Para los jugadores, la situación es algo distinta. Para ello, se cuenta con las siguientes \emph{keys}:
+
+\begin{key}{/pgfgo/players = \meta{players options}}
+ Permite ajustar las opciones de los jugadores. Por defecto, son tres: |neutral|, |black| y |white|. No hay que confundir jugadores con perfiles de piedras. Una vez cargado el perfil de una piedra, se puede realizar un cambio con estas \emph{keys}.
+\end{key}
+
+Las opciones de los jugadores pueden configurarse todas juntas con la \emph{key} |all|, o por separado. Los cambios realizados aquí no afectarán la definición de los perfiles. Es decir, si cargamos el perfil |pgfgo| y modificamos al jugador negro, esto no afectar\'a a la definici\'on de |pgfgo-black|, sino que a las opciones propias del jugador primero.
+
+\begin{key}{/pgfgo/players/all = \meta{all player options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/neutral = \meta{neutral player options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/black = \meta{first player options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white = \meta{second player options}}
+\end{key}
+
+Cada jugador tiene acceso al mismo árbol de \emph{keys}. Por esta razón, las siguientes, aunque mencionen |white|, aplican a todos los jugadores. Cada una de ellas se explica en la sección correspondiente al tipo de objeto, pero se ilustran brevemente ac\'a.
+
+\begin{key}{/pgfgo/players/white/stone = \meta{stone options}}
+ Controla las opciones de las piedras del segundo jugador.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line = \meta{stone line options}}
+ Controla las opciones de los bordes de las piedras del segundo jugador.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/true}
+ Determina si aparece o no la frontera de una piedra.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = true}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/false}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/width = \meta{dimension}}
+ Determina el grosor de la frontera de una piedra.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = {true, width = 1pt}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/color = \meta{color}}
+ Determina el color de la frontera de una piedra.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = {true, width = 1pt, color = red}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/line/opacity = \meta{float}}
+ Determina la opacidad de la frontera de una piedra.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {line = {true, width = 2pt, opacity = 0.25}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill = \meta{stone fill options}}
+ Controla las opciones referidas al relleno de la piedra.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/true}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/false}
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {fill = false}}}}
+ % Lo que se ve en la figura es lo que queda de la piedra: sombras y brillos.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/color = \meta{color}}
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {fill = {color = magenta!20}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/fill/opacity = \meta{float}}
+ Establece la opacidad del relleno de la piedra.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {fill = {opacity = 0.5}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/radius = \meta{dimension}}
+ Establece el radio de la piedra.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {radius = 0.3cm}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/scale = \meta{float}}
+ Controla la escala de la piedra, lo que afecta también a las marcas.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {scale = 1.25}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w, mark = circle]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow = \meta{stone drop shadow options}}
+ Controla las opciones propias de las sombras en las piedras.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/true}
+ Habilita la sombra en la piedra.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/false}
+ Desactiva la sombra en la piedra.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = false}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/angle = \meta{float}}
+ Establece el ángulo de la sombra.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = {angle = 225}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/offset = \meta{dimension}}
+ Establece el desplazamiento de la sombra respecto al centro.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = {offset = 0.125cm}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shadow/opacity = \meta{float}}
+ Controla la opacidad de la sombra.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {stone = {drop shadow = {offset = 0.125cm, opacity = 0.1}}}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine = \meta{stone drop shine options}}
+ Controla los brillos sobre las piedras.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/true}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/false}
+ Oculta los brillos sobre las piedras.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {black = {stone = {drop shine = false}}}}
+ % Sobre black que se nota más.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/angle = \meta{float}}
+ Controla el ángulo del brillo.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {black = {stone = {drop shine = {angle = 0}}}}}
+ % Sobre black que se nota más.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/drop shine/opacity = \meta{float}}
+ Controla la opacidad del brillo.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {black = {stone = {drop shine = {opacity = 0.5}}}}}
+ % Sobre black que se nota más.
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/stone/prisoner = \meta{stone options}}
+ Controla la apariencia de los prisioneros.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/font size = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/color = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/arabic = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/alph = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/Alph = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/roman = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/move/label/format/Roman = \meta{stone options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark = \meta{stone options}}
+ Controla las opciones de marcas asociadas al jugador correspondiente.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/line = \meta{stone mark line options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/line/color = \meta{color}}
+ Controla el color de línea de las marcas.
+
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {mark = {line = {color = red!80!black}}}}}
+
+ \begin{goban}
+ \stones[b] {B1}
+ \stone [b, mark] {C2}
+ \stone [w, mark = circle] {A3}
+ \mark [w, circle] {A2}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/line/width = \meta{dimension}}
+ Controla el grosor de línea de las marcas.
+ \begin{codeexample}[width=4cm]
+ \pgfgouseprofile{pgfgosmooth}
+ \pgfgoset{goban = {partial = {from = A1 to C3}}}
+
+ \begin{goban}
+ \stones[b]{B1,C2}
+ \stone[w]{A3}
+ \end{goban}
+
+ \pgfgoset{players = {white = {mark = {line = {color = red!80!black}}}}}
+
+ \begin{goban}
+ \stones[b] {B1}
+ \stone [b, mark] {C2}
+ \stone [w, mark = circle] {A3}
+ \mark [w, circle] {A2}
+ \end{goban}
+ \end{codeexample}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill = \meta{stone mark fill options}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill/true}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill/false}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/fill/color = \meta{color}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/label = \meta{stone mark label options}}
+ Controla las opciones de etiqueta para las marcas que las tengan.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/label/color = \meta{color}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence = \meta{stone mark sequence options}}
+ Controla las opciones de secuencias.
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format = \meta{stone mark sequence format choice}}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/arabic}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/alph}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/Alph}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/roman}
+\end{key}
+
+\begin{key}{/pgfgo/players/white/mark/sequence/format/Roman}
+\end{key}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-loelemental.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lopendiente.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lopendiente.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lopendiente.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,8 @@
+\section{Lo pendiente}
+
+
+Actualmente hay una lista de pendientes:
+\begin{itemize}
+ \item Corregir bugs. Sobre todo en el sistema de recuerdo.
+ \item Optimizaci\'on.
+\end{itemize}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-lopendiente.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-motivacion.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-motivacion.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-motivacion.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,13 @@
+\section{Motivación}
+
+El siguiente paquete ofrece una colección de macros diseñadas para representar tableros y posiciones de Go, implementadas íntegramente en \pgfname. Este proyecto, aunque aún en desarrollo, incorpora funcionalidades innovadoras que buscan simplificar y agilizar la creación de diagramas relacionados con el juego de Go:
+\begin{itemize}
+ \item Gestión de perfiles para tableros y jugadores.
+ \item Carga de múltiples coordenadas simultáneamente mediante una sintaxis que algunos podrían encontrar familiar.
+\end{itemize}
+
+El desarrollo de \pgfgoname\ surge de la frustración por no encontrar paquetes que satisficieran mis necesidades. Los paquetes que exploré permiten representar tableros en blanco y negro, adecuados para impresión, pero poco prácticos al combinarlos con tecnolog\'ias como |beamer| o en documentos donde se desea una presentación a color.
+
+Inicialmente, \pgfgoname\ se limitaría a estas tareas; sin embargo, ahora lo concibo más como una interfaz para gestionar estilos y estados, evitando el uso excesivo del formato directo. Esto se reflejará principalmente en la estructura del árbol de \emph{keys}.
+
+En cuanto al nombre, aunque las macros están implementadas en \pgfname\ y L3, el tablero se construye sobre |\tikzpicture| para que los usuarios familiarizados con este entorno puedan aprovechar sus macros.
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-motivacion.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-preamble.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-preamble.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-preamble.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,387 @@
+% Copyright 2019 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+
+% pgf version is defined in \pgfversion in file
+% generic/pgf/utilities/pgfrcs.code.tex
+
+\def\xcolorversion{2.00}
+
+\usepackage[version=latest]{pgf}
+
+\usepackage{xkeyval,calc,listings,tikz,fp}
+
+\usepackage{imakeidx}
+\makeindex
+\usepackage{hyperref}
+\hypersetup{%
+ colorlinks=false, % use true to enable colors below:
+ linkcolor=blue,%red,
+ filecolor=blue,%magenta,
+ urlcolor=blue,%cyan,
+ citecolor=blue,
+ pdfborder=0 0 0,
+}
+
+% We need lots of libraries...
+\usetikzlibrary{
+ 3d,
+ arrows,
+ arrows.spaced,
+ arrows.meta,
+ bending,
+ babel,
+ calc,
+ fit,
+ patterns,
+ patterns.meta,
+ plotmarks,
+ shapes.geometric,
+ shapes.misc,
+ shapes.symbols,
+ shapes.arrows,
+ shapes.callouts,
+ shapes.multipart,
+ shapes.gates.logic.US,
+ shapes.gates.logic.IEC,
+ circuits.logic.US,
+ circuits.logic.IEC,
+ circuits.logic.CDH,
+ circuits.ee.IEC,
+ datavisualization,
+ datavisualization.polar,
+ datavisualization.formats.functions,
+ er,
+ automata,
+ backgrounds,
+ chains,
+ topaths,
+ trees,
+ petri,
+ mindmap,
+ matrix,
+ calendar,
+ folding,
+ fadings,
+ shadings,
+ spy,
+ through,
+ turtle,
+ positioning,
+ scopes,
+ decorations.fractals,
+ decorations.shapes,
+ decorations.text,
+ decorations.pathmorphing,
+ decorations.pathreplacing,
+ decorations.footprints,
+ decorations.markings,
+ shadows,
+ lindenmayersystems,
+ intersections,
+ fixedpointarithmetic,
+ fpu,
+ svg.path,
+ external,
+ graphs,
+ graphs.standard,
+ quotes,
+ math,
+ angles,
+ views,
+ animations,
+ rdf,
+ perspective,
+}
+
+\usepackage{ifluatex}
+\newif\ifgdccodebasic
+\newif\ifgdccodeogdf
+
+\ifluatex
+
+ \usetikzlibrary{graphdrawing}
+ \usegdlibrary{trees,circular,layered,examples,force,phylogenetics,routing}
+
+ % Test whether C code is available:
+ \directlua{
+ if pcall(require,'pgf_gd_examples_c_SimpleDemoC') then
+ tex.print('\string\\gdccodebasictrue')
+ end
+ }
+
+ \ifgdccodebasic
+ \usegdlibrary{pgf_gd_examples_c_SimpleDemoC,pgf_gd_examples_c_SimpleDemoCPlusPlus}
+
+ % Test whether OGDF code is available:
+ \directlua{
+ if pcall(require,'pgf_gd_ogdf_c_SimpleDemoOGDF') then
+ tex.print('\string\\gdccodeogdftrue')
+ end
+ }
+
+ \ifgdccodeogdf
+ \usegdlibrary{pgf_gd_ogdf_c_SimpleDemoOGDF,ogdf}
+ \fi
+
+ \fi
+
+\fi
+
+\def\LuaTeX{Lua\TeX}%
+
+
+\newif\ifpgfmanualexternalize
+\pgfmanualexternalizefalse
+\ifpgfmanualexternalize
+ \tikzexternalize[
+ mode=list only,export=true,% simply skips EVERY picture -> good for debugging the text.
+ ]{pgfmanual}
+
+ \tikzifexternalizing{%
+ \pgfkeys{/pdflinks/codeexample links=false}%
+ }{}%
+\fi
+
+
+\usepackage[a4paper,left=2.25cm,right=2.25cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
+\usepackage{amsmath,amssymb}
+\usepackage{xxcolor}
+\usepackage{pifont}
+
+\ifluatex
+% \usepackage[no-math]{fontspec}
+% \usepackage{luatextra}
+
+ % TT: I have commented luatextra since it loads fontspec, which
+ % currently breaks "$\mathrm{\Omega}$" (nothing is
+ % shown). Also, fontspec loads so much stuff, I'm not really sure
+ % any of it is needed...
+
+ % \filedescription is defined in expl3, required by fontspec,
+ % required by luatextra. Needs to be \relaxed since
+ % pgfmanual-en-macros.tex defines an environment named filedescription
+ \let\filedescription\relax
+ \usepackage[utf8]{luainputenc}
+ % dvisvgm does not support OpenType fonts so we have to bite the bullet and
+ % use T1 where quotes are weird. In LuaTeX \outputmode=0 means DVI.
+ \ifnum\outputmode=0
+ \usepackage[T1]{fontenc}
+ \fi
+\else
+ \usepackage[utf8]{inputenc}
+ \usepackage[T1]{fontenc}
+\fi
+
+% Promote `Missing character` reports to full errors
+% require texlive 2021 or above
+\tracinglostchars=3
+
+\graphicspath{{../../images/}}
+\input{pgfmanual-en-macros}
+
+\usepackage{todonotes}
+\newcommand\todosp[2][]{% % Stefan Pinnow
+ \todo[
+ disable,
+ color=blue!40,
+ #1]{#2}
+}
+
+\makeatletter
+\renewcommand*\l at section[2]{%
+ \ifnum \c at tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{2.5em}%
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \bfseries
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb at xt@\@pnumwidth{\hss #2}\par
+ \endgroup
+ \fi}
+\renewcommand*\l at subsection{\@dottedtocline{2}{2.5em}{3.3em}}
+\renewcommand*\l at subsubsection{\@dottedtocline{3}{5.8em}{4.2em}}
+\def\@pnumwidth{2.2em}
+\makeatother
+
+%\includeonly{pgfmanual-en-library-profiler}
+
+% Global styles:
+\tikzset{
+ every plot/.style={prefix=plots/pgf-},
+ shape example/.style={
+ color=black!30,
+ draw,
+ fill=yellow!30,
+ line width=.5cm,
+ inner xsep=2.5cm,
+ inner ysep=0.5cm}
+}
+
+\index{Options for graphics|see{Graphic options and styles}}
+\index{Styles for graphics|see{Graphic options and styles}}
+\index{Options for packages|see{Package options}}
+\index{Handlers for keys|see{Key handlers}}
+\index{File|see{Packages and files}}
+\index{Layout|see{Page layout}}
+\index{Node|see{Predefined node}}
+\index{Data formats|see{Formats}}
+
+
+% Animations:
+
+\tikzset{make snapshot if necessary}
+
+% Detect changed labels
+% by David Carlisle https://tex.stackexchange.com/a/169245
+\makeatletter
+\def\@testdef#1#2#3{%
+ \def\reserved at a{#3}%
+ \expandafter\ifx\csname #1@#2\endcsname\reserved at a\else
+ \typeout{^^JLabel `#2' changed:^^J\meaning\reserved at a^^J\expandafter\meaning\csname #1@#2\endcsname^^J}%
+ \@tempswatrue
+ \fi}
+\makeatother
+
+%% -----------------------------------------------------------------------------
+%\includeonly{
+%% pgfmanual-en-introduction,
+%% pgfmanual-en-tutorial,
+%% pgfmanual-en-tutorial-nodes,
+%% pgfmanual-en-tutorial-Euclid,
+%% pgfmanual-en-tutorial-chains,
+%% pgfmanual-en-tutorial-map,
+%% pgfmanual-en-guidelines,
+%% pgfmanual-en-installation,
+%% pgfmanual-en-license,
+%% pgfmanual-en-drivers,
+%% pgfmanual-en-tikz-design,
+%% pgfmanual-en-tikz-scopes,
+%% pgfmanual-en-tikz-coordinates,
+%% pgfmanual-en-tikz-paths,
+%% pgfmanual-en-tikz-actions,
+%% pgfmanual-en-tikz-arrows,
+%% pgfmanual-en-tikz-shapes,
+%% pgfmanual-en-tikz-pics,
+%% pgfmanual-en-tikz-graphs,
+%% pgfmanual-en-tikz-matrices,
+%% pgfmanual-en-tikz-trees,
+%% pgfmanual-en-tikz-plots,
+%% pgfmanual-en-tikz-transparency,
+%% pgfmanual-en-tikz-decorations,
+%% pgfmanual-en-tikz-transformations,
+%% pgfmanual-en-tikz-animations,
+%% pgfmanual-en-gd-overview,
+%% pgfmanual-en-gd-usage-tikz,
+%% pgfmanual-en-gd-usage-pgf,
+%% pgfmanual-en-gd-trees,
+%% pgfmanual-en-gd-layered,
+%% pgfmanual-en-gd-force,
+%% pgfmanual-en-gd-circular,
+%% pgfmanual-en-gd-phylogenetics,
+%% pgfmanual-en-gd-edge-routing,
+%%% pgfmanual-en-gd-ogdf,
+%% pgfmanual-en-gd-algorithm-layer,
+%% pgfmanual-en-gd-algorithms-in-c,
+%% pgfmanual-en-gd-display-layer,
+%% pgfmanual-en-gd-binding-layer,
+%% pgfmanual-en-library-angles,
+%% pgfmanual-en-library-arrows,
+%% pgfmanual-en-library-automata,
+%% pgfmanual-en-library-babel,
+%% pgfmanual-en-library-backgrounds,
+%% pgfmanual-en-library-calc,
+%% pgfmanual-en-library-calendar,
+%% pgfmanual-en-library-chains,
+%% pgfmanual-en-library-circuits,
+%% pgfmanual-en-library-decorations,
+%% pgfmanual-en-library-er,
+%% pgfmanual-en-library-external,
+%% pgfmanual-en-library-fadings,
+%% pgfmanual-en-library-fit,
+%% pgfmanual-en-library-fixedpoint,
+%% pgfmanual-en-library-fpu,
+%% pgfmanual-en-library-lsystems,
+%% pgfmanual-en-library-math,
+%% pgfmanual-en-library-matrices,
+%% pgfmanual-en-library-mindmaps,
+%% pgfmanual-en-library-folding,
+%% pgfmanual-en-library-patterns,
+%% pgfmanual-en-library-petri,
+%% pgfmanual-en-library-plot-handlers,
+%% pgfmanual-en-library-plot-marks,
+%% pgfmanual-en-library-profiler,
+%% pgfmanual-en-library-rdf,
+%% pgfmanual-en-library-shadings,
+%% pgfmanual-en-library-shadows,
+%% pgfmanual-en-library-shapes,
+%% pgfmanual-en-library-spy,
+%% pgfmanual-en-library-svg-path,
+%% pgfmanual-en-library-edges,
+%% pgfmanual-en-library-through,
+%% pgfmanual-en-library-trees,
+%% pgfmanual-en-library-turtle,
+%% pgfmanual-en-library-views,
+%% pgfmanual-en-dv-introduction,
+%% pgfmanual-en-dv-main,
+%% pgfmanual-en-dv-formats,
+%% pgfmanual-en-dv-axes,
+%% pgfmanual-en-dv-visualizers,
+%% pgfmanual-en-dv-stylesheets,
+%% pgfmanual-en-dv-polar,
+%% pgfmanual-en-dv-backend,
+%% pgfmanual-en-pgfkeys,
+%% pgfmanual-en-pgffor,
+%% pgfmanual-en-pgfcalendar,
+%% pgfmanual-en-pages,
+%% pgfmanual-en-xxcolor,
+%% pgfmanual-en-module-parser,
+%% pgfmanual-en-math-design,
+%% pgfmanual-en-math-parsing,
+%% pgfmanual-en-math-commands,
+%% pgfmanual-en-math-algorithms,
+%% pgfmanual-en-math-numberprinting,
+%% pgfmanual-en-oo,
+%% pgfmanual-en-base-design,
+%% pgfmanual-en-base-scopes,
+%% pgfmanual-en-base-points,
+%% pgfmanual-en-base-paths,
+%% pgfmanual-en-base-decorations,
+%% pgfmanual-en-base-actions,
+%% pgfmanual-en-base-arrows,
+%% pgfmanual-en-base-nodes,
+%% pgfmanual-en-base-matrices,
+%% pgfmanual-en-base-transformations,
+%% pgfmanual-en-base-patterns,
+%% pgfmanual-en-base-images,
+%% pgfmanual-en-base-external,
+%% pgfmanual-en-base-plots,
+%% pgfmanual-en-base-layers,
+%% pgfmanual-en-base-shadings,
+%% pgfmanual-en-base-transparency,
+%% pgfmanual-en-base-animations,
+%% pgfmanual-en-base-internalregisters,
+%% pgfmanual-en-base-quick,
+%% pgfmanual-en-pgfsys-overview,
+%% pgfmanual-en-pgfsys-commands,
+%% pgfmanual-en-pgfsys-paths,
+%% pgfmanual-en-pgfsys-protocol,
+%% pgfmanual-en-pgfsys-animations,
+%}
+%% -----------------------------------------------------------------------------
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "pgfmanual"
+%%% End:
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo-preamble.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.cfg
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.cfg (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.cfg 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,21 @@
+% Copyright 2019 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+
+\usepackage[hyphens]{url}
+\makeatletter
+\g at addto@macro\selectfont{%
+ \long\edef\longf at family{\f at family}%
+ \ifx\longf at family\ttdefault
+ \ignoreligaturesinfont\font\relax
+ \fi
+}
+\makeatother
+
+% Just make sure to compile this using lualatex.
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.cfg
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,85 @@
+% Copyright 2025 by Jonatan Perren
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Free Documentation License.
+
+
+\documentclass[a4paper,doc2]{ltxdoc}
+
+
+
+\input{pgfgo.cfg}
+\input{pgfgo-preamble.tex}
+
+\usepackage{../../latex/pgf-go}
+\def\pgfgoname{\textsc{pgfgo}}
+
+\usepackage[spanish]{babel}
+
+\usepackage{float}
+\usetikzlibrary{positioning, fit}
+\usepackage{caption}
+
+
+
+\definecolor{pgfgo}{RGB}{220,179,92}
+\colorlet{tablero2}{red!10!blue!10}
+\colorlet{tablero3}{blue!10!green!10}
+\definecolor{tablero4}{HTML}{9B8465}
+
+
+\ExplSyntaxOn
+
+
+
+\ExplSyntaxOff
+
+\begin{document}
+ \title{\Huge\bfseries pgf-go\\[1em]
+ \normalsize
+
+ \begin{center}
+ \pgfgouseprofile{pgfgosmooth}
+ \begin{goban}[partial = {from = B2 to E3}]
+ \stones[black]{C2,D2,E3}
+ \stones[white] {B2,C3,D3}
+ \mark[w, custom = {36}]{B2}
+ \mark[custom = {a}] {E2}
+
+ \marks[circle, line = {color = red!80!black}] {C3,D3}
+
+ \end{goban}
+ \end{center}
+
+ \large Manual for version 0.2025.03.07}
+ \author{Jonat\'an Perren Hug\\
+ \texttt{jonatan.perren at gmail.com}
+ }
+
+ \maketitle
+
+
+
+ \label{table-of-contents}
+ \tableofcontents
+
+
+ \clearpage
+
+ \input{pgfgo-motivacion}
+ \input{pgfgo-ejemplosiniciales}
+ \input{pgfgo-loelemental}
+ \input{pgfgo-eltablero}
+ \input{pgfgo-laspiedras}
+ \input{pgfgo-lasmarcas}
+ \input{pgfgo-elterritorio}
+
+% \input{pgfgo-lopendiente}
+ \input{pgfgo-ejemplos}
+%%
+ \input{pgfgo-catalogo}
+%
+ \input{pgfgo-definiciones}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/es/pgfgo.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,17 @@
+\documentclass[border=0.5cm]{standalone}
+\usepackage{../../latex/pgf-go}
+
+
+\pgfgoset{goban = {background = {fill = {color = pgfgo}}}}
+
+
+\begin{document}
+ \pgfgouseprofile{pgfgosmooth}
+ \begin{goban}[9, partial = {from = A2 to H9}]
+ \stones{A7,B6,C8,C7}
+ \stones[mark=triangle]{D6,D5,D4}
+ \stones[w]{C3,C4,C5,C6,D7,E7,E6}
+ \stone[w, mark = {custom = 1}]{E3}
+ \marks[circle, line = {color = red!80!black}] {D3,E4, E5}
+ \end{goban}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-0.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,31 @@
+\documentclass[border=0.5cm]{standalone}
+\usepackage{../../latex/pgf-go}
+
+
+\pgfgoset{goban = {background = {fill = {color = pgfgo}}}}
+
+\begin{document}
+ \vbox{
+ \hbox{
+ \begin{goban}[partial = {from = A9 to E5}]
+ \stone[b]{C7}
+ \marks[sequence]{C8, D7, C6, B7};
+ \end{goban}\thinspace
+ \begin{goban}[partial = {from = E9 to I5}]
+ \stone[b]{G7}
+ \stone[w]{F7}
+ \marks[sequence]{G8, H7, G6};
+ \end{goban}}
+ \hbox{
+ \begin{goban}[partial = {from = A1 to E5}]
+ \stone[b]{C3}
+ \stones[w]{B3,C2}
+ \marks[sequence]{C4, D3};
+ \end{goban}\thinspace
+ \begin{goban}[partial = {from = E1 to I5}]
+ \stone[b]{G3}
+ \stones[w]{F3,G2, H3}
+ \marks[sequence]{G4};
+ \end{goban}
+}}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-1.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,20 @@
+\documentclass[border=0.5cm]{standalone}
+\usepackage{../../latex/pgf-go}
+
+
+\pgfgoset{
+ use i = false,
+ goban = {background = {fill = {color = pgfgo}}}
+}
+
+\begin{document}
+ \begin{goban}[13, label = {at = {all}}]
+ \stones{A1, J1, K1, G7, N9, D12, D13}
+ \stones[w]{A2, H1, J2, K2, G6, F7, G8, M9, N10, C12, C13, E12, E13}
+ \marks[circle]{B1, L1, N8, H7, D11}
+ \end{goban}
+ \begin{goban}[13, label = {at = {north, east, south}}]
+ \stones[w]{A2, H1, J2, K2, G6, F7, G8, M9, N10, C12, C13, E12, E13}
+ \stones[w,mark = triangle]{B1, L1, N8, H7, D11}
+ \end{goban}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-2.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,18 @@
+\documentclass[border=0.5cm]{standalone}
+\usepackage{../../latex/pgf-go}
+
+
+\pgfgoset{
+ use i = false,
+ goban = {background = {fill = {color = pgfgo}}}
+}
+
+\begin{document}
+ \begin{goban}[9, label = {at = {south, west}}]
+ \stones[b]{A2,B1,B2,C2,D1,D2,G1,G2,F2,F3,F4,G4,G5,G6,E9,E8,E7,F7,G7,H7,J7,G8}
+ \stones[w]{A7,B7,C7,D7,D8,D9,D6,B5,C5,A3,B3,C3,D3,E1,E2,E3,E4,E5,E6,F5}
+ \marks[b, t-circle]{J1,J2,J3,J4,J5,J6,H1,H2,H3,H4,H5,H6,G3,H8,H9,J8,J9,G9,F9,F8,A1,C1}
+ \marks[w, t-square]{A9,A8,B9,B8,C9,C8,A6,B6,C6,A5,D5,A4,B4,C4,D4}
+ \marks[filled square, line = {color = gray}]{F1,F6}
+ \end{goban}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-3.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,15 @@
+\documentclass[border=0.5cm]{standalone}
+\usepackage{../../latex/pgf-go}
+
+
+\pgfgoset{goban = {background = {fill = {color = pgfgo}}}}
+
+
+\begin{document}
+ \pgfgouseprofile{wain}
+ \begin{goban}[9, label = {at = {south, west}}]
+ \stones[b]{C7}
+ \stones[w]{B6,B7,C8,D7}
+ \moves*[b]{C6,C5,D6,E6,D5,D4,E5,F5,E4,E3}
+ \end{goban}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-4.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.tex 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,16 @@
+\documentclass[border=0.5cm]{standalone}
+\usepackage{../../latex/pgf-go}
+
+
+\pgfgouseprofile{pgfgo}
+
+
+\begin{document}
+ \begin{goban}[9, partial = {from = A2 to H9}]
+ \stones{A7,B6,C8,C7}
+ \stones[mark=triangle]{D6,D5,D4}
+ \stones[w]{C3,C4,C5,C6,D7,E7,E6}
+ \stone[w, mark = {custom = 1}]{E3}
+ \marks[circle, line = {color = red!80!black}] {D3,E4, E5}
+ \end{goban}
+\end{document}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/examples/example-5.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-en.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-en.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-en.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-en.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-en.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-es.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-es.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-es.pdf 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-es.pdf 2025-03-08 20:58:18 UTC (rev 74536)
Property changes on: trunk/Master/texmf-dist/doc/latex/pgf-go/pgf-go-es.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-coordinate-parser.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-coordinate-parser.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-coordinate-parser.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,407 @@
+\ExplSyntaxOn
+
+
+% LN : A3 : Unica interseccion.
+% LLN : A-C 2 : Linea horizontal.
+% LNN : A 3-5 : Linea vertical.
+% LLNN A-C 3-8 : Rectangulo.
+% LN -| LN : Jota.
+% LN |- LN : Gamma.
+% LN -- LN : Linea. (ver descripcion)
+
+
+\cs_generate_variant:Nn \int_set:Nn {Nf}
+\cs_generate_variant:Nn \clist_put_right:Nn {Nf}
+\cs_generate_variant:Nn \seq_set_from_clist:Nn {NV}
+
+
+\cs_new:Nn\pgfgo_int_step_sorted_variable:nnNn{\int_step_variable:nnNn{\int_min:nn{#1}{#2}}{\int_max:nn{#1}{#2}}#3{#4}}
+
+\clist_new:N \l_pgfgo_coordinate_parser_inmediate_clist
+\seq_new:N \l_pgfgo_coordinate_parser_inmediate_seq
+
+
+%\l_pgfgo_use_i_bool
+\prop_new:N \l_pgfgo_coordinate_parser_biyection_use_i_prop
+\prop_new:N \l_pgfgo_coordinate_parser_biyection_no_use_i_prop
+\prop_new:N \l_pgfgo_coordinate_parser_biyection_current_prop
+
+
+
+\prop_set_from_keyval:Nn \l_pgfgo_coordinate_parser_biyection_use_i_prop {
+ A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, I=9, J=10, K=11, L=12, M=13, N=14, O=15, P=16, Q=17, R=18, S=19, T=20, U=21, V=22, W=23, X=24, Y=25, Z=26,
+ 1=A, 2=B, 3=C, 4=D, 5=E, 6=F, 7=G, 8=H, 9=I, 10=J, 11=K, 12=L, 13=M, 14=N, 15=O, 16=P, 17=Q, 18=R, 19=S, 20=T, 21=U, 22=V, 23=W, 24=X, 25=Y, 26=Z
+}
+
+\prop_set_from_keyval:Nn \l_pgfgo_coordinate_parser_biyection_no_use_i_prop {
+ A=1, B=2, C=3, D=4, E=5, F=6, G=7, H=8, J=9, K=10, L=11, M=12, N=13, O=14, P=15, Q=16, R=17, S=18, T=19, U=20, V=21, W=22, X=23, Y=24, Z=25,
+ 1=A, 2=B, 3=C, 4=D, 5=E, 6=F, 7=G, 8=H, 9=J, 10=K, 11=L, 12=M, 13=N, 14=O, 15=P, 16=Q, 17=R, 18=S, 19=T, 20=U, 21=V, 22=W, 23=X, 24=Y, 25=Z, I=9%<- porsi
+}
+
+\prop_set_eq:NN \l_pgfgo_coordinate_parser_biyection_current_prop \l_pgfgo_coordinate_parser_biyection_use_i_prop
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%LN :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_AN:nn{ %A 5 {A}{5}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{#2}}
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_AN:nn {ff}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%L-L N :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_AAN:nnn{ %A-D 5 {A}{D}{5}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#2}}
+
+ \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variable{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variable}{#3}}
+ }
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_AAN:nnn {fff}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%L N-N :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_ANN:nnn{ %A-D 5 {A}{3}{5}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne\l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+
+ \pgfgo_int_step_sorted_variable:nnNn{#2}{#3}\variable{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variable}}
+ }
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_ANN:nnn {fff}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%L-L N-N :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_AANN:nnnn{ %A-D 5-10 {A}{D}{5}{10}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#2}}
+
+ \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{
+ \pgfgo_int_step_sorted_variable:nnNn{#3}{#4} \variableN {
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{\variableN}}
+ }
+ }
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_AANN:nnnn {ffff}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%LN -| LN :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_ANHVAN:nnnn{ %A5 D10 {A}{5}{D}{10}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}}
+
+ \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#2}}
+ }
+
+ \pgfgo_int_step_sorted_variable:nnNn{#2}{#4}\variableN{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpb_int}{\variableN}}
+ }
+
+ \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_ANHVAN:nnnn{ffff}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%LN |- LN :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_ANVHAN:nnnn{ %A5 D10 {A}{5}{D}{10}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}}
+
+
+ \pgfgo_int_step_sorted_variable:nnNn{#2}{#4}\variableN{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variableN}}
+ }
+
+ \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#4}}
+ }
+
+ \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_ANVHAN:nnnn{ffff}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%LN -- LN : Si los numeros son iguales, linea horizontal, en caso contrario, linea vertical. (pensar implementacion oblicua).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_ANHHAN:nnnn{ %A5 D10 {A}{5}{D}{10}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}}
+
+ \int_compare:nNnTF {#2}={#4} {
+ \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#2}}
+ }
+ }{
+ \int_compare:nNnT{\l_tmpa_int}={\l_tmpb_int}{
+ \pgfgo_int_step_sorted_variable:nnNn{#2}{#4}\variableN{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variableN}}
+ }
+ }
+ }
+ \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_ANHHAN:nnnn{ffff}
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%AN R AN :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_ANRAN:nnnn{ %A5 R D10 {A}{5}{D}{10}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}}
+
+ \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{
+ \pgfgo_int_step_sorted_variable:nnNn{#2}{#4} \variableN {
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{\variableN}}
+ }
+ }
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_ANRAN:nnnn {ffff}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%AN r AN :
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new:Nn\pgfgo_coordinate_parser_ANrAN:nnnn{ %A5 r D10 {A}{5}{D}{10}
+ \seq_clear:N \l_pgfgo_coordinate_parser_inmediate_seq
+ \int_set:Nf\l_tmpa_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#1}}
+ \int_set:Nf\l_tmpb_int {\prop_item:Ne \l_pgfgo_coordinate_parser_biyection_current_prop {#3}}
+
+ \pgfgo_int_step_sorted_variable:nnNn{\l_tmpa_int}{\l_tmpb_int}\variableA{
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#2}}
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\variableA}{#4}}
+ }
+ \pgfgo_int_step_sorted_variable:nnNn{#2}{#4} \variableN {
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpa_int}{\variableN}}
+ \seq_put_right:Ne\l_pgfgo_coordinate_parser_inmediate_seq {{\int_use:N\l_tmpb_int}{\variableN}}
+ }
+ \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_inmediate_seq
+}
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_ANrAN:nnnn {ffff}
+
+
+
+
+
+
+
+
+%DIVIDIMOS LAS CADENAS DE OPERADORES EN OPERADORES QUE PUEDAN PROCESARSE.
+%{A2 -| A3 -| A5 -- B2}
+%{A2 -| A3, A3 -| A5, A5 -- B2}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%EXPANDIR GRUPO ADITIVO O SUSTRACTIVO A SUBCONJUNTOS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\regex_new:N \l_pgfgo_coordinate_parser_first_regex
+\regex_set:Nn \l_pgfgo_coordinate_parser_first_regex
+{( -- | \|- | -\| | r | R) \s* (\w+\d+) \s* ( -- | \|- | -\| | r | R)}
+
+\tl_new:N \l_pgfgo_coordinate_parser_expanded_group_tl
+\cs_new:Nn\pgfgo_coordinate_parser_expand_group:n{
+ \tl_set:Nn\l_pgfgo_coordinate_parser_expanded_group_tl{#1}
+ \bool_set_true:N \l_tmpa_bool %APLICAR REGEX
+ \bool_do_while:Nn \l_tmpa_bool {
+ \regex_replace_all:NnNF \l_pgfgo_coordinate_parser_first_regex {\1\ \2,\ \2\ \3}
+ \l_pgfgo_coordinate_parser_expanded_group_tl
+ {\bool_set_false:N\l_tmpa_bool}
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+% LN = A3 = Unica interseccion.
+% LLN = A:C2 = Linea horizontal.
+% LNN = A3:5 = Linea vertical.
+% LLNN = A:C 3:8 = Rectangulo.
+
+% LN -| LN = A3 -| B2 = Jota.
+% LN |- LN = A3 |- B2 = Gamma.
+% LN -- LN = A4 -- E4 = Linea. (ver descripcion)
+% LN r LN = A4 r E7 = Rectangulo hueco.
+% LN R LN = A4 R E7 = Rectangulo relleno.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% EXPANDIR SUBCONJUNTOS A ELEMENTOS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\tl_new:N \l_pgfgo_coordinate_parser_expanded_subset_tl
+
+%NO HAY ESPACIOS AL PRINCIPIO Y AL FINAL PORQUE SE ELIMINAN EN EL SPLIT DE CLIST A SEQ
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_AN_regex {\A([A-Z]+)(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_AAN_regex {\A([A-Z]+):([A-Z]+) \s*(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANN_regex {\A([A-Z]+) \s*(\d+):(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_AANN_regex {\A([A-Z]+):([A-Z]+) \s*(\d+):(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANHVAN_regex {\A([A-Z]+)(\d+) \s*-\| \s*([A-Z]+)(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANVHAN_regex {\A([A-Z]+)(\d+) \s*\|- \s*([A-Z]+)(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANHHAN_regex {\A([A-Z]+)(\d+) \s*-- \s*([A-Z]+)(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANrAN_regex {\A([A-Z]+)(\d+) \s*r \s*([A-Z]+)(\d+)\Z}
+\regex_const:Nn \l_pgfgo_coordinate_parser_subset_ANRAN_regex {\A([A-Z]+)(\d+) \s*R \s*([A-Z]+)(\d+)\Z}
+
+
+
+
+\cs_new:Nn\pgfgo_coordinate_parser_expand_subset:n{
+ \tl_set:Ne\l_pgfgo_coordinate_parser_expanded_subset_tl{#1}
+ \seq_clear:N \l_tmpa_seq
+
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_AN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_AN:ff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_AAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_AAN:fff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_ANN:fff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_AANN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_AANN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANHVAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_ANHVAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANVHAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_ANVHAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANHHAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_ANHHAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANRAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_ANRAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}}
+ }{
+ \regex_extract_once:NVNTF \l_pgfgo_coordinate_parser_subset_ANrAN_regex \l_pgfgo_coordinate_parser_expanded_subset_tl \l_tmpa_seq
+ {
+ \pgfgo_coordinate_parser_ANrAN:ffff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}}{\seq_item:Nn \l_tmpa_seq {4}}{\seq_item:Nn \l_tmpa_seq {5}}
+ }{
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_expand_subset:n {V}
+
+
+
+
+\seq_new:N\l_pgfgo_coordinate_parser_items_from_group_seq
+\seq_new:N\l_pgfgo_coordinate_parser_expanded_group_seq
+
+\cs_new:Nn\pgfgo_coordinate_parser_from_group_to_items:n{
+ \bool_if:NTF \l_pgfgo_use_i_bool {
+ \prop_set_eq:NN \l_pgfgo_coordinate_parser_biyection_current_prop \l_pgfgo_coordinate_parser_biyection_use_i_prop
+ } {
+ \prop_set_eq:NN \l_pgfgo_coordinate_parser_biyection_current_prop \l_pgfgo_coordinate_parser_biyection_no_use_i_prop
+ }
+
+ \seq_clear:N \l_pgfgo_coordinate_parser_items_from_group_seq
+ \pgfgo_coordinate_parser_expand_group:n{#1}% retorna \l_pgfgo_coordinate_parser_expanded_group_tl
+ \seq_set_from_clist:NV\l_pgfgo_coordinate_parser_expanded_group_seq\l_pgfgo_coordinate_parser_expanded_group_tl
+ \seq_map_variable:NNn\l_pgfgo_coordinate_parser_expanded_group_seq\__pgfgo_subset{
+ \pgfgo_coordinate_parser_expand_subset:V \__pgfgo_subset
+ \seq_concat:NNN
+ \l_pgfgo_coordinate_parser_items_from_group_seq
+ \l_pgfgo_coordinate_parser_items_from_group_seq
+ \l_pgfgo_coordinate_parser_inmediate_seq
+ }
+ \seq_remove_duplicates:N\l_pgfgo_coordinate_parser_items_from_group_seq
+}
+
+\cs_generate_variant:Nn \pgfgo_coordinate_parser_from_group_to_items:n {V}
+
+
+
+
+
+\seq_new:N \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+\bool_new:N \l_pgfgo_coordinate_parser_add_to_list
+
+\cs_new:Nn\pgfgo_coordinate_parser_from_pgfgonce_to_items:n {
+ \seq_clear:N \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+ \bool_set_true:N \l_pgfgo_coordinate_parser_add_to_list
+ \seq_set_split:Nnn \l_tmpa_seq {;} {#1}
+ \seq_map_variable:NNn \l_tmpa_seq\variable{
+ \pgfgo_coordinate_parser_from_group_to_items:V\variable %Devuelve \l_pgfgo_coordinate_parser_items_from_group_seq
+ \bool_if:NTF \l_pgfgo_coordinate_parser_add_to_list {
+ \seq_concat:NNN
+ \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+ \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+ \l_pgfgo_coordinate_parser_items_from_group_seq
+ \bool_set_false:N \l_pgfgo_coordinate_parser_add_to_list
+ }{
+ \seq_map_variable:NNn\l_pgfgo_coordinate_parser_items_from_group_seq\elemento {
+ \seq_remove_all:NV\l_pgfgo_coordinate_parser_items_from_pgfgonce_seq\elemento
+ }
+ \bool_set_true:N \l_pgfgo_coordinate_parser_add_to_list
+ }
+ }
+ \seq_remove_duplicates:N \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+} %DEVUELVE \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+
+
+
+
+\ExplSyntaxOff
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-coordinate-parser.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-goban.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-goban.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-goban.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,520 @@
+\ExplSyntaxOn
+ \usepackage{tikz}
+
+ \tl_set:Nn\l_pgfgo_goban_scale_tl{1}
+ \bool_set_false:N\l_pgfgo_goban_partial_bool
+ \tl_set:Nn\l_pgfgo_goban_from_x_tl{1}
+ \tl_set:Nn\l_pgfgo_goban_from_y_tl{1}
+ \tl_set:Nn\l_pgfgo_goban_to_x_tl{9}
+ \tl_set:Nn\l_pgfgo_goban_to_y_tl{9}
+
+
+ %GRID
+ \bool_set_true:N\l_pgfgo_goban_grid_bool
+ \tl_set:Nn\l_pgfgo_goban_grid_color_tl{black}
+ \tl_set:Nn\l_pgfgo_goban_grid_opacity_tl{1}
+ \dim_new:N\l_pgfgo_goban_grid_line_width_dim
+ \dim_set:Nn\l_pgfgo_goban_grid_line_width_dim{0.55pt}
+ \dim_new:N\l_pgfgo_goban_grid_x_sep_dim
+ \dim_new:N\l_pgfgo_goban_grid_y_sep_dim
+ \dim_set:Nn\l_pgfgo_goban_grid_x_sep_dim{1.25em}
+ \dim_set:Nn\l_pgfgo_goban_grid_y_sep_dim{1.25em}
+
+
+ %BORDER
+ \bool_set_true:N\l_pgfgo_goban_border_bool
+ \bool_set_true:N\l_pgfgo_goban_border_line_bool
+ \bool_set_true:N\l_pgfgo_goban_border_fill_bool
+
+ \dim_new:N\l_pgfgo_goban_border_sep_dim
+ \dim_set:Nn\l_pgfgo_goban_border_sep_dim{\fp_to_dim:n{\l_pgfgo_players_stone_radius_dim * 1.5}}
+ \tl_set:Nn\l_pgfgo_goban_border_color_tl{black}
+ \tl_set:Nn\l_pgfgo_goban_border_opacity_tl{1}
+ \dim_new:N\l_pgfgo_goban_border_line_width_dim
+ \dim_set:Nn\l_pgfgo_goban_border_line_width_dim{0.75pt}
+ \tl_set:Nn\l_pgfgo_goban_border_fill_color_tl{white}
+ \tl_set:Nn\l_pgfgo_goban_border_fill_opacity_tl{1}
+ \dim_new:N\l_pgfgo_goban_border_rounded_corners_dim
+ \dim_set:Nn\l_pgfgo_goban_border_rounded_corners_dim{1pt}
+
+
+ %LABEL
+ \tl_set:Nn\l_pgfgo_goban_labels_color_tl{black}
+ \dim_new:N\l_pgfgo_goban_labels_sep_dim
+ \dim_set:Nn\l_pgfgo_goban_labels_sep_dim{0.5em}
+ \dim_new:N\l_pgfgo_goban_labels_font_size_dim
+ \dim_set:Nn\l_pgfgo_goban_labels_font_size_dim{0.75em}
+ \cs_set:Npn\l_pgfgo_goban_labels_font_cs:{\normalfont}
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_north_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_east_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_south_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_west_bool
+
+
+ %LAYERS
+ \pgfdeclarelayer{pgfgo_layer_goban_border}
+ \pgfdeclarelayer{pgfgo_layer_goban_grid}
+ \pgfdeclarelayer{pgfgo_layer_goban_labels}
+ \pgfdeclarelayer{pgfgo_layer_territory}
+ \pgfdeclarelayer{pgfgo_layer_mark_shadow}
+ \pgfdeclarelayer{pgfgo_layer_stone}
+ \pgfdeclarelayer{pgfgo_layer_stone_mark}
+ \pgfdeclarelayer{pgfgo_layer_mark}
+
+
+
+
+
+ \keys_define:nn {pgfgo / goban}{
+ new~remember .code:n = {
+ \seq_gclear:N\l_pgfgo_goban_elements_stack_seq
+ \bool_set_true:N\l_pgfgo_goban_remember_new_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_add_bool
+ \pgfgo_goban_remember_all:
+ },
+
+ remember .code:n = {
+ \bool_set_false:N\l_pgfgo_goban_remember_new_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_add_bool
+ \pgfgo_goban_remember_all:
+ },
+
+ forget .code:n = {
+ \bool_set_false:N\l_pgfgo_goban_remember_new_bool
+ \bool_set_false:N\l_pgfgo_goban_remember_add_bool
+ \pgfgo_goban_remember_nothing:
+ },
+
+ resume .code:n = {\bool_set_true:N\l_pgfgo_goban_resume_bool},
+
+ grid .code:n = {\keys_set:nx{pgfgo / goban / grid} {#1}},
+
+ border .code:n = {\keys_set:nx{pgfgo / goban / border} {#1}}, %DEPRECATED
+
+ background .code:n = {\keys_set:nx{pgfgo / goban / background} {#1}},
+
+ label .code:n = {\keys_set:nx{pgfgo / goban / label} {#1}},
+
+ partial .code:n = { \bool_set_true:N\l_pgfgo_goban_partial_bool
+ \keys_set:nx{pgfgo / goban / partial} {#1}},
+
+ scale .tl_set:N = \l_pgfgo_goban_scale_tl,
+
+ size .code:n = {\pgfgo_parse_goban_size:n{#1}},
+
+ use~i .bool_set:N = \l_pgfgo_use_i_bool,
+
+ use~i .default:n = {true},
+
+ unknown .code:n = {\pgfgo_parse_goban_size:V\l_keys_key_str},
+ }
+
+
+
+ \keys_define:nn {pgfgo / goban / grid}{
+ false .bool_set:N = \l_pgfgo_goban_grid_bool,
+ false .default:n = {false},
+
+ line .code:n = {\keys_set:nn {pgfgo / goban / grid / line} {#1}},
+
+ x~sep .dim_set:N = \l_pgfgo_goban_grid_x_sep_dim,
+
+ y~sep .dim_set:N = \l_pgfgo_goban_grid_y_sep_dim,
+
+ sep .code:n = {\keys_set:nn{pgfgo / goban / grid}{x~sep = #1, y~sep = #1}},
+ }
+
+ \keys_define:nn {pgfgo / goban / grid / line} {
+ color .tl_set:N = \l_pgfgo_goban_grid_color_tl,
+
+ opacity .tl_set:N = \l_pgfgo_goban_grid_opacity_tl,
+
+ width .dim_set:N = \l_pgfgo_goban_grid_line_width_dim,
+ }
+
+
+
+
+ \keys_define:nn {pgfgo / goban / background}{
+ false .bool_set:N = \l_pgfgo_goban_border_bool,
+ false .default:n = {false},
+
+ sep .dim_set:N = \l_pgfgo_goban_border_sep_dim,
+
+ line .code:n = {\keys_set:nn {pgfgo / goban / background / line} {#1}},
+
+ fill .code:n = {\keys_set:nn {pgfgo / goban / background / fill} {#1}},
+
+ rounded~corners .dim_set:N = \l_pgfgo_goban_border_rounded_corners_dim,
+
+ drop~shadow .code:n = {\keys_set:nn {pgfgo / goban / background / drop~shadow} {#1}},
+ drop~shadow .default:n = {true},
+ }
+
+ \bool_new:N \l_pgfgo_goban_background_drop_shadow_bool
+ \fp_new:N \l_pgfgo_goban_background_drop_shadow_angle_fp
+ \dim_new:N \l_pgfgo_goban_background_drop_shadow_offset_dim
+ \fp_new:N \l_pgfgo_goban_background_drop_shadow_opacity_fp
+ \tl_new:N \l_pgfgo_goban_background_drop_shadow_color_tl
+
+
+
+ \keys_define:nn {pgfgo / goban / background / drop~shadow} {
+ true .bool_set:N = \l_pgfgo_goban_background_drop_shadow_bool,
+ true .default:n = {true},
+
+ false .bool_set:N = \l_pgfgo_goban_background_drop_shadow_bool,
+ false .default:n = {false},
+
+ angle .fp_set:N = \l_pgfgo_goban_background_drop_shadow_angle_fp,
+ angle .initial:n = {-45},
+
+ offset .dim_set:N = \l_pgfgo_goban_background_drop_shadow_offset_dim,
+ offset .initial:n = {1.5pt},
+
+ opacity .fp_set:N = \l_pgfgo_goban_background_drop_shadow_opacity_fp,
+ opacity .initial:n = {0.5},
+
+ color .tl_set:N = \l_pgfgo_goban_background_drop_shadow_color_tl,
+ color .initial:n = {black},
+ }
+
+
+
+%
+%\keys_define:nn {pgfgo / goban / background / custom}{
+% source .tl_set:N = ,
+%
+% scale .pf_set:N = ,
+% x~scale .pf_set:N = ,
+% y~scale .pf_set:N = ,
+% x~shift .pf_set:N = ,
+% y~shift .pf_set:N = ,
+%}
+
+
+\keys_define:nn {pgfgo / goban / background / line}{
+ color .tl_set:N = \l_pgfgo_goban_border_color_tl,
+
+ opacity .tl_set:N = \l_pgfgo_goban_border_opacity_tl,
+
+ width .dim_set:N = \l_pgfgo_goban_border_line_width_dim,
+
+ false .code:n = {\bool_set_false:N\l_pgfgo_goban_border_line_bool},
+ true .code:n = {\bool_set_true:N\l_pgfgo_goban_border_line_bool},
+}
+
+
+
+
+
+\keys_define:nn {pgfgo / goban / background / fill}{
+ color .tl_set:N = \l_pgfgo_goban_border_fill_color_tl,
+
+ opacity .tl_set:N = \l_pgfgo_goban_border_fill_opacity_tl,
+
+ false .code:n = {\bool_set_false:N\l_pgfgo_goban_border_fill_bool},
+ true .code:n = {\bool_set_true:N\l_pgfgo_goban_border_fill_bool},
+}
+
+
+
+
+
+ \keys_define:nn {pgfgo / goban / label} {
+ false .code:n = { \bool_set_false:N\l_pgfgo_goban_labels_pos_north_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_east_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_south_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_west_bool
+ },
+
+ text~color .tl_set:N = \l_pgfgo_goban_labels_color_tl,
+
+ sep .dim_set:N = \l_pgfgo_goban_labels_sep_dim,
+
+ font~size .dim_set:N = \l_pgfgo_goban_labels_font_size_dim,
+
+ at .code:n = {\keys_set:nx{pgfgo / goban / label / at} {#1}},
+
+ font .code:n = {\cs_set:Npn\l_pgfgo_goban_labels_font_cs:{#1}},%WIP
+ }
+
+
+
+ \keys_define:nn {pgfgo / goban / label / at} {
+ all .code:n = {
+ \bool_set_true:N\l_pgfgo_goban_labels_pos_north_bool
+ \bool_set_true:N\l_pgfgo_goban_labels_pos_east_bool
+ \bool_set_true:N\l_pgfgo_goban_labels_pos_south_bool
+ \bool_set_true:N\l_pgfgo_goban_labels_pos_west_bool
+ },
+
+ none .code:n = {
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_north_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_east_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_south_bool
+ \bool_set_false:N\l_pgfgo_goban_labels_pos_west_bool
+ },
+
+ north .bool_set:N = \l_pgfgo_goban_labels_pos_north_bool,
+ north .default:n = {true},
+
+ east .bool_set:N = \l_pgfgo_goban_labels_pos_east_bool,
+ east .default:n = {true},
+
+ south .bool_set:N = \l_pgfgo_goban_labels_pos_south_bool,
+ south .default:n = {true},
+
+ west .bool_set:N = \l_pgfgo_goban_labels_pos_west_bool,
+ west .default:n = {true},
+
+ above .bool_set:N = \l_pgfgo_goban_labels_pos_north_bool,
+ above .default:n = {true},
+
+ right .bool_set:N = \l_pgfgo_goban_labels_pos_east_bool,
+ right .default:n = {true},
+
+ below .bool_set:N = \l_pgfgo_goban_labels_pos_south_bool,
+ below .default:n = {true},
+
+ left .bool_set:N = \l_pgfgo_goban_labels_pos_west_bool,
+ left .default:n = {true},
+ }
+
+
+
+ \keys_define:nn {pgfgo / goban / partial}{
+ from .code:n = {
+ \pgfgo_parse_goban_partial_from:n{#1}
+
+ \pgfgo_parse_coordinate:x {\l_temp_a_tl}
+ \tl_set:Nx\l_pgfgo_goban_partial_from_x_int{\l_pgfgo_parsed_x_coordinate_tl}
+ \tl_set:Nx\l_pgfgo_goban_partial_from_y_int{\l_pgfgo_parsed_y_coordinate_tl}
+
+ \pgfgo_parse_coordinate:x {\l_temp_b_tl}
+ \tl_set:Nx\l_pgfgo_goban_partial_to_x_int{\l_pgfgo_parsed_x_coordinate_tl}
+ \tl_set:Nx\l_pgfgo_goban_partial_to_y_int{\l_pgfgo_parsed_y_coordinate_tl}
+ },
+ false .bool_set:N = \l_pgfgo_goban_partial_bool,
+ false .default:n = {false},
+ }
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%----------------------------------------goban-----------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \cs_generate_variant:Nn \__pgfgo_goban:nnn {nVV}
+ \int_new:N\l_pgfgo_goban_labels_current_x_int
+
+
+ \cs_new:Npn\__pgfgo_goban:nnn #1#2#3 {
+ \group_begin:
+ \pgfsetlayers{
+ pgfgo_layer_goban_border,
+ pgfgo_layer_goban_grid,
+ pgfgo_layer_goban_labels,
+ pgfgo_layer_territory,
+ pgfgo_layer_mark_shadow,
+ pgfgo_layer_stone,
+ pgfgo_layer_stone_mark,
+ pgfgo_layer_mark,
+ main
+ }
+
+ %---------------------------------------------------
+
+ \bool_if:NTF\l_pgfgo_goban_partial_bool{
+
+ \tl_set:Nn\l_pgfgo_goban_from_x_tl{\int_min:nn{\l_pgfgo_goban_partial_from_x_int}{\l_pgfgo_goban_partial_to_x_int}}
+ \tl_set:Nn\l_pgfgo_goban_from_y_tl{\int_min:nn{\l_pgfgo_goban_partial_from_y_int}{\l_pgfgo_goban_partial_to_y_int}}
+ \tl_set:Nn\l_pgfgo_goban_to_x_tl{\int_max:nn{\l_pgfgo_goban_partial_from_x_int}{\l_pgfgo_goban_partial_to_x_int}}
+ \tl_set:Nn\l_pgfgo_goban_to_y_tl{\int_max:nn{\l_pgfgo_goban_partial_from_y_int}{\l_pgfgo_goban_partial_to_y_int}}
+
+ }{
+ \tl_set:Nn\l_pgfgo_goban_to_x_tl{#2}
+ \tl_set:Nn\l_pgfgo_goban_to_y_tl{#3}
+ }
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %-----------------TIKZ PICTURE---------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \tikzpicture
+ \pgfsetxvec{\pgfpoint{ \l_pgfgo_goban_grid_x_sep_dim}{0}}
+ \pgfsetyvec{\pgfpoint{0}{ \l_pgfgo_goban_grid_y_sep_dim}}
+ \pgftransformscale{\l_pgfgo_goban_scale_tl}
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %----------------BORDER AND FILL-------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \pgfonlayer{pgfgo_layer_goban_border}
+ \bool_if:NT\l_pgfgo_goban_border_bool{
+ \pgfscope
+ \pgfsetlinewidth{\l_pgfgo_goban_border_line_width_dim}
+ \pgfsetstrokecolor{\l_pgfgo_goban_border_color_tl}
+ \pgfsetstrokeopacity{\l_pgfgo_goban_border_opacity_tl}
+ \pgfsetfillcolor{\l_pgfgo_goban_border_fill_color_tl}
+ \pgfsetfillopacity{\l_pgfgo_goban_border_fill_opacity_tl}
+
+ \pgfsetcornersarced{\pgfpoint{\l_pgfgo_goban_border_rounded_corners_dim}{\l_pgfgo_goban_border_rounded_corners_dim}}
+
+ %--------DROP SHADOW
+
+ \bool_if:NT \l_pgfgo_goban_background_drop_shadow_bool {
+ \pgfscope
+ \pgftransformshift{\pgfpointpolar{\fp_to_decimal:N \l_pgfgo_goban_background_drop_shadow_angle_fp}{\l_pgfgo_goban_background_drop_shadow_offset_dim}}
+ \pgfpathrectanglecorners{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_goban_from_x_tl}{\l_pgfgo_goban_from_y_tl}}{
+ \pgfpoint{-\l_pgfgo_goban_border_sep_dim}{-\l_pgfgo_goban_border_sep_dim}}}{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_goban_to_x_tl}{\l_pgfgo_goban_to_y_tl}}{
+ \pgfpoint{\l_pgfgo_goban_border_sep_dim}{\l_pgfgo_goban_border_sep_dim}}}
+ \pgfsetfillcolor{\l_pgfgo_goban_background_drop_shadow_color_tl}
+ \pgfsetfillopacity{\fp_to_decimal:N\l_pgfgo_goban_background_drop_shadow_opacity_fp}
+ \pgfusepath{fill}
+ \endpgfscope
+ }
+ %FONDO
+ \pgfpathrectanglecorners{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_goban_from_x_tl}{\l_pgfgo_goban_from_y_tl}}{
+ \pgfpoint{-\l_pgfgo_goban_border_sep_dim}{-\l_pgfgo_goban_border_sep_dim}}}{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_goban_to_x_tl}{\l_pgfgo_goban_to_y_tl}}{
+ \pgfpoint{\l_pgfgo_goban_border_sep_dim}{\l_pgfgo_goban_border_sep_dim}}}
+
+ \pgfusepath{\bool_if:NT\l_pgfgo_goban_border_line_bool{stroke}, \bool_if:NT\l_pgfgo_goban_border_fill_bool{fill}}
+ \endpgfscope
+ }
+ \endpgfonlayer
+
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %----------------------GRID------------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+ \pgfonlayer{pgfgo_layer_goban_grid}
+ \pgfscope
+ \bool_if:NT\l_pgfgo_goban_partial_bool{
+ \pgfpathrectanglecorners{
+ \pgfpointxy{\l_pgfgo_goban_from_x_tl-0.5}{\l_pgfgo_goban_from_y_tl-0.5}}{
+ \pgfpointxy{\l_pgfgo_goban_to_x_tl+0.5}{\l_pgfgo_goban_to_y_tl+0.5}}
+
+ \pgfusepath{clip}
+ }
+
+ \bool_if:NT\l_pgfgo_goban_grid_bool{
+ \pgfscope
+ \pgfsetstrokecolor{\l_pgfgo_goban_grid_color_tl}
+ \pgfsetstrokeopacity{\l_pgfgo_goban_grid_opacity_tl}
+ \pgfsetlinewidth{\l_pgfgo_goban_grid_line_width_dim}
+ \pgfsetroundcap
+
+ \pgfpathgrid[step = \pgfpointxy{1}{1}] {\pgfpointxy{1}{1}}{\pgfpointxy{#2}{#3}}
+
+ \pgfusepath{stroke}
+ \endpgfscope
+ }
+ \endpgfscope
+ \endpgfonlayer
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %----------------------LABELS----------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+ \pgfonlayer{pgfgo_layer_goban_labels}
+ \pgfscope
+ \pgfsetcolor{\l_pgfgo_goban_labels_color_tl}
+
+ \bool_if:NT\l_pgfgo_goban_labels_pos_north_bool{
+ \foreach \x in {\l_pgfgo_goban_from_x_tl,...,\l_pgfgo_goban_to_x_tl}{
+ \int_set:Nx\l_pgfgo_goban_labels_current_x_int{\x}
+ \bool_if:NF\l_pgfgo_use_i_bool{
+ \int_compare:nNnT{\l_pgfgo_goban_labels_current_x_int}>{8}{
+ \int_incr:N\l_pgfgo_goban_labels_current_x_int
+ }}
+
+ \pgftext[at = \pgfpointadd{
+ \pgfpointxy{\x}{\l_pgfgo_goban_to_y_tl}}{
+ \pgfpoint{0}{\l_pgfgo_goban_labels_sep_dim + \l_pgfgo_players_stone_radius_dim + 0.5em}}
+ ] {{\fontsize{\l_pgfgo_goban_labels_font_size_dim}{0pt}\selectfont
+ \int_to_Alph:n{\l_pgfgo_goban_labels_current_x_int}
+ }}}
+ }
+
+ \bool_if:NT\l_pgfgo_goban_labels_pos_east_bool{
+ \foreach \y in {\l_pgfgo_goban_from_y_tl,...,\l_pgfgo_goban_to_y_tl}{
+ \pgftext[at = \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_goban_to_x_tl}{\y}}{
+ \pgfpoint{\l_pgfgo_goban_labels_sep_dim + \l_pgfgo_players_stone_radius_dim + 0.5em}{0}}
+ ] {{\fontsize{\l_pgfgo_goban_labels_font_size_dim}{0pt}\selectfont\y}}}
+ }
+
+ \bool_if:NT\l_pgfgo_goban_labels_pos_south_bool{
+ \foreach \x in {\l_pgfgo_goban_from_x_tl,...,\l_pgfgo_goban_to_x_tl}{
+ \int_set:Nx\l_pgfgo_goban_labels_current_x_int{\x}
+ \bool_if:NF\l_pgfgo_use_i_bool{
+ \int_compare:nNnT{\l_pgfgo_goban_labels_current_x_int}>{8}{
+ \int_incr:N\l_pgfgo_goban_labels_current_x_int
+ }}
+
+ \pgftext[at = \pgfpointadd{
+ \pgfpointxy{\x}{\l_pgfgo_goban_from_y_tl}}{
+ \pgfpoint{0}{-\l_pgfgo_goban_labels_sep_dim-\l_pgfgo_players_stone_radius_dim-0.5em}}
+ ] {{\fontsize{\l_pgfgo_goban_labels_font_size_dim}{0pt}\selectfont
+ \int_to_Alph:n{\l_pgfgo_goban_labels_current_x_int}
+ }}}
+ }
+
+ \bool_if:NT\l_pgfgo_goban_labels_pos_west_bool{
+ \foreach \y in {\l_pgfgo_goban_from_y_tl,...,\l_pgfgo_goban_to_y_tl}{
+ \pgftext[at = \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_goban_from_x_tl}{\y}}{
+ \pgfpoint{-\l_pgfgo_goban_labels_sep_dim-\l_pgfgo_players_stone_radius_dim-0.5em}{0}}
+ ] {{\fontsize{\l_pgfgo_goban_labels_font_size_dim}{0pt}\selectfont\y}}}
+ }
+ \endpgfscope
+ \endpgfonlayer
+
+
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %----------------------RESUME----------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \bool_if:NT\l_pgfgo_goban_resume_bool{
+ \seq_map_inline:Nn \l_pgfgo_goban_elements_stack_seq {##1}}
+ }
+
+
+
+ \cs_new:Npn\__end_pgfgo_goban: {
+ \endtikzpicture
+ \group_end:
+ \int_set:Nn\l_pgfgo_move_from_int{1}
+ }
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%------------------------------------------LATEX------------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+ \NewDocumentEnvironment{goban}{O{}}{
+ \keys_set:nn {pgfgo / goban} {#1}
+
+ \__pgfgo_goban:nVV{}{\l_pgfgo_goban_to_x_tl}{\l_pgfgo_goban_to_y_tl}
+ }{\__end_pgfgo_goban:}
+
+
+
+\ExplSyntaxOff
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-goban.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-marks.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-marks.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-marks.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,419 @@
+\ExplSyntaxOn
+\usepackage{tikz}
+
+
+
+%MARK
+\int_new:N\l_pgfgo_mark_sequence_current_int
+\int_set:Nn\l_pgfgo_mark_sequence_current_int{1}
+
+
+
+
+\bool_set_false:N\l_pgfgo_mark_color_bool
+\bool_set_false:N\l_pgfgo_players_mark_fill_bool
+\bool_set_false:N\l_pgfgo_mark_hatched_lines_bool
+\bool_set_false:N\l_pgfgo_mark_t_bool
+
+\tl_set:Nn\l_pgfgo_mark_custom_tl{!}
+
+
+\cs_new:Nn\pgfgo_mark_current:{}
+
+
+\keys_define:nn { pgfgo / mark }{
+ forget .code:n = {\bool_set_false:N\l_pgfgo_goban_remember_mark_bool},
+ forget .groups:n = {preset},
+
+ remember .code:n = {\bool_set_true:N\l_pgfgo_goban_remember_mark_bool},
+ remember .groups:n = {preset},
+
+ circle .code:n = {\cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_circle:},
+ circle .groups:n = { shape },
+
+ triangle .code:n = {\cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_triangle:},
+ triangle .groups:n = { shape },
+
+ square .code:n = {\cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_square:},
+ square .groups:n = { shape },
+
+ cross .code:n = {\cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_cross:},
+ cross .groups:n = { shape },
+
+ filled~square .code:n = {\cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_filled_square:},
+ filled~square .groups:n = { shape },
+
+ filled~circle .code:n = {\cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_filled_circle:},
+ filled~circle .groups:n = { shape },
+
+ t-circle .code:n = {
+ \bool_set_true:N\l_pgfgo_mark_t_bool
+ \cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_t_circle:
+ },
+
+ t-circle .groups:n = { shape },
+
+ t-square .code:n = {
+ \bool_set_true:N\l_pgfgo_mark_t_bool
+ \cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_t_square:
+ },
+
+ t-square .groups:n = { shape },
+
+ hatched~lines .code:n = {
+ \bool_set_true:N\l_pgfgo_mark_hatched_lines_bool
+ \cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_hatched_lines:
+ },
+
+ hatched~lines .groups:n = { shape },
+
+ custom .code:n = {
+ \tl_set:Nn\l_pgfgo_mark_custom_tl{#1}
+ \cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_custom:
+ },
+
+ hatched~lines .groups:n = { shape },
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %-------------------OTRAS KEYS---------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ black .code:n = {
+ \bool_set_true:N \l_pgfgo_players_black_bool
+ \bool_set_false:N \l_pgfgo_players_white_bool
+ \bool_set_false:N \l_pgfgo_players_neutral_bool
+ },
+ black .groups:n = { player-id },
+ b .code:n = {\keys_set:nn{ pgfgo / mark }{black}},
+ b .groups:n = { player-id },
+
+
+ white .code:n = {
+ \bool_set_true:N \l_pgfgo_players_white_bool
+ \bool_set_false:N \l_pgfgo_players_black_bool
+ \bool_set_false:N \l_pgfgo_players_neutral_bool
+ },
+ white .groups:n = { player-id },
+ w .code:n = {\keys_set:nn{ pgfgo / mark }{white}},
+ w .groups:n = { player-id },
+
+ neutral .code:n = {
+ \bool_set_false:N \l_pgfgo_players_white_bool
+ \bool_set_false:N \l_pgfgo_players_black_bool
+ \bool_set_true:N \l_pgfgo_players_neutral_bool
+ },
+ neutral .groups:n = { player-id },
+ n .code:n = {\keys_set:nn{ pgfgo / mark }{white}},
+ n .groups:n = { player-id },
+}
+
+
+
+
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%----------------------------------------MARCAS-------------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\cs_set:Nn\pgfgo_mark_circle: {
+ \pgfsetstrokecolor{\l_pgfgo_players_mark_line_color_tl}
+ \pgfsetlinewidth{\l_pgfgo_players_mark_line_width_dim}
+
+ \pgfpathcircle{\pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{\l_pgfgo_players_stone_radius_dim * 0.6}
+
+ \pgfusepath{stroke}
+}
+
+
+
+
+\cs_set:Nn\pgfgo_mark_triangle: {
+ \pgfpathmoveto{\pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{0}{\l_pgfgo_players_stone_radius_dim * 0.6}}}
+ \pgfpathlineto{\pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{-\l_pgfgo_players_stone_radius_dim * 0.866 * 0.6}{-\l_pgfgo_players_stone_radius_dim * 0.5 * 0.6}}}
+ \pgfpathlineto{\pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{\l_pgfgo_players_stone_radius_dim * 0.866 * 0.6}{-\l_pgfgo_players_stone_radius_dim * 0.5 * 0.6}}}
+ \pgfpathclose
+
+ \pgfsetstrokecolor{\l_pgfgo_players_mark_line_color_tl}
+ \pgfsetlinewidth{\l_pgfgo_players_mark_line_width_dim}
+ \pgfusepath{stroke}
+}
+
+
+
+
+
+\cs_set:Nn\pgfgo_mark_square: {
+ \pgfpathrectanglecorners{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}}}{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}}
+ }
+
+ \pgfsetstrokecolor{\l_pgfgo_players_mark_line_color_tl}
+ \pgfsetlinewidth{\l_pgfgo_players_mark_line_width_dim}
+ \pgfusepath{stroke}
+}
+
+\cs_set:Nn\pgfgo_mark_hatched_lines: {
+ \pgfpathrectanglecorners{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{\l_pgfgo_players_stone_radius_dim}{\l_pgfgo_players_stone_radius_dim}}}{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{-\l_pgfgo_players_stone_radius_dim}{-\l_pgfgo_players_stone_radius_dim}}
+ }
+
+ \bool_if:NTF\l_pgfgo_players_mark_fill_bool{
+ \pgfsetfillpattern{north~west~lines}{\l_pgfgo_players_mark_fill_color_tl}}{
+ \pgfsetfillpattern{north~west~lines}{gray}}
+
+
+ \pgfusepath{fill}
+}
+
+\cs_set:Nn\pgfgo_mark_filled_square: {
+ \pgfpathrectanglecorners{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.5}{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.5}}}{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.5}{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.5}}
+ }
+
+ \bool_if:NTF\l_pgfgo_players_mark_fill_bool{
+ \pgfsetfillcolor{\l_pgfgo_players_mark_fill_color_tl}
+ }{
+ \pgfsetfillcolor{gray}
+ }
+
+ \pgfusepath{fill}
+}
+
+\cs_set:Nn\pgfgo_mark_filled_circle: {
+ \pgfpathcircle{\pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{\l_pgfgo_players_stone_radius_dim * 0.5}
+
+ \bool_if:NTF\l_pgfgo_players_mark_fill_bool{
+ \pgfsetfillcolor{\l_pgfgo_players_mark_fill_color_tl}
+ }{
+ \pgfsetfillcolor{gray}
+ }
+
+ \pgfusepath{fill}
+}
+
+\cs_set:Nn\pgfgo_mark_cross: {
+ \pgfpathmoveto{\pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}}}
+ \pgfpathlineto{\pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}}}
+ \pgfpathmoveto{\pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}}}
+ \pgfpathlineto{\pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpoint{\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}{-\l_pgfgo_players_stone_radius_dim * 0.7071 * 0.6}}}
+
+ \pgfsetstrokecolor{\l_pgfgo_players_mark_line_color_tl}
+ \pgfsetlinewidth{\l_pgfgo_players_mark_line_width_dim}
+ \pgfusepath{stroke}
+}
+
+\cs_set_eq:NN\pgfgo_mark_current:\pgfgo_mark_cross:
+
+
+
+\cs_set:Nn\pgfgo_mark_custom: {
+ %Ajustar el tamano de acuerdo a la cantidad de caracteres <--------
+ \tl_set:Nn\l_tmpa_tl{0.45em}
+ \regex_count:nVN{.}\l_pgfgo_mark_custom_tl\l_tmpa_int
+ \int_case:nn{\l_tmpa_int}{
+ {1}{\tl_set:Nn\l_tmpa_tl{1em}}
+ {2}{\tl_set:Nn\l_tmpa_tl{0.65em}}
+ {3}{\tl_set:Nn\l_tmpa_tl{0.45em}}
+ }
+ %------------------------------------------------------------------
+
+ \pgfsetcolor{\l_pgfgo_players_mark_line_color_tl}
+ \pgftext[at = \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}]{{
+ \bfseries\fontsize{\l_tmpa_tl}{0pt}\selectfont\textcolor{\l_pgfgo_players_mark_label_color_tl}{\l_pgfgo_mark_custom_tl}
+ }}
+
+ \pgfusepath{stroke}
+}
+
+\cs_set:Nn\pgfgo_mark_t_circle: {
+ \pgfsetstrokecolor{\l_pgfgo_goban_grid_color_tl}
+ \pgfsetlinewidth{\l_pgfgo_goban_grid_line_width_dim}
+ \pgfsetfillcolor{\l_pgfgo_players_stone_fill_color_tl}
+ \pgfsetstrokeopacity{\l_pgfgo_goban_grid_opacity_tl}
+
+ \pgfpathcircle{\pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{\l_pgfgo_players_stone_radius_dim * 0.35}
+
+ \pgfusepath{stroke, fill}
+}
+
+\cs_set:Nn\pgfgo_mark_t_square: {
+ \pgfsetstrokecolor{\l_pgfgo_goban_grid_color_tl}
+ \pgfsetlinewidth{\l_pgfgo_goban_grid_line_width_dim}
+ \pgfsetfillcolor{\l_pgfgo_players_stone_fill_color_tl}
+ \pgfsetstrokeopacity{\l_pgfgo_goban_grid_opacity_tl}
+
+ \pgfpathrectanglecorners{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpointpolar{45}{\l_pgfgo_players_stone_radius_dim * 0.25 * 1.41}}
+ }{
+ \pgfpointadd{
+ \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{
+ \pgfpointpolar{225}{\l_pgfgo_players_stone_radius_dim * 0.25 * 1.41}}
+ }
+
+ \pgfusepath{stroke, fill}
+}
+
+
+
+\cs_set:Nn\pgfgo_mark_sequence: {
+ %Ajustar el tamano de acuerdo a la cantidad de caracteres <--------
+ \tl_set:Nn\l_tmpa_tl{0.45em}
+ \tl_set:Nx\l_tmpb_tl{\pgfgo_players_mark_sequence_format:n{\l_pgfgo_mark_sequence_current_int}}
+ \regex_count:nVN{[a-zA-Z\d]}\l_tmpb_tl\l_tmpa_int
+ \int_case:nn{\l_tmpa_int}{
+ {1}{\tl_set:Nn\l_tmpa_tl{0.7em}}
+ {2}{\tl_set:Nn\l_tmpa_tl{0.65em}}
+ {3}{\tl_set:Nn\l_tmpa_tl{0.45em}}
+ }
+ %------------------------------------------------------------------
+ \pgfsetcolor{\l_pgfgo_players_mark_label_color_tl}
+ \pgftext[at = \pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}]{{
+ \bfseries\fontsize{\l_tmpa_tl}{0pt}\selectfont
+ \pgfgo_players_mark_sequence_format:n{\l_pgfgo_mark_sequence_current_int}
+ }}
+ \pgfusepath{stroke}
+
+ \int_gincr:N\l_pgfgo_mark_sequence_current_int
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%----------------------------------------MARCA--------------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\cs_set_protected:Npn\pgfgo_mark:nnn #1#2#3 {
+ \group_begin:
+
+ \tl_set:Nn\l_pgfgo_parsed_x_coordinate_tl{#2}
+ \tl_set:Nn\l_pgfgo_parsed_y_coordinate_tl{#3}
+
+ \keys_set_groups:nnn{ pgfgo / mark }{ player-id }{#1}
+ \bool_if:NTF \l_pgfgo_players_black_bool
+ {\keys_set_exclude_groups:nnn{ pgfgo / players / black / mark } { external }{#1}}
+ {\bool_if:NTF \l_pgfgo_players_white_bool
+ {\keys_set_exclude_groups:nnn{ pgfgo / players / white / mark } { external } {#1}}
+ {\keys_set_exclude_groups:nnn{ pgfgo / players / neutral / mark } { external } {#1}}}
+ \pgfgo_get_variables_from_current_player:
+ \keys_set_groups:nnn {pgfgo / mark} { shape } {#1}
+
+
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %---------------------SHADOW-----------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ \bool_if:NF\l_pgfgo_mark_t_bool{
+ \pgfonlayer{pgfgo_layer_mark_shadow}
+ \pgfsetfillcolor{\l_pgfgo_goban_border_fill_color_tl}
+
+ \bool_if:NTF\l_pgfgo_mark_hatched_lines_bool{
+ \tl_set:Nn\l_pgfgo_mark_shadow_scale{1}
+ }{
+ \tl_set:Nn\l_pgfgo_mark_shadow_scale{0.8}
+ }
+
+ \pgfpathcircle{\pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}{\l_pgfgo_players_stone_radius_dim * \l_pgfgo_mark_shadow_scale}
+
+ \pgfusepath{fill}
+ \endpgfonlayer
+ }
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %---------------------MARCA------------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+ \pgfonlayer{pgfgo_layer_mark}
+ \bool_if:NTF \l_pgfgo_players_mark_sequence_bool {
+ \pgfgo_mark_sequence:
+ }{
+ \pgfgo_mark_current:
+ }
+
+ \endpgfonlayer
+ \group_end:
+}
+
+
+\cs_generate_variant:Nn\pgfgo_mark:nnn {nee}
+\cs_new:Nn \pgfgo_mark:nn {\pgfgo_mark:nnn{#1}#2}
+\cs_generate_variant:Nn\pgfgo_mark:nn {nV}
+
+
+
+
+\cs_new:Nn \pgfgo_marks_parsed:nn {
+ \clist_map_variable:nNn {#2} \variable {\pgfgo_mark:nV{#1}\variable}
+}
+
+
+
+%\l_pgfgo_mark_sequence_current_int
+
+\cs_set_protected:Npn\pgfgo_marks:nn #1#2 {
+ \group_begin:
+ \keys_set_groups:nnn{ pgfgo / mark }{ preset }{#1}
+ \pgfgo_coordinate_parser_from_pgfgonce_to_items:n{#2}
+ %RECORDAR LAS PIEDAS
+ \clist_set_from_seq:NN \l_tmpa_clist\l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+ \bool_if:NT \l_pgfgo_goban_remember_mark_bool {
+ \seq_gput_right:Ne \l_pgfgo_goban_elements_stack_seq {\exp_not:N\pgfgo_marks_parsed:nn{#1}{\l_tmpa_clist}}
+ }
+
+ \keys_set_exclude_groups:nnn{ pgfgo / players / neutral / mark } { external }{#1}
+ \int_set:NV\l_pgfgo_mark_sequence_current_int\l_pgfgo_neutral_mark_sequence_from_int
+
+ %Devuelve \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+
+ \seq_map_variable:NNn \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq\variable{
+ \pgfgo_mark:nV{#1}\variable
+ }
+ \group_end:
+}
+
+
+
+\DeclareDocumentCommand{\marks}{O{}m}{\pgfgo_marks:nn{#1}{#2}}
+
+\let\mark\marks
+
+
+
+\ExplSyntaxOff
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-marks.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-players.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-players.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-players.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,417 @@
+\ExplSyntaxOn
+
+\cs_generate_variant:Nn \keys_define:nn {ee}
+\cs_generate_variant:Nn \keys_define:nn {en}
+
+
+\keys_define:nn {pgfgo} {players .code:n = {\keys_set:nn {pgfgo/players} {#1}}}
+
+\def\pgfgosetplayer#1#2{\pgfgoset{players = {#1 = {#2}}}}
+
+
+\bool_new:N \l_pgfgo_mark_inside_mark_bool
+
+\def\pgfgochooseplayers#1#2#3{
+ \pgfgocopyplayer{neutral} {#1}
+ \pgfgocopyplayer{black} {#2}
+ \pgfgocopyplayer{white} {#3}
+}
+
+
+
+
+
+
+
+
+
+
+\def\pgfgocopyplayer#1#2{
+ \dim_set_eq:cc {l_pgfgo_players_ #1 _stone_radius_dim} {l_pgfgo_players_ #2 _stone_radius_dim}
+ \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_scale_fp} {l_pgfgo_players_ #2 _stone_scale_fp}
+
+ \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_line_bool} {l_pgfgo_players_ #1 _stone_line_bool}
+ \tl_set_eq:cc {l_pgfgo_players_ #1 _stone_line_color_tl} {l_pgfgo_players_ #2 _stone_line_color_tl}
+ \dim_set_eq:cc {l_pgfgo_players_ #1 _stone_line_width_dim} {l_pgfgo_players_ #2 _stone_line_width_dim}
+ \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_line_opacity_fp} {l_pgfgo_players_ #2 _stone_line_opacity_fp}
+
+ \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_fill_bool} {l_pgfgo_players_ #2 _stone_fill_bool}
+ \tl_set_eq:cc {l_pgfgo_players_ #1 _stone_fill_color_tl} {l_pgfgo_players_ #2 _stone_fill_color_tl}
+ \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_fill_opacity_fp} {l_pgfgo_players_ #2 _stone_fill_opacity_fp}
+
+ \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_bool} {l_pgfgo_players_ #2 _stone_drop_shadow_bool}
+ \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_angle_fp} {l_pgfgo_players_ #2 _stone_drop_shadow_angle_fp}
+ \dim_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_offset_dim} {l_pgfgo_players_ #2 _stone_drop_shadow_offset_dim}
+ \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shadow_opacity_fp} {l_pgfgo_players_ #2 _stone_drop_shadow_opacity_fp}
+
+ \bool_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shine_bool} {l_pgfgo_players_ #2 _stone_drop_shine_bool}
+ \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shine_angle_fp} {l_pgfgo_players_ #2 _stone_drop_shine_angle_fp}
+ \fp_set_eq:cc {l_pgfgo_players_ #1 _stone_drop_shine_opacity_fp} {l_pgfgo_players_ #2 _stone_drop_shine_opacity_fp}
+
+ \dim_set_eq:cc {l_pgfgo_players_ #1 _move_label_font_size_dim} {l_pgfgo_players_ #2 _move_label_font_size_dim}
+ \tl_set_eq:cc {l_pgfgo_players_ #1 _move_label_color_tl} {l_pgfgo_players_ #2 _move_label_color_tl}
+ \cs_set_eq:cc {pgfgo_players_ #1 _move_label_format:n}{pgfgo_players_ #2 _move_label_format:n}
+
+
+ \tl_set_eq:cc {l_pgfgo_players_ #1 _mark_line_color_tl} {l_pgfgo_players_ #2 _mark_line_color_tl}
+ \dim_set_eq:cc {l_pgfgo_players_ #1 _mark_line_width_dim} {l_pgfgo_players_ #2 _mark_line_width_dim}
+
+ \tl_set_eq:cc {l_pgfgo_players_ #1 _mark_fill_color_tl} {l_pgfgo_players_ #2 _mark_fill_color_tl}
+ \bool_set_eq:cc {l_pgfgo_players_ #1 _mark_fill_bool} {l_pgfgo_players_ #2 _mark_fill_bool}
+
+ \tl_set_eq:cc {l_pgfgo_players_ #1 _mark_label_color_tl} {l_pgfgo_players_ #2 _mark_label_color_tl}
+ \bool_set_eq:cc {l_pgfgo_players_ #1 _mark_sequence_bool} {l_pgfgo_players_ #2 _mark_sequence_bool}
+ \int_set_eq:cc {l_pgfgo_ #1 _mark_sequence_from_int} {l_pgfgo_ #2 _mark_sequence_from_int}
+ \cs_set_eq:cc {pgfgo_players_ #1 _mark_sequence_format:n} {pgfgo_players_ #2 _mark_sequence_format:n}
+}
+
+
+
+
+\cs_new:Nn \pgfgo_get_variables_from_current_player: {
+ \bool_if:NTF \l_pgfgo_players_black_bool {
+ \pgfgo_get_values_from_player:n{black}
+ }{
+ \bool_if:NTF \l_pgfgo_players_white_bool {
+ \pgfgo_get_values_from_player:n{white}
+ }{
+ \pgfgo_get_values_from_player:n{neutral}
+ }
+ }
+}
+
+
+
+
+\dim_new:N \l_pgfgo_players_stone_radius_dim
+\fp_new:N \l_pgfgo_players_stone_scale_fp
+
+\bool_new:N \l_pgfgo_players_stone_line_bool
+\tl_new:N \l_pgfgo_players_stone_line_color_tl
+\dim_new:N \l_pgfgo_players_stone_line_width_dim
+\fp_new:N \l_pgfgo_players_stone_line_opacity_fp
+
+\bool_new:N \l_pgfgo_players_stone_fill_bool
+\tl_new:N \l_pgfgo_players_stone_fill_color_tl
+\fp_new:N \l_pgfgo_players_stone_fill_opacity_fp
+
+\bool_new:N \l_pgfgo_players_stone_drop_shadow_bool
+\fp_new:N \l_pgfgo_players_stone_drop_shadow_angle_fp
+\dim_new:N \l_pgfgo_players_stone_drop_shadow_offset_dim
+\fp_new:N \l_pgfgo_players_stone_drop_shadow_opacity_fp
+
+\bool_new:N \l_pgfgo_players_stone_mark_bool
+
+\bool_new:N \l_pgfgo_players_stone_drop_shine_bool
+\fp_new:N \l_pgfgo_players_stone_drop_shine_angle_fp
+\fp_new:N \l_pgfgo_players_stone_drop_shine_opacity_fp
+
+\dim_new:N \l_pgfgo_players_move_label_font_size_dim
+\tl_new:N \l_pgfgo_players_move_label_color_tl
+\bool_new:N \l_pgfgo_goban_remember_move_label_bool
+
+
+\tl_new:N \l_pgfgo_players_mark_line_color_tl
+\dim_new:N \l_pgfgo_players_mark_line_width_dim
+
+\tl_new:N \l_pgfgo_players_mark_fill_color_tl
+\bool_new:N \l_pgfgo_players_mark_fill_bool
+
+\tl_new:N \l_pgfgo_players_mark_label_color_tl
+
+\bool_new:N \l_pgfgo_players_mark_sequence_bool
+\int_new:N \l_pgfgo_mark_sequence_from_int
+
+
+
+
+
+
+
+%COPIA LOS VALORES DE UN JUGADOR PARA USARLOS.
+\cs_new:Nn \pgfgo_get_values_from_player:n{
+ \dim_set_eq:Nc \l_pgfgo_players_stone_radius_dim {l_pgfgo_players_ #1 _stone_radius_dim}
+ \fp_set_eq:Nc \l_pgfgo_players_stone_scale_fp {l_pgfgo_players_ #1 _stone_scale_fp}
+
+ \bool_set_eq:Nc \l_pgfgo_players_stone_line_bool {l_pgfgo_players_ #1 _stone_line_bool}
+ \tl_set_eq:Nc \l_pgfgo_players_stone_line_color_tl {l_pgfgo_players_ #1 _stone_line_color_tl}
+ \dim_set_eq:Nc \l_pgfgo_players_stone_line_width_dim {l_pgfgo_players_ #1 _stone_line_width_dim}
+ \fp_set_eq:Nc \l_pgfgo_players_stone_line_opacity_fp {l_pgfgo_players_ #1 _stone_line_opacity_fp}
+
+ \bool_set_eq:Nc \l_pgfgo_players_stone_fill_bool {l_pgfgo_players_ #1 _stone_fill_bool}
+ \tl_set_eq:Nc \l_pgfgo_players_stone_fill_color_tl {l_pgfgo_players_ #1 _stone_fill_color_tl}
+ \fp_set_eq:Nc \l_pgfgo_players_stone_fill_opacity_fp {l_pgfgo_players_ #1 _stone_fill_opacity_fp}
+
+ \bool_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_bool {l_pgfgo_players_ #1 _stone_drop_shadow_bool}
+ \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_angle_fp {l_pgfgo_players_ #1 _stone_drop_shadow_angle_fp}
+ \dim_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_offset_dim {l_pgfgo_players_ #1 _stone_drop_shadow_offset_dim}
+ \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shadow_opacity_fp {l_pgfgo_players_ #1 _stone_drop_shadow_opacity_fp}
+
+ \bool_set_eq:Nc \l_pgfgo_players_stone_drop_shine_bool {l_pgfgo_players_ #1 _stone_drop_shine_bool}
+ \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shine_angle_fp {l_pgfgo_players_ #1 _stone_drop_shine_angle_fp}
+ \fp_set_eq:Nc \l_pgfgo_players_stone_drop_shine_opacity_fp {l_pgfgo_players_ #1 _stone_drop_shine_opacity_fp}
+
+ \dim_set_eq:Nc \l_pgfgo_players_move_label_font_size_dim {l_pgfgo_players_ #1 _move_label_font_size_dim}
+ \tl_set_eq:Nc \l_pgfgo_players_move_label_color_tl {l_pgfgo_players_ #1 _move_label_color_tl}
+ \cs_set_eq:Nc \pgfgo_players_move_label_format:n {pgfgo_players_ #1 _move_label_format:n}
+
+
+
+ \tl_set_eq:Nc \l_pgfgo_players_mark_line_color_tl {l_pgfgo_players_ #1 _mark_line_color_tl}
+ \dim_set_eq:Nc \l_pgfgo_players_mark_line_width_dim {l_pgfgo_players_ #1 _mark_line_width_dim}
+
+ \tl_set_eq:Nc \l_pgfgo_players_mark_fill_color_tl {l_pgfgo_players_ #1 _mark_fill_color_tl}
+ \bool_set_eq:Nc \l_pgfgo_players_mark_fill_bool {l_pgfgo_players_ #1 _mark_fill_bool}
+
+ \tl_set_eq:Nc \l_pgfgo_players_mark_label_color_tl {l_pgfgo_players_ #1 _mark_label_color_tl}
+ \bool_set_eq:Nc \l_pgfgo_players_mark_sequence_bool {l_pgfgo_players_ #1 _mark_sequence_bool}
+ \int_set_eq:Nc \l_pgfgo_mark_sequence_from_int {l_pgfgo_ #1 _mark_sequence_from_int}
+ \cs_set_eq:Nc \pgfgo_players_mark_sequence_format:n {pgfgo_players_ #1 _mark_sequence_format:n}
+}
+
+
+
+
+ \keys_define:nn {pgfgo / players} {
+ all .code:n = {
+ \keys_set:nn {pgfgo / players / neutral} {#1}
+ \keys_set:nn {pgfgo / players / black} {#1}
+ \keys_set:nn {pgfgo / players / white} {#1}
+ }
+ }
+
+
+
+
+
+
+
+
+
+ \def\pgfgonewplayers#1{
+ \clist_set:Nn \l_tmpa_clist {#1}
+ \clist_map_variable:NNn \l_tmpa_clist\variable{
+
+ %SIRVE PARA DETERMINAR SI UNA PIEDRA ES O NO DE ESTE JUGADOR
+ \bool_new:c {l_pgfgo_players_ \variable _bool}
+
+
+
+
+ \keys_define:ne {pgfgo / players} {\variable .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable} {##1}}}
+
+ \keys_define:ee { pgfgo / players / \variable } {
+ stone .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / stone} {##1}},
+ move .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / move} {##1}},
+ mark .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / mark} {##1}},
+ territory .code:n = {\exp_not:N\keys_set:nn {pgfgo / players / \variable / territory} {##1}},
+ }
+
+
+
+ %----------------------------------------------------------------------------------------------------
+ %PIEDRA
+ \dim_new:c {l_pgfgo_players_ \variable _stone_radius_dim}
+ \fp_new:c {l_pgfgo_players_ \variable _stone_scale_fp}
+
+ \keys_define:ee { pgfgo / players / \variable / stone } {
+ prisoner .code:n = {\keys_set:nn { pgfgo / players / \variable / stone / fill } {opacity = 0.5}},
+ line .code:n = {\keys_set:nn { pgfgo / players / \variable / stone / line } {##1}},
+ fill .code:n = {\keys_set:nn { pgfgo / players / \variable / stone / fill } {##1}},
+ radius .code:n = {\dim_set:cn{l_pgfgo_players_ \variable _stone_radius_dim}{##1}},
+ radius .initial:n = {5.5pt},
+ scale .code:n = {\fp_set:cn{l_pgfgo_players_ \variable _stone_scale_fp}{##1}},
+ scale .initial:n = {1},
+ drop~shadow .code:n = {\keys_set:nn{ pgfgo / players / \variable / stone / drop~shadow }{##1}},
+ drop~shine .code:n = {\keys_set:nn{ pgfgo / players / \variable / stone / drop~shine }{##1}},
+ mark .groups:n = { external },
+ black .groups:n = { external },
+ b .groups:n = { external },
+ white .groups:n = { external },
+ w .groups:n = { external },
+ neutral .groups:n = { external },
+ n .groups:n = { external },
+ forget .groups:n = { external },
+ remember .groups:n = { external }
+ }
+
+
+ \bool_new:c {l_pgfgo_players_ \variable _stone_line_bool}
+ \bool_set_true:c {l_pgfgo_players_ \variable _stone_line_bool}
+ \tl_new:c {l_pgfgo_players_ \variable _stone_line_color_tl}
+ \dim_new:c {l_pgfgo_players_ \variable _stone_line_width_dim}
+ \fp_new:c {l_pgfgo_players_ \variable _stone_line_opacity_fp}
+
+ \keys_define:ee { pgfgo / players / \variable / stone / line } {
+ true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_line_bool}},
+ false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_line_bool}},
+ color .code:n = {\exp_not:N\tl_set:cn {l_pgfgo_players_ \variable _stone_line_color_tl}{##1}},
+ color .initial:n = {black},
+ width .code:n = {\exp_not:N\dim_set:cn {l_pgfgo_players_ \variable _stone_line_width_dim}{##1}},
+ width .initial:n = {0.7pt},
+ opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_line_opacity_fp}{##1}},
+ opacity .initial:n = {1}
+ }
+
+
+
+ \bool_new:c {l_pgfgo_players_ \variable _stone_fill_bool}
+ \bool_set_true:c {l_pgfgo_players_ \variable _stone_fill_bool}
+ \tl_new:c {l_pgfgo_players_ \variable _stone_fill_color_tl}
+ \fp_new:c {l_pgfgo_players_ \variable _stone_fill_opacity_fp}
+
+ \keys_define:ee { pgfgo / players / \variable / stone / fill } {
+ true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_fill_bool}},
+ false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_fill_bool}},
+ color .code:n = {\exp_not:N\tl_set:cn {l_pgfgo_players_ \variable _stone_fill_color_tl}{##1}},
+ color .initial:n = {gray},
+ opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_fill_opacity_fp}{##1}},
+ opacity .initial:n = {1}
+ }
+
+
+
+ \bool_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool}
+ \bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool}
+ \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_angle_fp}
+ \dim_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_offset_dim}
+ \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shadow_opacity_fp}
+
+ \keys_define:ee { pgfgo / players / \variable / stone / drop~shadow } {
+ true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool}},
+ false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shadow_bool}},
+ angle .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_drop_shadow_angle_fp}{##1}},
+ angle .initial:n = {0},
+ offset .code:n = {\exp_not:N\dim_set:cn {l_pgfgo_players_ \variable _stone_drop_shadow_offset_dim}{##1}},
+ offset .initial:n = {0pt},
+ opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_drop_shadow_opacity_fp}{##1}},
+ opacity .initial:n = {0.5}
+ }
+
+
+ \bool_new:c {l_pgfgo_players_ \variable _stone_drop_shine_bool}
+ \bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shine_bool}
+ \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shine_angle_fp}
+ \fp_new:c {l_pgfgo_players_ \variable _stone_drop_shine_opacity_fp}
+
+ \keys_define:ee { pgfgo / players / \variable / stone / drop~shine } {
+ true .code:n = {\exp_not:N\bool_set_true:c {l_pgfgo_players_ \variable _stone_drop_shine_bool}},
+ false .code:n = {\exp_not:N\bool_set_false:c {l_pgfgo_players_ \variable _stone_drop_shine_bool}},
+ angle .code:n = {\exp_not:N\tl_set:cn {l_pgfgo_players_ \variable _stone_drop_shine_angle_fp}{##1}},
+ angle .initial:n = {0},
+ opacity .code:n = {\exp_not:N\fp_set:cn {l_pgfgo_players_ \variable _stone_drop_shine_opacity_fp}{##1}},
+ opacity .initial:n = {1}
+ }
+
+
+ %--------------------------------------------------------------------------------------------
+ %MOVE
+ \keys_define:ee { pgfgo / players / \variable / move } {
+ label .code:n = {\keys_set:nn { pgfgo / players / \variable / move / label } {##1}},
+ label .groups:n = {label},
+ from .groups:n = {external},
+ black .groups:n = {external},
+ b .groups:n = {external},
+ white .groups:n = {external},
+ w .groups:n = {external},
+ remember .groups:n = {external},
+ forget .groups:n = {external},
+ }
+
+ \dim_new:c {l_pgfgo_players_ \variable _move_label_font_size_dim}
+ \tl_new:c {l_pgfgo_players_ \variable _move_label_color_tl}
+
+ \keys_define:ee { pgfgo / players / \variable / move / label } {
+ font~size .code:n = {\exp_not:N\dim_set:cn{l_pgfgo_players_ \variable _move_label_font_size_dim}{##1}},
+ font~size .initial:n = {8pt},
+ color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _move_label_color_tl}{##1}},
+ color .initial:n = {black},
+ forget .code:n = {\bool_set_false:N \l_pgfgo_goban_remember_move_label_bool},
+ remember .code:n = {\bool_set_true:N \l_pgfgo_goban_remember_move_label_bool},
+ format .choice:,
+ format / arabic .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_arabic:n},
+ format / alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_alph:n},
+ format / Alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_Alph:n},
+ format / roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_roman:n},
+ format / Roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _move_label_format:n}\exp_not:N\int_to_Roman:n},
+ format .initial:n = {arabic},
+ }
+
+
+
+ %--------------------------------------------------------------------------------------------
+ %MARK
+
+
+
+ \keys_define:ee { pgfgo / players / \variable / mark } {
+ line .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / line } {##1}},
+ fill .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / fill } {##1}},
+ label .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / label } {##1}},
+ sequence .code:n = {\keys_set:nn { pgfgo / players / \variable / mark / sequence } {##1}},
+ sequence .default:n = {from = 1},
+ custom .code:n = {\keys_set:nn { pgfgo } {mark = { custom = { ##1 }}}},
+ unknown .code:n = {
+ \keys_set:nn {pgfgo / mark}{\l_keys_key_str}
+ }
+ }
+
+
+
+ \tl_new:c {l_pgfgo_players_ \variable _mark_line_color_tl}
+ \dim_new:c {l_pgfgo_players_ \variable _mark_line_width_dim}
+
+ \keys_define:ee { pgfgo / players / \variable / mark / line } {
+ color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_line_color_tl}{##1}},
+ color .initial:n = {black},
+ width .code:n = {\dim_set:cn{l_pgfgo_players_ \variable _mark_line_width_dim}{##1}},
+ width .initial:n = {1pt}
+ }
+
+
+ \bool_new:c {l_pgfgo_players_ \variable _mark_fill_bool}
+ \bool_set_false:c {l_pgfgo_players_ \variable _mark_fill_bool}
+ \tl_new:c {l_pgfgo_players_ \variable _mark_fill_color_tl}
+
+ \keys_define:ee { pgfgo / players / \variable / mark / fill } {
+ true .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_fill_bool}},
+ false .code:n = {\bool_set_false:c {l_pgfgo_players_ \variable _mark_fill_bool}},
+ color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_fill_color_tl}{##1}},
+ color .initial:n = {gray!50!black}
+ }
+
+
+ \tl_new:c {l_pgfgo_players_ \variable _mark_label_color_tl}
+
+ \keys_define:ee { pgfgo / players / \variable / mark / label } {
+ color .code:n = {\tl_set:cn{l_pgfgo_players_ \variable _mark_label_color_tl}{##1}},
+ color .initial:n = {black},
+ format .choice:,
+ format / arabic .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_arabic:n},
+ format / alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_alph:n},
+ format / Alph .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_Alph:n},
+ format / roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_roman:n},
+ format / Roman .code:n = {\exp_not:N\cs_set_eq:cN{pgfgo_players_ \variable _mark_sequence_format:n}\exp_not:N\int_to_Roman:n},
+ format .initial:n = {arabic},
+ }
+
+ \bool_new:c {l_pgfgo_players_ \variable _mark_sequence_bool}
+ \int_new:c {l_pgfgo_ \variable _mark_sequence_from_int}
+
+ \keys_define:ee { pgfgo / players / \variable / mark / sequence } {
+ true .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}},
+ false .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}},
+ use .code:n = {\bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}},
+ from .code:n = {
+ \bool_set_true:c {l_pgfgo_players_ \variable _mark_sequence_bool}
+ \int_set:cn {l_pgfgo_ \variable _mark_sequence_from_int} {##1}
+ },
+ }
+ }
+ }
+
+
+
+%LOS JUGADORES REALES. TODO SE ASIGNA ACA
+\pgfgonewplayers{neutral, black, white}
+\pgfgochooseplayers{neutral}{black}{white}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-players.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-profiles.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-profiles.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-profiles.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,463 @@
+\ExplSyntaxOn
+\prop_new:N \g_pgfgo_profile_profile_prop
+
+\prop_new:N \g_pgfgo_profile_player_prop
+\prop_new:N \g_pgfgo_profile_goban_prop
+
+
+
+\cs_new:Nn \pgfgo_profile_use_goban:n {
+ \pgfgo_set:e{goban = {\prop_item:Nn\g_pgfgo_profile_goban_prop {#1}}}
+}
+
+\cs_new:Nn \pgfgo_profile_use_neutral:n {\pgfgo_set:e{players = {neutral = {\prop_item:Nn\g_pgfgo_profile_player_prop {#1}}}}}
+\cs_new:Nn \pgfgo_profile_use_black:n {\pgfgo_set:e{players = {black = {\prop_item:Nn\g_pgfgo_profile_player_prop {#1}}}}}
+\cs_new:Nn \pgfgo_profile_use_white:n {\pgfgo_set:e{players = {white = {\prop_item:Nn\g_pgfgo_profile_player_prop {#1}}}}}
+
+\cs_new:Nn \pgfgo_profile_use_players:nnn {
+ \pgfgo_profile_use_neutral:n {#1}
+ \pgfgo_profile_use_black:n {#2}
+ \pgfgo_profile_use_white:n {#3}
+}
+
+
+
+
+
+
+
+
+\keys_define:nn {pgfgo / profiles / goban} {
+ from .tl_set:N = \l_pgfgo_profile_goban_from_tl,
+ append .code:n = {\keys_set:nn {pgfgo / profiles / goban} {from = { \l_pgfgo_profile_define_goban_name_tl }}}
+}
+
+
+
+\DeclareDocumentCommand{\pgfgodefinegoban}{O{}mm}{
+ \tl_clear:N \l_tmpa_tl %CONSTRUCCION DE LA KEY
+ \tl_set:Nn\l_pgfgo_profile_define_goban_name_tl {#2} %OJO PORQUE SE CONSERVA EL NOMBRE
+ \keys_set:nn {pgfgo / profiles / goban} {#1}
+ \tl_if_empty:NF \l_pgfgo_profile_goban_from_tl{
+ \tl_set:Nf \l_tmpa_tl {\prop_item:Ne\g_pgfgo_profile_goban_prop {\l_pgfgo_profile_goban_from_tl},}
+ }
+ \prop_gput:Nno\g_pgfgo_profile_goban_prop {#2} {\l_tmpa_tl, #3}
+}
+
+
+
+\keys_define:nn {pgfgo / profiles / player} {
+ from .tl_set:N = \l_pgfgo_profile_player_from_tl,
+ append .code:n = {\keys_set:nn {pgfgo / profiles / player} {from = { \l_pgfgo_profile_define_player_name_tl }}}
+}
+
+
+\DeclareDocumentCommand{\pgfgodefineplayer}{O{}mm}{
+ \tl_clear:N \l_tmpa_tl %CONSTRUCCION DE LA KEY
+ \tl_set:Nn\l_pgfgo_profile_define_player_name_tl {#2} %OJO PORQUE SE CONSERVA EL NOMBRE
+ \keys_set:nn {pgfgo / profiles / player} {#1}
+ \tl_if_empty:NF \l_pgfgo_profile_player_from_tl{
+ \tl_set:Nf \l_tmpa_tl {\prop_item:Ne\g_pgfgo_profile_player_prop {\l_pgfgo_profile_player_from_tl},}
+ }
+ \prop_gput:Nno\g_pgfgo_profile_player_prop {#2} {\l_tmpa_tl, #3}
+}
+
+
+
+\cs_new:Nn\pgfgo_profile_use_profile:n{
+ \pgfgo_profile_use_goban:n {#1}
+ \pgfgo_profile_use_neutral:n{#1-neutral}
+ \pgfgo_profile_use_black:n {#1-black}
+ \pgfgo_profile_use_white:n {#1-white}
+}
+
+
+
+
+
+
+
+\let\pgfgouseprofile \pgfgo_profile_use_profile:n %CARGA TABLERO, PIEDRAS con sufijo -goban, white, black, neutral
+\let\pgfgousegoban \pgfgo_profile_use_goban:n %CARGA GOBAN
+\let\pgfgouseplayers \pgfgo_profile_use_players:nnn %CARGA TODOS LOS JUGADORES {neutral}{black}{white}
+\let\pgfgouseneutral \pgfgo_profile_use_neutral:n %CARGA UN PERFIL PARA LOS NEUTROS
+\let\pgfgouseblack \pgfgo_profile_use_black:n %CARGA UN PERFIL PARA LAS NEGRAS
+\let\pgfgousewhite \pgfgo_profile_use_white:n %CARGA UN PERFIL PARA LAS BLANCAS
+
+
+
+\ExplSyntaxOff
+
+
+
+
+
+
+
+\definecolor{waingoban}{HTML}{493739}
+\definecolor{waingrid}{HTML}{FAE0B2}
+\definecolor{wainblackfill}{HTML}{4B4B4D} %PIEDRA NEGRA
+\definecolor{wainshade}{HTML}{E6E7E8}
+\definecolor{wainwhitefill}{HTML}{FEFEFE} %PIEDRA BLACA
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%------------DEFAULT
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\pgfgodefinegoban{default}{
+ use i = true,
+ background = {
+ line = {
+ true,
+ color = black,
+ opacity = 1,
+ width = 0.75pt,
+ },
+ fill = {
+ true,
+ color = white,
+ opacity = 1
+ },
+ rounded corners = 1pt,
+ sep = 0.825em,
+ drop shadow = false,
+ },
+ grid = {
+ line = {
+ color = black,
+ opacity = 1,
+ width = 0.55pt,
+ },
+ sep = 1.25em,
+ },
+ label = {
+ text color = black,
+ false,
+ sep = 0.35cm},
+ scale = 1,
+ partial = {false},
+ size = 9
+}
+
+
+
+\pgfgodefineplayer{default-neutral}{
+ stone = {
+ line = {
+ true,
+ color = black,
+ width = 0.7pt,
+ opacity = 1
+ },
+ fill = {
+ true,
+ color = gray,
+ opacity = 1
+ },
+ radius = 5.5pt,
+ scale = 1,
+ drop shadow = false,
+ drop shine = false,
+ },
+ move = {
+ label = {
+ font size = 8pt,
+ color = black,
+ format = arabic
+ }
+ },
+ mark = {
+ line = {
+ color = black,
+ width = 1pt
+ },
+ fill = {
+ false,
+ color = black
+ },
+ label = {
+ color = black
+ },
+ }
+}
+
+
+
+
+\pgfgodefineplayer[from = default-neutral]{default-white}{
+ stone = {fill = {color = white}}
+}
+
+
+
+\pgfgodefineplayer[from = default-neutral]{default-black}{
+ stone = {fill = {color = black}},
+ move = {
+ label = {
+ color = white,
+ format = arabic,
+ }
+ },
+ mark = {
+ line = {color = white},
+ fill = {false},
+ label = {color = white},
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%---------------WAIN
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\definecolor{waingoban}{HTML}{402A2D}
+\definecolor{waingoban-s}{HTML}{493739}
+\definecolor{waingrid}{HTML}{FAE0B2}
+\definecolor{wainblack}{HTML}{4B4B4D} %PIEDRA NEGRA
+\definecolor{wainshade}{HTML}{E6E7E8}
+\definecolor{wainwhite}{HTML}{FEFEFE} %PIEDRA BLACA
+
+
+
+\pgfgodefinegoban{wain}{
+ background = {
+ fill = {
+ color = waingoban,
+ opacity = 1},
+ line = {
+ color = waingrid,
+ opacity = 1}},
+ grid = {
+ line = {
+ color = waingrid,
+ width = 1pt}
+ },
+ label = {text color = waingoban}
+}
+
+
+
+
+
+\pgfgodefineplayer{wain-neutral}{
+ stone = {
+ line = {
+ true,
+ color = waingrid,
+ width = 0.2pt,
+ opacity = 1,
+ },
+ fill = {
+ true,
+ color = wainblack!50!wainwhite,
+ opacity = 1,
+ },
+ radius = 0.17cm,
+ scale = 1,
+ drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45},
+ drop shine = {true, angle = 45}
+ },
+ move = {
+ label = {
+ font size = 0.5em,
+ color = black,
+ format = arabic,
+ }
+ },
+ mark = {
+ line = {
+ color = waingoban,
+ width = 1pt,
+ },
+ fill = {false},
+ label = {
+ color = waingoban,
+ format = arabic
+ },
+ }
+}
+
+
+
+
+
+\pgfgodefineplayer[from = wain-neutral]{wain-white}{
+ stone = {
+ fill = {
+ color = wainwhite
+ }
+ },
+ move = {
+ label = {
+ color = waingoban
+ }
+ },
+ mark = {
+ line = {
+ color = waingoban,
+ },
+ label = {color = waingoban}
+ }
+}
+
+
+
+
+
+\pgfgodefineplayer[from = wain-neutral]{wain-black}{
+ stone = {
+ fill = {
+ color = wainblack
+ }
+ },
+ move = {
+ label = {
+ color = waingrid
+ }
+ },
+ mark = {
+ line = {
+ color = waingrid,
+ },
+ label = {color = waingrid}
+ }
+}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%---------------PGFGO
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+\pgfgodefinegoban{pgfgo}{
+ background = {
+ fill = {
+ color = pgfgo,
+ opacity = 1},
+ line = {
+ color = pgfgo!10!black,
+ opacity = 1},
+ drop shadow},
+ grid = {
+ line = {
+ color = pgfgo!10!black,
+ width = 1pt}},
+ label = {
+ text color = black
+ }
+}
+
+
+
+\pgfgodefineplayer{pgfgo-neutral}{
+ stone = {
+ radius = 0.19cm,
+ line = {
+ true,
+ color = black,
+ width = 0.3pt,
+ opacity = 1,
+ },
+ fill = {
+ true,
+ color = gray,
+ opacity = 1,
+ },
+ radius = 0.17cm,
+ scale = 1,
+ drop shadow = {true, opacity = 0.5, offset = 1pt, angle = -45},
+ drop shine = {true, angle = 45}
+ },
+ move = {
+ label = {
+ font size = 0.5em,
+ color = black,
+ format = arabic,
+ }
+ },
+ mark = {
+ line = {
+ color = black,
+ width = 1pt,
+ },
+ fill = {false},
+ label = {
+ color = black,
+ format = arabic
+ }
+ }
+}
+
+\pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-white}{
+ stone = {
+ fill = {
+ color = wainwhite
+ }
+ },
+ move = {
+ label = {
+ color = black
+ }
+ },
+ mark = {
+ line = {color = black},
+ fill = {color = white},
+ label = {color = black}
+ }
+}
+
+
+
+
+\pgfgodefineplayer[from = pgfgo-neutral]{pgfgo-black}{
+ stone = {
+ fill = {
+ color = wainblack
+ }
+ },
+ move = {
+ label = {
+ color = pgfgo
+ }
+ },
+ mark = {
+ line = {
+ color = pgfgo,
+ },
+ label = {color = black}
+ }
+}
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%PGFGOSMOOTH
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\pgfgodefinegoban[from = pgfgo]{pgfgosmooth}{
+ background = {line = false, rounded corners = 8pt, drop shadow},
+ grid = {line = {opacity = 0.1}}
+}
+
+
+
+
+\pgfgodefineplayer[from = pgfgo-neutral]{pgfgosmooth-neutral}{
+ stone = {
+ line = false,
+ radius = 0.19cm,
+ drop shine = {opacity = 0.5}}
+ }
+\pgfgodefineplayer[from = pgfgo-black]{pgfgosmooth-black}{stone = {line = false, drop shine = {opacity = 0.5}}}
+
+\pgfgodefineplayer[from = pgfgo-white]{pgfgosmooth-white}{stone = {line = false}}
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-profiles.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-remember.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-remember.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-remember.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,41 @@
+%REMEMBER
+\ExplSyntaxOn
+
+\tl_new:N\l_pgfgo_goban_elements_stack_tl
+\seq_new:N\l_pgfgo_goban_elements_stack_seq
+
+\bool_set_false:N\l_pgfgo_goban_resume_bool
+\bool_set_false:N\l_pgfgo_goban_remember_new_bool
+\bool_set_false:N\l_pgfgo_goban_remember_add_bool
+
+
+\bool_set_false:N\l_pgfgo_goban_remember_stone_bool
+\bool_set_false:N\l_pgfgo_goban_remember_prisoner_bool%useless
+\bool_set_false:N\l_pgfgo_goban_remember_move_bool
+\bool_set_false:N\l_pgfgo_goban_remember_mark_bool
+\bool_set_false:N\l_pgfgo_goban_remember_label_bool
+\bool_set_false:N\l_pgfgo_goban_remember_territory_bool
+
+
+
+\cs_new:Nn \pgfgo_goban_remember_all: {
+ \bool_set_true:N\l_pgfgo_goban_remember_stone_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_prisoner_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_move_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_move_label_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_mark_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_label_bool
+ \bool_set_true:N\l_pgfgo_goban_remember_territory_bool
+}
+
+\cs_new:Nn \pgfgo_goban_remember_nothing: {
+ \bool_set_false:N\l_pgfgo_goban_remember_stone_bool
+ \bool_set_false:N\l_pgfgo_goban_remember_prisoner_bool
+ \bool_set_false:N\l_pgfgo_goban_remember_move_bool
+ \bool_set_false:N\l_pgfgo_goban_remember_move_label_bool
+ \bool_set_false:N\l_pgfgo_goban_remember_mark_bool
+ \bool_set_false:N\l_pgfgo_goban_remember_label_bool
+ \bool_set_false:N\l_pgfgo_goban_remember_territory_bool
+}
+
+\ExplSyntaxOff
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-remember.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-shadow-shine.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-shadow-shine.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-shadow-shine.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,3 @@
+\ExplSyntaxOn
+
+\ExplSyntaxOff
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-shadow-shine.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-stones.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-stones.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-stones.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,433 @@
+\ExplSyntaxOn
+
+
+
+%STONE
+\bool_set_false:N\l_pgfgo_stone_mark_bool
+
+%MOVE
+\int_new:N\l_pgfgo_move_from_int
+\int_set:Nn\l_pgfgo_move_from_int{1}
+\int_new:N\l_pgfgo_move_current_int
+\int_set:Nn\l_pgfgo_move_current_int{1}
+%MIDE LOS INTERCALOS ENTRE LOS MOVIMIENTOS
+\bool_set_true:N\l_pgfgo_move_player_black_bool
+\bool_set_false:N\l_pgfgo_move_player_white_bool
+
+
+\tl_new:N \l_pgfgo_stones_mark_tl
+
+
+\bool_set_false:N\l_pgfgo_prisoner_bool
+
+
+\keys_define:nn { pgfgo / stone }{
+ forget .code:n = {\bool_set_false:N\l_pgfgo_goban_remember_stone_bool},
+ forget .groups:n = {preset},
+
+ remember .code:n = {\bool_set_true:N\l_pgfgo_goban_remember_stone_bool},
+ remember .groups:n = {preset},
+
+ black .code:n = {
+ \bool_set_true:N \l_pgfgo_players_black_bool
+ \bool_set_false:N \l_pgfgo_players_white_bool
+ \bool_set_false:N \l_pgfgo_players_neutral_bool
+ },
+ black .groups:n = { player-id },
+ b .code:n = {\keys_set:nn{ pgfgo / stone }{black}},
+ b .groups:n = { player-id },
+
+
+ white .code:n = {
+ \bool_set_true:N \l_pgfgo_players_white_bool
+ \bool_set_false:N \l_pgfgo_players_black_bool
+ \bool_set_false:N \l_pgfgo_players_neutral_bool
+ },
+ white .groups:n = { player-id },
+ w .code:n = {\keys_set:nn{ pgfgo / stone }{white}},
+ w .groups:n = { player-id },
+
+ neutral .code:n = {
+ \bool_set_false:N \l_pgfgo_players_white_bool
+ \bool_set_false:N \l_pgfgo_players_black_bool
+ \bool_set_true:N \l_pgfgo_players_neutral_bool
+ },
+ neutral .groups:n = { player-id },
+ n .code:n = {\keys_set:nn{ pgfgo / stone }{white}},
+ n .groups:n = { player-id },
+
+ mark .code:n = {
+ \pgfgo_mark:nee{#1}{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}
+ },
+
+ mark .groups:n = {mark}
+}
+
+
+
+
+
+\keys_define:nn { pgfgo / move} {
+ forget .code:n = {\bool_set_false:N\l_pgfgo_goban_remember_move_bool},
+ forget .groups:n = {preset, local},
+
+ remember .code:n = {
+ \bool_set_true:N\l_pgfgo_goban_remember_move_bool},
+ remember .groups:n = {preset, local},
+
+
+ black .code:n = {
+ \bool_set_true:N\l_pgfgo_players_black_bool
+ \bool_set_false:N\l_pgfgo_players_white_bool
+ },
+ black .groups:n = {player-id},
+ b .code:n = {\keys_set:nn{ pgfgo / move }{black}},
+ b .groups:n = { player-id, local },
+
+
+ white .code:n = {
+ \bool_set_false:N\l_pgfgo_players_black_bool
+ \bool_set_true:N\l_pgfgo_players_white_bool
+ },
+ white .groups:n = { player-id },
+ w .code:n = {\keys_set:nn{ pgfgo / move }{white}},
+ w .groups:n = { player-id, local },
+
+
+ from .code:n = {
+ \int_set:Nn\l_pgfgo_move_from_int{#1}
+ \int_set:Nn\l_pgfgo_move_current_int{\int_use:N\l_pgfgo_move_from_int}
+ },
+ from .groups:n = {first stone, preset, local},
+}
+
+\keys_set:nn { pgfgo / move} {black}
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%----------------------------------------PIEDRA-------------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\cs_new:Nn \pgfgo_stones_shine_default: {
+ \pgfscope
+ \pgfsetfillopacity{\fp_use:N\l_pgfgo_players_stone_drop_shine_opacity_fp}
+ \pgftransformrotate{-45}
+ \pgftransformrotate{\l_pgfgo_players_stone_drop_shine_angle_fp}
+ \pgfsetfillcolor{wainshade}
+ \fp_set:Nn\l_tmpa_fp{0.8}
+ \pgfpathmoveto{\pgfpointpolar{135}{\fp_use:N\l_tmpa_fp * \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp}}
+ \pgfpatharc{135}{190}{\fp_use:N\l_tmpa_fp * \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp}
+ \pgfpathquadraticcurveto{\pgfpointpolar{135}{\fp_use:N\l_tmpa_fp * \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp}}{\pgfpointpolar{80}{\fp_use:N\l_tmpa_fp * \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp}}
+ \pgfpatharc{80}{135}{\fp_use:N\l_tmpa_fp * \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp}
+ \pgfpathclose
+ \pgfusepath{fill}
+
+ \pgfsetfillcolor{wainshade}
+ \pgftransformshift{\pgfpointpolar{-45}{\fp_use:N\l_tmpa_fp * \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp}}
+ \pgftransformrotate{45}
+ \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0.04cm}{0cm}}{\pgfpoint{0cm}{0.01cm}}
+ \pgfusepath{fill}
+ \endpgfscope
+}
+
+
+
+
+
+
+\cs_set:Nn\pgfgo_stone_set_render_options:{
+ \pgfonlayer{pgfgo_layer_stone}
+ \pgfsetfillcolor{\l_pgfgo_players_stone_fill_color_tl}
+ \pgfsetfillopacity{\fp_use:N\l_pgfgo_players_stone_fill_opacity_fp}
+ \pgfsetstrokecolor{\l_pgfgo_players_stone_line_color_tl}
+ \pgfsetstrokeopacity{\fp_use:N\l_pgfgo_players_stone_line_opacity_fp}
+ \pgfsetlinewidth{\l_pgfgo_players_stone_line_width_dim * \fp_use:N \l_pgfgo_players_stone_scale_fp}
+ \endpgfonlayer
+}
+
+
+\cs_set:Nn\pgfgo_stone_default_shape:nn{
+ %SOMBRA
+ \bool_if:NT\l_pgfgo_players_stone_drop_shadow_bool{
+ \pgfscope
+ \pgfsetfillopacity{\fp_use:N\l_pgfgo_players_stone_drop_shadow_opacity_fp}
+ \pgfsetfillcolor{black}
+ \pgftransformshift{\pgfpointpolar{\fp_use:N\l_pgfgo_players_stone_drop_shadow_angle_fp}{\dim_use:N\l_pgfgo_players_stone_drop_shadow_offset_dim}}
+ \pgfpathcircle{
+ \pgfpointxy{#1}{#2}}{
+ \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp
+ }
+ \pgfusepath{fill}
+ \pgftransformreset
+ \endpgfscope
+ }
+ %PIEDRA
+ \pgfpathcircle{
+ \pgfpointxy{#1}{#2}}{
+ \l_pgfgo_players_stone_radius_dim * \fp_to_decimal:N\l_pgfgo_players_stone_scale_fp
+ }
+ \pgfusepath{\bool_if:NT\l_pgfgo_players_stone_line_bool{stroke},\bool_if:NT\l_pgfgo_players_stone_fill_bool{fill}}
+ %SHINE
+ \bool_if:NT \l_pgfgo_players_stone_drop_shine_bool {
+ \pgfscope
+ \pgftransformshift{\pgfpointxy{#1}{#2}}
+ \pgfgo_stones_shine_default:
+ \pgftransformreset
+ \endpgfscope
+ }
+}
+
+
+
+
+\cs_set:Nn\pgfgo_stone_render_shape:nn{
+ \pgfonlayer{pgfgo_layer_stone}
+ \pgfgo_stone_default_shape:nn{#1}{#2}
+ \endpgfonlayer
+}
+
+
+
+
+
+
+\cs_set_protected:Npn\pgfgo_stone:nnn #1#2#3 {
+ \group_begin:
+ \pgfgo_parse_coordinate:n {#2}
+
+ \keys_set_groups:nnn{ pgfgo / stone }{ player-id }{#1}
+ \bool_if:NTF \l_pgfgo_players_black_bool
+ {\keys_set_exclude_groups:nnn{ pgfgo / players / black / stone } { external } {#1}}
+ {\bool_if:NTF \l_pgfgo_players_white_bool
+ {\keys_set_exclude_groups:nnn{ pgfgo / players / white / stone } { external } {#1}}
+ {\keys_set_exclude_groups:nnn{ pgfgo / players / neutral / stone } { external } {#1}}}
+ \keys_set_groups:nnn{ pgfgo / stone }{ at-end }{#1}
+ \pgfgo_get_variables_from_current_player:
+
+
+ \pgfgo_stone_set_render_options:
+
+ \pgfgo_stone_render_shape:nn{#2}{#3}
+
+ \tl_set:Nn\l_pgfgo_parsed_x_coordinate_tl{#2}
+ \tl_set:Nn\l_pgfgo_parsed_y_coordinate_tl{#3}
+
+ %-----MARCAS-------------------------
+
+ \pgfscope
+ \keys_set_groups:nnn {pgfgo / stone} {mark} {#1}
+ \endpgfscope
+
+ \group_end:
+}
+\cs_generate_variant:Nn \pgfgo_stone:nnn {Vnn}
+
+\cs_new:Nn \pgfgo_stone:nn {\pgfgo_stone:nnn{#1}#2}
+\cs_generate_variant:Nn\pgfgo_stone:nn {nV}
+\cs_generate_variant:Nn\pgfgo_stone:nn {nf}
+
+
+
+\DeclareDocumentCommand{\stone}{O{}m}{
+ \keys_set_groups:nnn{ pgfgo / stone }{ preset }{#1}
+ \bool_set_false:N \l_pgfgo_players_white_bool
+ \bool_set_false:N \l_pgfgo_players_black_bool
+ \bool_set_true:N \l_pgfgo_players_neutral_bool
+ \regex_extract_all:NnN\l_pgfgo_coordinate_parser_subset_AN_regex{#2}\l_tmpa_seq
+ \seq_if_empty:NF \l_tmpa_seq {
+ \pgfgo_coordinate_parser_AN:ff{\seq_item:Nn \l_tmpa_seq {2}}{\seq_item:Nn \l_tmpa_seq {3}} %Devuelve \l_pgfgo_coordinate_parser_inmediate_seq
+ %RECORDAR LAS PIEDAS
+ \bool_if:NT \l_pgfgo_goban_remember_stone_bool {
+ \seq_gput_right:Ne \l_pgfgo_goban_elements_stack_seq {
+ \exp_not:N\pgfgo_stone:nf{#1}{\seq_item:Nn \l_pgfgo_coordinate_parser_inmediate_seq {1}}}
+ }
+
+ \pgfgo_stone:nf{#1}{\seq_item:Nn \l_pgfgo_coordinate_parser_inmediate_seq {1}}
+ }
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%----------------------------------------PIEDRAS------------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\cs_new:Nn \pgfgo_stones_parsed:nn {
+ \clist_map_variable:nNn {#2} \variable {\pgfgo_stone:nV{#1}\variable}
+}
+
+
+
+
+
+
+
+
+\cs_set:Npn\pgfgo_stones:nn #1#2 {
+ \group_begin:
+
+ \pgfgo_coordinate_parser_from_pgfgonce_to_items:n{#2} %Devuelve \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+
+ \keys_set_groups:nnn{ pgfgo / stone }{ preset }{#1}
+ %RECORDAR LAS PIEDAS
+ \clist_set_from_seq:NN \l_tmpa_clist\l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+ \bool_if:NT \l_pgfgo_goban_remember_stone_bool {
+ \seq_gput_right:Ne \l_pgfgo_goban_elements_stack_seq {\exp_not:N\pgfgo_stones_parsed:nn{#1}{\l_tmpa_clist}}
+ }
+
+ \seq_map_variable:NNn \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq\variable {
+ %DIBUJAR LAS PIEDRAS
+ \pgfgo_stone:nV{#1}\variable
+ }
+ \group_end:
+}
+
+\cs_generate_variant:Nn\pgfgo_stones:nn{nx}
+
+
+
+
+
+
+
+
+\NewDocumentCommand{\stones}{O{}m}{\pgfgo_stones:nn {#1}{#2}}
+
+%\let\stone\stones
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%----------------------------------------PRISIONEROS--------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NewDocumentCommand{\prisoners}{O{}m}{\stones[prisoner, #1]{#2}}
+\NewDocumentCommand{\prisoner}{O{}m}{\stone[prisoner, #1]{#2}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%-------------------------------------------MOVE------------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+\cs_set_protected:Npn\pgfgo_move:nnnn #1#2#3#4 {
+ \group_begin:
+ \pgfgo_get_variables_from_current_player:
+
+ \tl_set:Nn\l_pgfgo_move_x_int{#3}
+ \tl_set:Nn\l_pgfgo_move_y_int{#4}
+
+
+ %CALCULA Y ALTERNA LOS COLORES
+ \bool_if:NT\l_pgfgo_players_black_bool{
+ \keys_set_exclude_groups:nnn {pgfgo / players / black / move} {external} {#2}
+ \pgfgo_get_variables_from_current_player:
+ \pgfgo_stone:nnn{black}{#3}{#4}
+ }
+
+ \bool_if:NT\l_pgfgo_players_white_bool{
+ \keys_set_exclude_groups:nnn {pgfgo / players / white / move} {external} {#2}
+ \pgfgo_get_variables_from_current_player:
+ \pgfgo_stone:nnn{white}{#3}{#4}
+ }
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %----------------------LABEL-----------------------%
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+ \tl_set:Ne \l_tmpb_tl {\pgfgo_players_move_label_format:n{\l_pgfgo_move_current_int}}
+ \tl_set:Nn\l_tmpa_tl{0.45em}
+ %Ajustar el tamano de acuerdo a la cantidad de caracteres <--------
+ \regex_count:nVN{[a-zA-Z\d]}\l_tmpb_tl\l_tmpa_int
+ \int_case:nn{\l_tmpa_int}{
+ {1}{\tl_set:Nn\l_tmpa_tl{1em}}
+ {2}{\tl_set:Nn\l_tmpa_tl{0.65em}}
+ {3}{\tl_set:Nn\l_tmpa_tl{0.45em}}
+ }
+ %------------------------------------------------------------------
+
+ \IfBooleanT{#1}{
+ \pgfscope
+ %TOMA EL COLOR CALCULADO ARRIBA
+ \pgfsetcolor{\l_pgfgo_players_move_label_color_tl}
+ \pgftext[at=\pgfpointxy{\l_pgfgo_move_x_int}{\l_pgfgo_move_y_int}]{
+ \bfseries\fontsize{ \l_tmpa_tl }{0pt}\selectfont
+ \pgfgo_players_move_label_format:n{\l_pgfgo_move_current_int}
+ }
+ \pgfusepath{stroke}
+ \endpgfscope
+ }
+
+ \int_gincr:N\l_pgfgo_move_current_int
+
+ \group_end:
+ \bool_gset_inverse:N\l_pgfgo_players_black_bool
+ \bool_gset_inverse:N\l_pgfgo_players_white_bool
+}
+
+
+\cs_new:Nn\pgfgo_move:nnn{\pgfgo_move:nnnn{#1}{#2}#3}
+\cs_generate_variant:Nn \pgfgo_move:nnn {nnV}
+
+\cs_generate_variant:Nn\tl_count:n {x}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%-------------------------------------------MOVES-----------------------------------------------%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+\cs_new:Nn \pgfgo_move_parsed:nnn {
+ \keys_set_groups:nnn { pgfgo / move} {player-id, first stone} {#2}
+ \clist_map_variable:nNn {#3} \variable {\pgfgo_move:nnV{#1}{#2}\variable}
+}
+
+
+
+
+
+\NewDocumentCommand{\moves}{sO{}m}{
+ \group_begin:
+ \pgfgo_coordinate_parser_from_pgfgonce_to_items:n{#3} %Devuelve \l_pgfgo_coordinate_parser_items_from_group_seq
+ %Eliminar la key from para que no la usen las marcas posteriores.
+
+
+ \keys_set_groups:nnn { pgfgo / move} {player-id, first stone} {#2}
+ \keys_set_groups:nnn { pgfgo / players / neutral / move} { label } {#2}
+ %RECORDAR LAS PIEDAS
+ \clist_set_from_seq:NN \l_tmpa_clist\l_pgfgo_coordinate_parser_items_from_pgfgonce_seq
+ \bool_if:NT \l_pgfgo_goban_remember_move_bool {
+ \bool_if:NTF \l_pgfgo_goban_remember_move_label_bool{
+ \seq_gput_right:Ne \l_pgfgo_goban_elements_stack_seq {
+ \exp_not:N\pgfgo_move_parsed:nnn{\exp_not:N \BooleanTrue}{from = \int_use:N\l_pgfgo_move_current_int, #2}{\l_tmpa_clist}
+ }
+ } {
+ \seq_gput_right:Ne \l_pgfgo_goban_elements_stack_seq {
+ \exp_not:N\pgfgo_move_parsed:nnn{\exp_not:N \BooleanFalse}{from = \int_use:N\l_pgfgo_move_current_int, #2}{\l_tmpa_clist}
+ }
+ }
+ \seq_log:N \l_pgfgo_goban_elements_stack_seq
+ }
+
+ %-------------------------------------------------------------------------
+
+
+ \seq_map_variable:NNn \l_pgfgo_coordinate_parser_items_from_pgfgonce_seq\variable{
+ %PIEDRAS RESTANTES
+ \pgfgo_move:nnV {#1}{#2}\variable
+ }
+ \group_end:
+}
+
+\let\move\moves
+
+\ExplSyntaxOff
+
+
+
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-stones.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-territory.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-territory.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-territory.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,95 @@
+\ExplSyntaxOn
+
+\tl_set:Nn\l_pgfgo_territory_pattern_tl{north~west~lines}
+\tl_set:Nn\l_pgfgo_territory_line_color_tl{black}
+\tl_set:Nn\l_pgfgo_territory_line_opacity_tl{1}
+\tl_set:Nn\l_pgfgo_territory_fill_color_tl{black}
+\tl_set:Nn\l_pgfgo_territory_fill_opacity_tl{1}
+
+\keys_define:nn{ pgfgo / territory}{
+ forget .code:n = {\bool_set_false:N\l_pgfgo_goban_remember_territory_bool},
+ forget .groups:n = {preset},
+
+ remember .code:n = {\bool_set_true:N\l_pgfgo_goban_remember_territory_bool},
+ remember .groups:n = {preset},
+
+ pattern .tl_set:N = \l_pgf_territory_pattern_tl,
+
+ black .code:n = {
+ \bool_set_true:N\l_pgfgo_territory_player_black_bool
+ \bool_set_false:N\l_pgfgo_territory_player_white_bool
+ \keys_set:nn{ pgfgo / territory }{
+ line~color = \l_pgfgo_player_black_line_color_tl,
+ fill~color = \l_pgfgo_player_black_fill_color_tl,
+ }
+ },
+ b .code:n = {\keys_set:nn {pgfgo / territory} {black}},
+
+
+ white .code:n = {
+ \bool_set_false:N\l_pgfgo_territory_player_black_bool
+ \bool_set_true:N\l_pgfgo_territory_player_white_bool
+ \keys_set:nn{ pgfgo / territory }{
+ line~color = \l_pgfgo_player_white_line_color_tl,
+ fill~color = \l_pgfgo_player_white_fill_color_tl,
+ }
+ },
+ w .code:n = {\keys_set:nn {pgfgo / territory} {white}},
+
+ neutral .code:n = {
+ \bool_set_false:N\l_pgfgo_territory_player_black_bool
+ \bool_set_false:N\l_pgfgo_territory_player_white_bool
+ \keys_set:nn{ pgfgo / territory }{
+ line~color = \l_pgfgo_player_neutral_line_color_tl,
+ fill~color = \l_pgfgo_player_neutral_fill_color_tl,
+ }
+ },
+
+ line~color .tl_set:N = \l_pgfgo_territory_line_color_tl,
+
+ line~opacity .tl_set:N = \l_pgfgo_territory_line_opacity_tl,
+
+ fill~color .tl_set:N = \l_pgfgo_territory_fill_color_tl,
+
+ fill~opacity .tl_set:N = \l_pgfgo_territory_fill_opacity_tl,
+}
+
+
+
+\cs_set_protected:Npn\pgfgo_territory:nn #1#2 {
+ \group_begin:
+
+ \keys_set:nn{pgfgo / territory} {#1}
+
+ \pgfonlayer{pgfgo_layer_territory}
+ \clist_set:Nx\l_pgfgo_territory_coordinates_clist{#2}
+
+ \clist_pop:NN\l_pgfgo_territory_coordinates_clist\l_pgfgo_territory_first_coordinate_tl
+ \pgfgo_parse_coordinate:V\l_pgfgo_territory_first_coordinate_tl
+ \pgfpathmoveto{\pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}
+
+ \clist_map_inline:Nn\l_pgfgo_territory_coordinates_clist{
+ \pgfgo_parse_coordinate:n {##1}
+ \pgfpathlineto{\pgfpointxy{\l_pgfgo_parsed_x_coordinate_tl}{\l_pgfgo_parsed_y_coordinate_tl}}
+ }
+
+ \pgfpathclose
+
+ \pgfsetfillpattern{north~west~lines}{\l_pgfgo_territory_fill_color_tl}
+ \pgfusepath{fill}
+ \endpgfonlayer
+ \group_end:
+}
+
+
+
+\DeclareDocumentCommand{\territory}{O{}m}{
+ \keys_set_groups:nnn {pgfgo / territory} {preset} {#1}
+ \bool_if:NT\l_pgfgo_goban_remember_territory_bool{
+ \tl_gput_right:Nn\l_pgfgo_goban_elements_stack_tl{\pgfgo_territory:nn {#1}{#2}}
+ }
+ \pgfgo_territory:nn {#1}{#2}
+}
+
+
+\ExplSyntaxOff
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go-territory.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go.sty 2025-03-08 20:58:18 UTC (rev 74536)
@@ -0,0 +1,212 @@
+\usepackage{tikz}
+\usetikzlibrary{patterns}
+\usepackage{xparse}
+
+\definecolor{pgfgo}{RGB}{220,179,92}
+\colorlet{tablero2}{red!10!blue!10}
+\colorlet{tablero3}{blue!10!green!10}
+\definecolor{tablero4}{HTML}{9B8465}
+
+
+
+\ExplSyntaxOn
+
+\cs_set:Npn\pgfgo_set:n #1 {\keys_set:nn {pgfgo}{#1}}
+\cs_generate_variant:Nn \pgfgo_set:n {f, e}
+
+
+\let\pgfgoset\pgfgo_set:n
+
+\NewDocumentCommand{\pgfgosetallplayers}{m}{\keys_set:nn {pgfgo / players / all}{#1}}
+
+
+
+\IfFileExists{../../latex/pgf-go-shadow-shine.sty}{\usepackage{../../latex/pgf-go-shadow-shine}}{\usepackage{pgf-go-shadow-shine}}
+\IfFileExists{../../latex/pgf-go-remember.sty}{\usepackage{../../latex/pgf-go-remember}}{\usepackage{pgf-go-remember}}
+\IfFileExists{../../latex/pgf-go-profiles.sty}{\usepackage{../../latex/pgf-go-profiles}}{\usepackage{pgf-go-profiles}}
+\IfFileExists{../../latex/pgf-go-players.sty}{\usepackage{../../latex/pgf-go-players}}{\usepackage{pgf-go-players}}
+\IfFileExists{../../latex/pgf-go-coordinate-parser.sty}{\usepackage{../../latex/pgf-go-coordinate-parser}}{\usepackage{pgf-go-coordinate-parser}}
+\IfFileExists{../../latex/pgf-go-stones.sty}{\usepackage{../../latex/pgf-go-stones}}{\usepackage{pgf-go-stones}}
+\IfFileExists{../../latex/pgf-go-goban.sty}{\usepackage{../../latex/pgf-go-goban}}{\usepackage{pgf-go-goban}}
+\IfFileExists{../../latex/pgf-go-marks.sty}{\usepackage{../../latex/pgf-go-marks}}{\usepackage{pgf-go-marks}}
+\IfFileExists{../../latex/pgf-go-territory.sty}{\usepackage{../../latex/pgf-go-territory}}{\usepackage{pgf-go-territory}}
+
+
+
+\cs_set_eq:NN\pgfgo_old_mark:\mark
+\cs_set_eq:NN\pgfgo_old_marks:\marks
+
+
+
+
+
+
+\cs_generate_variant:Nn \int_from_alph:n {V, x, e}
+
+
+
+
+
+
+\int_new:N\l_pgfgo_parsed_x_coordinate_int
+\int_new:N\l_pgfgo_parsed_y_coordinate_int
+
+\cs_set:Nn\pgfgo_parse_coordinate:n{
+ \regex_extract_once:nnN{([A-Za-z]*)\s*(\d*)}{#1}\l_coordinates_seq
+
+ \tl_set:Nx\l_pgfgo_parsed_aux_x_coordinate_tl{\seq_item:Nn\l_coordinates_seq{2}}
+ \int_set:Nn
+ \l_pgfgo_parsed_x_coordinate_int
+ {\int_from_alph:V\l_pgfgo_parsed_aux_x_coordinate_tl}
+
+ \bool_if:NF\l_pgfgo_use_i_bool{
+ \int_compare:nNnT{\l_pgfgo_parsed_x_coordinate_int}>{9}{ %BAJAR A 8
+ \int_decr:N\l_pgfgo_parsed_x_coordinate_int
+ }
+ }
+
+ \tl_gset:Nn\l_pgfgo_parsed_x_coordinate_tl{\int_use:N\l_pgfgo_parsed_x_coordinate_int}
+ \tl_gset:Nn\l_pgfgo_parsed_y_coordinate_tl{\seq_item:Nn\l_coordinates_seq{3}}
+}
+
+\cs_set_eq:NN\pgfgo_parse_coordinate:n\pgfgo_parse_coordinate:n
+
+\cs_generate_variant:Nn\pgfgo_parse_coordinate:n {x}
+
+
+
+
+\cs_set:Npn\pgfgo_parse_goban_size:n #1{
+ \regex_extract_once:nnNTF{\A([\d]{1,2})\s*x\s*([\d]{1,2})\Z}{#1}\l_pgfgo_goban_dimen_seq{
+ \tl_set:Nx\l_pgfgo_goban_to_x_tl{\seq_item:Nn\l_pgfgo_goban_dimen_seq{2}}
+ \tl_set:Nx\l_pgfgo_goban_to_y_tl{\seq_item:Nn\l_pgfgo_goban_dimen_seq{3}}
+ }{
+ \regex_extract_once:nnNTF{\A([\d]{1,2})\Z}{#1}\l_pgfgo_goban_dimen_seq{
+ \tl_set:Nx\l_pgfgo_goban_to_x_tl{\seq_item:Nn\l_pgfgo_goban_dimen_seq{2}}
+ \tl_set:Nx\l_pgfgo_goban_to_y_tl{\seq_item:Nn\l_pgfgo_goban_dimen_seq{2}}
+ }{
+ You~tried~to~set~key~’\l_keys_key_str’~to~’#1’.
+ }
+ }
+}
+
+\cs_generate_variant:Nn\pgfgo_parse_goban_size:n {V}
+
+
+\cs_set:Npn\pgfgo_parse_goban_partial_from:n #1 {
+ \regex_extract_once:nnN {
+
+ \A\s*
+ ([a-zA-Z]{1}\s*\d{1,2})
+ \s* to \s*
+ ([a-zA-Z]{1}\s*\d{1,2})
+ \s*\Z
+
+ }{#1}\l_seq
+
+
+ \tl_set:Nx\l_temp_a_tl{\seq_item:Nn\l_seq{2}}
+ \tl_set:Nx\l_temp_b_tl{\seq_item:Nn\l_seq{3}}
+}
+
+
+
+
+
+\cs_generate_variant:Nn \pgfgo_parse_coordinate:n{V}
+\cs_generate_variant:Nn \int_if_odd_p:n{V}
+\cs_generate_variant:Nn \int_if_odd:nT{VT}
+\cs_generate_variant:Nn \int_if_even_p:n{V}
+\cs_generate_variant:Nn \int_if_even:nF{VF}
+\cs_generate_variant:Nn \int_set:Nn {Nx}
+\cs_generate_variant:Nn \int_to_Alph:n{V}
+\cs_generate_variant:Nn \clist_put_right:Nn{Nx}
+\cs_generate_variant:Nn \regex_match:nnT {nVT}
+\cs_generate_variant:Nn \regex_match:nnTF {nVTF}
+\cs_generate_variant:Nn \regex_extract_once:nnNTF {nVNTF}
+\cs_generate_variant:Nn \seq_gset:Nn {Nx}
+
+
+\bool_set_true:N\l_pgfgo_remember_bool
+\bool_set_true:N\l_pgfgo_use_i_bool
+
+
+
+
+
+\keys_define:nn {pgfgo}{
+ goban .code:n = {\keys_set:nn {pgfgo / goban} {#1}},
+
+ stone .code:n = {\keys_set:nn {pgfgo / players } {all = {stone = {#1}}}},
+
+ move .code:n = {\keys_set:nn {pgfgo / players } {all = {move = {#1}}}},
+
+ mark .code:n = {\keys_set:nn {pgfgo / mark} {#1}},
+
+ territory .code:n = {\keys_set:nn {pgfgo / territory} {#1}},
+
+ players .code:n = {\keys_set:nn {pgfgo / players} {#1}},
+
+ use~i .bool_set:N = \l_pgfgo_use_i_bool,
+
+ use~i .default:n = {true}
+}
+
+
+
+
+
+
+
+
+\dim_new:N\l_pgfgo_stone_radius_dim
+\dim_set:Nn\l_pgfgo_stone_radius_dim{0.55em}
+\let\pgfgostoneradius\l_pgfgo_stone_radius_dim
+
+
+
+
+
+
+
+
+\cs_set:Npn\pgfgo_parse_to_tikz:n #1{
+ \pgfgo_parse_coordinate:n {#1}
+ \tl_use:N\l_pgfgo_parsed_x_coordinate_tl , \tl_use:N\l_pgfgo_parsed_y_coordinate_tl
+}
+
+\def\parsetotikz#1{
+ \pgfgo_parse_to_tikz:n {#1}
+}
+
+
+\tl_set:Nn\l_pgfgo_player_black_line_color_tl{black}
+\tl_set:Nn\l_pgfgo_player_black_fill_color_tl{black}
+\tl_set:Nn\l_pgfgo_player_black_label_color_tl{white}
+\tl_set:Nn\l_pgfgo_player_black_mark_color_tl{white}
+
+\tl_set:Nn\l_pgfgo_player_white_line_color_tl{black}
+\tl_set:Nn\l_pgfgo_player_white_fill_color_tl{white}
+\tl_set:Nn\l_pgfgo_player_white_label_color_tl{black}
+\tl_set:Nn\l_pgfgo_player_white_mark_color_tl{black}
+
+\tl_set:Nn\l_pgfgo_player_neutral_line_color_tl{black}
+\tl_set:Nn\l_pgfgo_player_neutral_fill_color_tl{gray}
+\tl_set:Nn\l_pgfgo_player_neutral_label_color_tl{white}
+
+
+\tl_new:N \l_pgfgo_player_black_custom_tl
+\tl_new:N \l_pgfgo_player_white_custom_tl
+
+
+
+
+
+\ExplSyntaxOff
+
+
+
+
+
+
+\pgfgouseprofile{default}
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/pgf-go/pgf-go.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check 2025-03-08 20:58:18 UTC (rev 74536)
@@ -676,7 +676,7 @@
penlight penlightplus perception perfectcut perltex
permute persian-bib
petiteannonce petri-nets pfarrei pfdicons
- pgf pgf-blur pgf-interference pgf-periodictable pgf-pie
+ pgf pgf-blur pgf-go pgf-interference pgf-periodictable pgf-pie
pgf-soroban pgf-spectra pgf-umlcd pgf-umlsd
pgfgantt pgfkeysearch pgfkeyx pgfmath-xfp pgfmolbio pgfmorepages
pgfopts pgfornament pgfornament-han pgfplots pgfplotsthemebeamer
Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/tlpkg/libexec/ctan2tds 2025-03-08 20:58:18 UTC (rev 74536)
@@ -1872,6 +1872,7 @@
'pbibtex-base' => '&POSTpbibtex_base',
'pdfextra' => '&POSTpdfextra',
'pedigree-perl' => '&POSTpedigreeperl',
+ 'pgf-go' => '&POST_onelevel',
'pgfkeysearch' => '&POST_onelevel',
'pgfornament' => '&POSTpgfornament',
'pgfplots' => '&POSTpgfplots',
Modified: trunk/Master/tlpkg/tlpsrc/collection-games.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-games.tlpsrc 2025-03-08 20:56:47 UTC (rev 74535)
+++ trunk/Master/tlpkg/tlpsrc/collection-games.tlpsrc 2025-03-08 20:58:18 UTC (rev 74536)
@@ -35,6 +35,7 @@
depend othello
depend othelloboard
depend pas-crosswords
+depend pgf-go
depend playcards
depend psgo
depend quizztex
Added: trunk/Master/tlpkg/tlpsrc/pgf-go.tlpsrc
===================================================================
More information about the tex-live-commits
mailing list.