Browse Source

documentation added

master
Jonathan Spratte 2 years ago
parent
commit
7492bf3e9e

+ 44
- 28
DSAchar.sty View File

@@ -13,15 +13,18 @@
13 13
 % Personenbezogen >>>
14 14
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15 15
 \newcommand*\NeuerName[3]%>>>
16
-  {%
17
-    \newcommand*#1
18
-      {%
19
-        #2 #3%
20
-        \gdef#1{#2\@ifstar{ #3}{}}%
21
-        \@ifstar{}{}%
22
-      }%
23
-  }%<<<
24
-\ExplSyntaxOn
16
+  {
17
+    \cs_new_protected:Npn #1
18
+      {
19
+        #2~#3
20
+        \cs_gset_protected:Npn #1 { #2 \@ifstar { ~#3 } {} }
21
+        \@ifstar {} {}
22
+      }
23
+  }%<<<
24
+\newcommand*\DSAcharEigStandard{8}
25
+\newcommand*\DSAcharGSStandard{8}
26
+\newcommand*\DSAcharRSStandard{0}
27
+\newcommand*\DSAcharBEStandard{0}
25 28
 \cs_generate_variant:Nn \tl_if_eq:nnTF { VnTF }
26 29
 \cs_generate_variant:Nn \tl_lower_case:n { V }
27 30
 \msg_new:nnn { DSAchar } { only~bool }%>>>
@@ -29,6 +32,7 @@
29 32
 \msg_new:nnn { DSAchar } { unknown~key }%>>>
30 33
   { The~`#1`~key~is~unknown. }%<<<
31 34
 \tl_new:N \l_DSAchar_key_tl
35
+\tl_new:N \l_DSAchar_additional_defaults_tl
32 36
 \prop_const_from_keyval:Nn \c_DSAchar_key_type_prop%>>>
33 37
   {
34 38
     ,mu  = int
@@ -78,7 +82,14 @@
78 82
 \prg_new_conditional:Npnn \DSAchar_if_key_defined:nn #1 #2%>>>
79 83
   { T , F , TF }
80 84
   {
81
-    \cs_if_exist:cTF { l_DSAchar_ \l_DSAchar_key_tl _#2_#1 }
85
+    \DSAchar_if_key_defined:nnnTF { \l_DSAchar_key_tl } { #1 } { #2 }
86
+      { \prg_return_true: }
87
+      { \prg_return_false: }
88
+  }%<<<
89
+\prg_new_conditional:Npnn \DSAchar_if_key_defined:nnn #1 #2 #3%>>>
90
+  { T , F , TF }
91
+  {
92
+    \cs_if_exist:cTF { l_DSAchar_ #1 _ #3 _ #2 }
82 93
       { \prg_return_true: }
83 94
       { \prg_return_false: }
84 95
   }%<<<
@@ -171,22 +182,19 @@
171 182
   }%<<<
172 183
 \cs_new_protected:Npn \DSAchar_set_default_values:%>>>
173 184
   {
174
-    \DSAchar_set_key:nn { mu } { 8 }
175
-    \DSAchar_set_key:nn { kl } { 8 }
176
-    \DSAchar_set_key:nn { in } { 8 }
177
-    \DSAchar_set_key:nn { ch } { 8 }
178
-    \DSAchar_set_key:nn { ff } { 8 }
179
-    \DSAchar_set_key:nn { ge } { 8 }
180
-    \DSAchar_set_key:nn { ko } { 8 }
181
-    \DSAchar_set_key:nn { kk } { 8 }
182
-    \DSAchar_set_key:nn { gs } { 8 }
183
-    \DSAchar_set_key:nn { rs } { 0 }
184
-    \DSAchar_set_key:nn { be } { 0 }
185
+    \DSAchar_set_key:nn { mu } { \DSAcharEigStandard }
186
+    \DSAchar_set_key:nn { kl } { \DSAcharEigStandard }
187
+    \DSAchar_set_key:nn { in } { \DSAcharEigStandard }
188
+    \DSAchar_set_key:nn { ch } { \DSAcharEigStandard }
189
+    \DSAchar_set_key:nn { ff } { \DSAcharEigStandard }
190
+    \DSAchar_set_key:nn { ge } { \DSAcharEigStandard }
191
+    \DSAchar_set_key:nn { ko } { \DSAcharEigStandard }
192
+    \DSAchar_set_key:nn { kk } { \DSAcharEigStandard }
193
+    \DSAchar_set_key:nn { gs } { \DSAcharGSStandard }
194
+    \DSAchar_set_key:nn { rs } { \DSAcharRSStandard }
195
+    \DSAchar_set_key:nn { be } { \DSAcharBEStandard }
185 196
     \DSAchar_set_key:nn { magier }     { false }
186 197
     \DSAchar_set_key:nn { geweihter }  { false }
187
-    \DSAchar_set_key:nn { rasse }      { Mittelländer }
188
-    \DSAchar_set_key:nn { kultur }     { Mittelländische~Städte }
189
-    \DSAchar_set_key:nn { profession } { Tagelöhner }
190 198
     \DSAchar_set_key:nn { waffe }      { \textit{keine} }
191 199
   }%<<<
192 200
 \cs_new:Npn \DSAchar_get_key_expandable:nn #1 #2%>>>
@@ -259,11 +267,19 @@
259 267
     ,manöver    .meta:n = { manoever   = { #1 } }
260 268
     ,Manöver    .meta:n = { manoever   = { #1 } }
261 269
   }%<<<
262
-\NewDocumentCommand \NeuerChar { m m m m }%>>>
270
+\NewDocumentCommand \NeueStandards { s +m }%>>>
271
+  {
272
+    \IfBooleanTF { #1 }
273
+      { \tl_set:Nn }
274
+      { \tl_put_right:Nn }
275
+      \l_DSAchar_additional_defaults_tl { #2 }
276
+  }%<<<
277
+\NewDocumentCommand \NeuerChar { m m m +m }%>>>
263 278
   {
264 279
     \tl_set:Nn \l_DSAchar_key_tl { #1 }
265 280
     \DSAchar_set_default_values:
266 281
     \DSAchar_set_key:nnn { tl } { fullname } { #2~#3 }
282
+    \keys_set:nV { DSAchar } \l_DSAchar_additional_defaults_tl
267 283
     \keys_set:nn { DSAchar } { #4 }
268 284
     \exp_args:Nc \NeuerName { #1 } { #2 } { #3 }
269 285
     \DSAchar_def_undefined_key:nn { le }%>>>
@@ -333,6 +349,9 @@
333 349
         ) / 5
334 350
       }%<<<
335 351
   }%<<<
352
+\NewDocumentCommand \CharParse { m +m }%>>>
353
+  {
354
+  }%<<<
336 355
 \NewDocumentCommand \CharBasis { m }%>>>
337 356
   {
338 357
     \tl_set:Nn \l_DSAchar_key_tl { #1 }
@@ -510,9 +529,6 @@
510 529
     \DSAchar_print_clist_labelled:nnnn
511 530
       { #2 } { sonderfertigkeiten } { Sonderfertigkeiten } { #1 }
512 531
   }%<<<
513
-\NewDocumentCommand \CharParse { m +m }%>>>
514
-  {
515
-  }%<<<
516 532
 \NewExpandableDocumentCommand \CharListe { O{,~} m m }%>>>
517 533
   {
518 534
     \DSAchar_print_clist:nnn { #2 } { #3 } { #1 }

+ 10
- 6
DSAproben.sty View File

@@ -12,28 +12,32 @@
12 12
 % Proben >>>
13 13
 \newcommand*\probe[2][]%>>>
14 14
   {%
15
-    \textsf
15
+    \probeSchrift
16 16
       {%
17
-        \MakeUppercase{#2}%
17
+        \DSAMakeUppercase{#2}%
18 18
         \DSAifemptyTF{#1}
19 19
           {}
20 20
           {%
21
-            \DSAifminusTF{#1}{#1}{+#1}%
21
+            \DSAifminusfirstTF{#1}{#1}{+#1}%
22 22
           }
23 23
         Probe%
24 24
       }%
25 25
   }%<<<
26 26
 \newcommand\vprobe[2][]%>>>
27 27
   {%
28
-    \textsf
28
+    \probeSchrift
29 29
       {%
30
-        vergleichende \MakeUppercase{#2}%
30
+        vergleichende \DSAMakeUppercase{#2}%
31 31
         \DSAifemptyTF{#1}
32 32
           {}
33 33
           {%
34
-            \DSAifminusTF{#1}{#1}{+#1}%
34
+            \DSAifminusfirstTF{#1}{#1}{+#1}%
35 35
           }
36 36
          Probe}%
37 37
   }%<<<
38
+\newcommand\probeSchrift[1]%>>>
39
+  {%
40
+    \textsf{#1}%
41
+  }%<<<
38 42
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<<<
39 43
 \endinput

+ 57
- 0
DSAutil.sty View File

@@ -10,6 +10,7 @@
10 10
 
11 11
 % Utility >>>
12 12
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13
+\def\endDSAargument@test{&$_^$VeryUnlikelyStringgggg}% bad implementation
13 14
 \newcommand\DSAindentedThingy[1][1em]%>>>
14 15
   {%
15 16
     \hangindent#1\relax
@@ -33,5 +34,61 @@
33 34
       \expandafter\@secondoftwo
34 35
     \fi
35 36
   }%<<<
37
+\long\def\DSAifblankTF@inner#1#2\endDSAifblankTF@inner%>>>
38
+  {%
39
+    \ifx\endDSAargument@test#1
40
+      \expandafter\@firstoftwo
41
+    \else
42
+      \expandafter\@secondoftwo
43
+    \fi
44
+  }%<<<
45
+\newcommand\DSAifblankTF[1]%>>>
46
+  {%
47
+    \DSAifblankTF@inner#1\endDSAargument@test\endDSAifblankTF@inner
48
+  }%<<<
49
+\newcommand\DSAifnegativeTF[1]%>>>
50
+  {%
51
+    \ifnum#1<0
52
+      \expandafter\@firstofone
53
+    \else
54
+      \expandafter\@secondofone
55
+    \fi
56
+  }%<<<
57
+\long\def\DSAifminusfirstTF@inner#1-#2\endDSAifminusfirstTF@inner%>>>
58
+  {%
59
+    \DSAifemptyTF{#1}%
60
+  }%<<<
61
+\newcommand\DSAifminusfirstTF[1]%>>>
62
+  {%
63
+    \DSAifminusTF{#1}
64
+      {%
65
+        \DSAifminusfirstTF@inner#1\endDSAifminusfirstTF@inner
66
+      }
67
+      {%
68
+        \@secondoftwo
69
+      }%
70
+  }%<<<
71
+\long\def\DSAtllength@inner#1#2%>>>
72
+  {%
73
+    \ifx\endDSAargument@test#2
74
+      \expandafter\@firstoftwo
75
+    \else
76
+      \expandafter\@secondoftwo
77
+    \fi
78
+    {#1}%
79
+    {\expandafter\DSAtllength@inner\expandafter{\the\numexpr#1+1\relax}}%
80
+  }%<<<
81
+\newcommand\DSAtllength[1]%>>>
82
+  {%
83
+    \DSAtllength@inner{0}#1\endDSAargument@test
84
+  }%<<<
85
+\newcommand\DSAMakeUppercase[2][2]%>>>
86
+  {%
87
+    \ifnum\DSAtllength{#2}=#1
88
+      \MakeUppercase{#2}%
89
+    \else
90
+      #2%
91
+    \fi
92
+  }%<<<
36 93
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<<<
37 94
 \endinput

+ 5
- 1
DSAwurf.sty View File

@@ -11,7 +11,11 @@
11 11
 % Würfel >>>
12 12
 \newcommand*\w[2][1]%>>>
13 13
   {%
14
-    \textsf{#1W#2}%
14
+    \wSchrift{#1W#2}%
15 15
   }%<<<
16
+\newcommand\wSchrift[1]
17
+  {%
18
+    \textsf{#1}%
19
+  }
16 20
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<<<
17 21
 \endinput

+ 47
- 0
Doc/Makefile View File

@@ -0,0 +1,47 @@
1
+# User defined variables {{{
2
+##########################################
3
+TEX    = pdflatex
4
+FLAGS  = -halt-on-error
5
+# relative path to included TeX-files
6
+TEXF   = ./tex
7
+# relative path to included TeX-files containing preamble stuff
8
+PREF   = ./preamble
9
+##########################################
10
+# }}}
11
+# Automatically defined variables {{{
12
+##########################################
13
+FILE   = $(wildcard ./*.tex)
14
+SFILES = $(wildcard $(TEXF)/*.tex)
15
+PREAMB = $(wildcard $(PREF)/*.tex)
16
+PREAMB += $(wildcard $(PREF)/*.sty)
17
+PREAMB += $(wildcard ./*.sty)
18
+NAME   = $(FILE:%.tex=%)
19
+OUT    = $(NAME).pdf
20
+FMT    = $(NAME).fmt
21
+##########################################
22
+# }}}
23
+# default target {{{
24
+## the name 'quick' maybe misleading! 'all' might be faster if $(FILE) hasn't
25
+## changed. 'quick' is for quickly running TeX assuming that you know what
26
+## you're doing
27
+quick: $(FMT)
28
+	$(TEX) $(FLAGS) -fmt="$(NAME)" $(FILE)
29
+	#$(TEX) $(FLAGS) $(FILE);
30
+# }}}
31
+all: $(OUT) #bib
32
+$(OUT): $(FILE) $(SFILES) $(PREAMB)# {{{
33
+	$(TEX) $(FLAGS) $(FILE);
34
+	$(TEX) $(FLAGS) $(NAME).tex > /dev/null;
35
+	$(TEX) $(FLAGS) $(NAME).tex > /dev/null;
36
+# }}}
37
+$(FMT): $(FILE) $(PREAMB)# {{{
38
+	$(TEX) -ini -enc -jobname="$(NAME)" "&$(TEX)" mylatexformat.ltx """$(FILE)"""
39
+# }}}
40
+.PHONY: clean cleantex cleansubfoldertex quick all
41
+clean: cleantex cleansubfoldertex
42
+cleantex: # {{{
43
+	-rm $(shell find $(NAME)\.* | grep -Ev '\.tex$$' | grep -Ev '\.sty$$' | grep -Ev '\.bib$$')
44
+# }}}
45
+cleansubfoldertex: # {{{
46
+	-cd $(TEXF); rm $(shell cd $(TEXF); find * | grep -v tex);
47
+# }}}

+ 7
- 0
Doc/doc_DSALaTeX.bib View File

@@ -0,0 +1,7 @@
1
+@book{WdH
2
+  ,title={Wege der Helden}
3
+  ,subtitle={Erweiterungsregeln zum Fantasy-Rollenspiel}
4
+  ,author={Demirtel, Eevie AND Richter, Daniel Simon AND Spohr, Alex}
5
+  ,publisher={Ulisses Spiele GmbH, Waldems}
6
+  ,year=2011
7
+}

BIN
Doc/doc_DSALaTeX.pdf View File


+ 61
- 0
Doc/doc_DSALaTeX.tex View File

@@ -0,0 +1,61 @@
1
+\expandafter\def\csname @classoptionslist\endcsname{}
2
+\RequirePackage[main=ngerman,british]{babel}
3
+\documentclass[]{l3doc}
4
+
5
+\usepackage[T1]{fontenc}
6
+\usepackage{lmodern}
7
+\usepackage{microtype}
8
+\usepackage{acro}
9
+\usepackage{listings}
10
+\usepackage[]{longtable}
11
+\usepackage{xcolor}
12
+\usepackage[style=draft]{biblatex}
13
+\addbibresource{doc_DSALaTeX.bib}
14
+
15
+\colorlet{alias}{blue!20!gray}
16
+
17
+\usepackage{DSALaTeX}
18
+
19
+\DeclareAcronym{dsa}
20
+  {
21
+    ,short=DSA
22
+    ,long=„Das Schwarze Auge“
23
+  }
24
+
25
+\title{Das \pkg{DSALaTeX} Bündel}
26
+\author{Jonathan P. Spratte}
27
+
28
+\input{preamble/macros.tex}
29
+\input{preamble/beispiel.tex}
30
+
31
+\begin{document}
32
+\maketitle
33
+
34
+\bigskip
35
+\begingroup
36
+\begingroup
37
+\centering
38
+\Block{4}
39
+  {
40
+    \selectlanguage{british}
41
+    This documentation is available only in German language as ``Das Schwarze
42
+    Auge'' (DSA) is a German pen\&paper fantasy role-playing game. If this
43
+    bothers you, you might translate this documentation or try to convince me to
44
+    do it.
45
+  }
46
+\par
47
+\endgroup
48
+\endgroup
49
+\selectlanguage{ngerman}
50
+\bigskip
51
+
52
+\tableofcontents
53
+
54
+\input{tex/doc_einleitung.tex}
55
+\input{tex/doc_DSAutil.tex}
56
+\input{tex/doc_DSAwurf.tex}
57
+\input{tex/doc_DSAproben.tex}
58
+\input{tex/doc_DSAchar.tex}
59
+
60
+\printbibliography
61
+\end{document}

+ 9
- 0
Doc/preamble/beispiel.tex View File

@@ -0,0 +1,9 @@
1
+\NeuerChar{lasse}{Lasse}{Bluten}
2
+  {
3
+    ,kk=16
4
+    ,ko=13
5
+    ,ge=11
6
+    ,mu=12
7
+    ,waffe=Barbarenstreitaxt (\w[3]{6+2})
8
+    ,manoever=Wuchtschlag
9
+  }

+ 100
- 0
Doc/preamble/macros.tex View File

@@ -0,0 +1,100 @@
1
+\makeatletter
2
+\let\inputOrig\input
3
+\ExplSyntaxOn
4
+\RenewExpandableDocumentCommand \input { m }%>>>
5
+  {
6
+    \exp_args:Nx \inputOrig { \tl_to_str:n { #1 } }
7
+  }%<<<
8
+\tl_new:N \l_docDSALaTeX_tmp_tl
9
+\clist_new:N \l_docDSALaTeX_bverb_both_points_clist
10
+\clist_new:N \l_docDSALaTeX_bverb_pre_points_clist
11
+\clist_new:N \l_docDSALaTeX_bverb_post_points_clist
12
+\clist_set:Nx \l_docDSALaTeX_bverb_both_points_clist%>>>
13
+  {
14
+    =
15
+  }%<<<
16
+\clist_set:Nx \l_docDSALaTeX_bverb_pre_points_clist%>>>
17
+  {
18
+    [
19
+    ,(
20
+    ,\char_generate:nn { `\{ } { 12 }
21
+    ,\char_generate:nn { `\\ } { 12 }
22
+  }%<<<
23
+\clist_set:Nx \l_docDSALaTeX_bverb_post_points_clist%>>>
24
+  {
25
+    \char_generate:nn { `\} } { 12 }
26
+    ,)
27
+    ,]
28
+  }%<<<
29
+\cs_new:Npn \docDSALaTeX_bp:%>>>
30
+  {
31
+    \hskip0pt
32
+  }%<<<
33
+\NewDocumentCommand \bverb { v }%>>>
34
+  {
35
+    \group_begin:
36
+    \tl_set:Nn \l_docDSALaTeX_tmp_tl { #1 }
37
+    \clist_map_inline:Nn \l_docDSALaTeX_bverb_pre_points_clist
38
+      {
39
+        \tl_replace_all:Nnn \l_docDSALaTeX_tmp_tl { ##1 }
40
+          { \docDSALaTeX_bp: ##1 }
41
+      }
42
+    \clist_map_inline:Nn \l_docDSALaTeX_bverb_post_points_clist
43
+      {
44
+        \tl_replace_all:Nnn \l_docDSALaTeX_tmp_tl { ##1 }
45
+          { ##1 \docDSALaTeX_bp: }
46
+      }
47
+    \clist_map_inline:Nn \l_docDSALaTeX_bverb_both_points_clist
48
+      {
49
+        \tl_replace_all:Nnn \l_docDSALaTeX_tmp_tl
50
+          { ##1 } { \docDSALaTeX_bp: ##1 \docDSALaTeX_bp: }
51
+      }
52
+    \exp_args:NV
53
+    \tl_if_head_eq_meaning:nNT \l_docDSALaTeX_tmp_tl \docDSALaTeX_bp:
54
+      {
55
+        \tl_replace_once:Nnn \l_docDSALaTeX_tmp_tl { \docDSALaTeX_bp: } {}
56
+      }
57
+    \verbatim@font
58
+    \@noligs
59
+    \frenchspacing
60
+    \l_docDSALaTeX_tmp_tl
61
+    \group_end:
62
+  }%<<<
63
+\NewDocumentCommand \Definition { m }%>>>
64
+  {
65
+    \texttt { \meaning #1 }
66
+  }%<<<
67
+\NewDocumentCommand \eigbes { m }%>>>
68
+  {
69
+    \texttt { #1 }
70
+      & \prop_get:NnN \c_DSAchar_key_type_prop { #1 } \l_DSAchar_key_type_tl
71
+        \texttt { \l_DSAchar_key_type_tl }
72
+        \tl_if_eq:VnTF \l_DSAchar_key_type_tl { bool }
73
+          {
74
+            & false
75
+          }
76
+          {
77
+            & \tl_set:Nn \l_DSAchar_key_tl { default }
78
+              \DSAchar_if_key_defined:nTF { #1 }
79
+                { \CharEig { default } { #1 } }
80
+                { - }
81
+          }
82
+      \\
83
+  }%<<<
84
+\NewDocumentCommand \aliaseig { m m }%>>>
85
+  {
86
+    \rlap { \texttt { \textcolor { alias } { #1 } ~->~  #2 } } & & \\
87
+  }%<<<
88
+\tl_set:Nn \l_DSAchar_key_tl { default }
89
+\DSAchar_set_default_values:
90
+\newcommand\Block[2]%>>>
91
+  {%
92
+    \begingroup
93
+      \setbox0\hbox{\ignorespaces #2\ifhmode\unskip\fi}%
94
+      \begin{minipage}[t]{\dimexpr\wd0/#1\relax}%
95
+        \ignorespaces #2\ifhmode\unskip\fi%
96
+      \end{minipage}%
97
+    \endgroup
98
+  }%<<<
99
+\ExplSyntaxOff
100
+\makeatother

+ 276
- 0
Doc/tex/doc_DSAchar.tex View File

@@ -0,0 +1,276 @@
1
+\section{Das \pkg{DSAchar} Paket}
2
+\pkg{DSAchar} stellt Macros zur zentralen Verwaltung von Charaktereigenschaften
3
+zur Verfügung. Diese Charaktereigenschaften können mittels verschiedener Makros
4
+im Text verwendet werden.
5
+
6
+\subsection{Charakterdefinierung}%>>>
7
+\begin{function}{\NeuerName}%>>>
8
+  \begin{syntax}
9
+    \cs{NeuerName}\marg{Kontrollwort}\marg{Vorname}\marg{Nachname}
10
+  \end{syntax}
11
+  Definiert ein Macro namens \meta{Kontrollwort}, das bei der ersten Verwendung
12
+  zu „\meta{Vorname} \meta{Nachname}“ expandiert. Bei allen weiteren
13
+  Verwendungen wird nur der \meta{Vorname} verwendet, es sei denn, es wird ein
14
+  |*| hinter dem Macro verwendet. Bei der ersten Verwendung hat ein
15
+  nachgestellter |*| keinen Einfluss. Die Definition erfolgt global.
16
+  Beispiel (links Code, rechts Resultat):\\
17
+  \begin{minipage}[b]{.45\linewidth}
18
+    \begin{verbatim}
19
+    \obeylines
20
+    \NeuerName\iwar{Iwar}{Foll}
21
+    \iwar
22
+    \iwar
23
+    \iwar*
24
+    \end{verbatim}
25
+  \end{minipage}\hfill
26
+  \begin{minipage}[b]{.45\linewidth}
27
+    \obeylines
28
+    \NeuerName\iwar{Iwar}{Foll}
29
+    \iwar
30
+    \iwar
31
+    \iwar*
32
+  \end{minipage}
33
+\end{function}%<<<
34
+
35
+\begin{function}{\NeuerChar}%>>>
36
+  \begin{syntax}
37
+    \cs{NeuerChar}\marg{Kürzel}\marg{Vorname}\marg{Nachname}\marg{Key=Value}
38
+  \end{syntax}
39
+  Definiert einen neuen Charakter mit Namen „\meta{Vorname} \meta{Nachname}“. Es
40
+  wird \cs{NeuerName} für das Kontrollwort \cs{\meta{Kürzel}} vorgenommen. Mit
41
+  \meta{Key=Value} können die Eigenschaften das Charakters definiert werden.
42
+  Eine Liste an Eigenschaften kann \autoref{sec:NeuerCharEig} entnommen werden.
43
+  Ein Verwendungsbeispiel ist in \autoref{sec:LasseBluten} gegeben. Der dort
44
+  definierte Charakter wird auch in den sonstigen Beispielen benutzt.
45
+\end{function}%<<<
46
+%<<<
47
+
48
+\subsection{Verwendung von Charakteren}%>>>
49
+Die Beispiele in diesem Unterabschnitt verwenden den Character \lasse*. Dieser
50
+wurde mit dem Code aus \autoref{sec:LasseBluten} definiert.
51
+\begin{function}{\CharBasis}
52
+  \begin{syntax}
53
+    \cs{CharBasis}\marg{Kürzel}
54
+  \end{syntax}
55
+  Gibt die Grundeigenschaften für den Charakter \meta{Kürzel} aus.
56
+  Beispielausgabe (\bverb|\CharBasis{lasse}|):\\
57
+  \CharBasis{lasse}
58
+\end{function}
59
+
60
+\begin{function}{\CharEig}
61
+  \begin{syntax}
62
+    \cs{CharBasis}\marg{Kürzel}\marg{Eigenschaft}
63
+  \end{syntax}
64
+  Gibt den zu \meta{Eigenschaft} gehörenden Eigenschaftswert des Charakters
65
+  \meta{Kürzel} aus. Beispielausgabe (\bverb|\CharEig{lasse}{mu}|):
66
+  \CharEig{lasse}{mu}
67
+\end{function}
68
+
69
+\begin{function}{\CharEigE}
70
+  \begin{syntax}
71
+    \cs{CharEigE}\marg{Kürzel}\marg{Eigenschaft}
72
+  \end{syntax}
73
+  Für eine Beschreibung siehe \cs{CharEig}. Der Unterschied zu jenem Makro
74
+  liegt darin, dass dieses Makro vollständig expandierbar (dafür aber
75
+  langsamer) ist.
76
+\end{function}
77
+
78
+\begin{function}{\CharKampf}
79
+  \begin{syntax}
80
+    \cs{CharKampf}\oarg{Breite}\marg{Kürzel}
81
+  \end{syntax}
82
+  Gibt die kampfrelevanten Eigenschaften des Characters \meta{Kürzel} aus. Das
83
+  optionale Argument gibt die verfügbare \meta{Breite} der Ausgabe an (hat
84
+  keinen Effekt auf die tabellarischen Elemente). Bei der Angabe der
85
+  \meta{Breite} kann \cs{width} für die Standardbreite verwendet werden.
86
+  Beispielausgabe (\bverb|\CharKampf{lasse}|):\\
87
+  \CharKampf{lasse}
88
+\end{function}
89
+
90
+\begin{function}{\CharKampfKurz}
91
+  \begin{syntax}
92
+    \cs{CharKampfKurz}\oarg{Breite}\marg{Kürzel}
93
+  \end{syntax}
94
+  Wie \cs{CharKampf} nur verkürzt (Weglassen der Basiseigenschaften, etc.).
95
+  Beispielausgabe (\bverb|\CharKampfKurz{lasse}|):\\
96
+  \CharKampfKurz{lasse}
97
+\end{function}
98
+
99
+\begin{function}{\CharManoever}
100
+  \begin{syntax}
101
+    \cs{CharManoever}\oarg{Trenner}\marg{Kürzel}
102
+  \end{syntax}
103
+  Gibt die für den Charakter \meta{Kürzel} bekannten Manöver aus, als Trennung
104
+  zwischen den einzelnen Manövern wird \meta{Trenner} verwendet
105
+  (Standardeinstellung ", ", also ein Komma gefolgt von einem Leerzeichen).
106
+  Beispielausgabe (\bverb|\CharManoever{lasse}|):\\
107
+  \CharManoever{lasse}
108
+\end{function}
109
+
110
+\begin{function}{\CharZauber}
111
+  \begin{syntax}
112
+    \cs{CharZauber}\oarg{Trenner}\marg{Kürzel}
113
+  \end{syntax}
114
+  Wie \cs{CharManoever}, nur gibt es die Zauber aus.
115
+  Beispielausgabe (\bverb|\CharZauber{lasse}|):\\
116
+  \CharZauber{lasse}
117
+\end{function}
118
+
119
+\begin{function}{\CharLiturgien}
120
+  \begin{syntax}
121
+    \cs{CharLiturgien}\oarg{Trenner}\marg{Kürzel}
122
+  \end{syntax}
123
+  Wie \cs{CharManoever}, nur gibt es die Liturgien aus.
124
+  Beispielausgabe (\bverb|\CharLiturgien{lasse}|):\\
125
+  \CharLiturgien{lasse}
126
+\end{function}
127
+
128
+\begin{function}{\CharSonderfertigkeiten}
129
+  \begin{syntax}
130
+    \cs{CharSonderfertigkeiten}\oarg{Trenner}\marg{Kürzel}
131
+  \end{syntax}
132
+  Wie \cs{CharManoever}, nur gibt es die Sonderfertigkeiten aus.
133
+  Beispielausgabe (\bverb|\CharSonderfertigkeiten{lasse}|):\\
134
+  \CharSonderfertigkeiten{lasse}
135
+\end{function}
136
+
137
+\begin{function}{\CharListe}
138
+  \begin{syntax}
139
+    \cs{CharListe}\oarg{Trenner}\marg{Kürzel}\marg{Liste}
140
+  \end{syntax}
141
+  Gibt die angegebene \meta{Liste} des Charakters \meta{Kürzel} aus, als
142
+  Trennung zwischen den einzelnen Einträgen wird \meta{Trenner} verwendet
143
+  (Standardeinstellung ", ", also ein Komma gefolgt von einem Leerzeichen). Der
144
+  Unterschied zu den obigen Macros ist das Weglassen des Listennamen und das
145
+  Verhalten bei einer nicht vorhandenen Liste, \cs{CharListe} gibt hier einen
146
+  eher kryptischen \LaTeX3-Fehler zurück.
147
+  Beispielausgabe (\bverb|\CharListe{lasse}{manoever}|):\\
148
+  \CharListe{lasse}{manoever}\\
149
+  Wohingegen \bverb|\CharListe{lasse}{zauber}| zu einem Fehler führen würde, da
150
+  \lasse\ keine Zauber kennt.
151
+\end{function}
152
+
153
+\begin{function}{\CharBoolTF}
154
+  \begin{syntax}
155
+    \cs{CharBoolTF}\marg{Kürzel}\marg{Eigenschaft}\marg{true}\marg{false}
156
+  \end{syntax}
157
+  Kann verwendet werden, um im Dokument eine Boolesche \meta{Eigenschaft} des
158
+  Charakters \meta{Kürzel} zu testen.
159
+  Beispielausgabe
160
+  (\bverb|\lasse\ kann \CharBoolTF{lasse}{magier}{}{nicht }zaubern.|):\\
161
+  \lasse\ kann \CharBoolTF{lasse}{magier}{}{nicht }zaubern.
162
+\end{function}
163
+%<<<
164
+
165
+\subsection{Mögliche Charaktereigenschaften}\label{sec:NeuerCharEig}%>>>
166
+Alle Eigenschaften in dieser Liste können ohne Rücksicht auf \mbox{Groß- und}
167
+Kleinschreibung verwendet werden (intern werden alle Zeichen zu Kleinbuchstaben
168
+umgewandelt). Eine Ausnahme hiervon bilden diejenigen Eigenschaften, die als
169
+Alias definiert und \textcolor{alias}{in dieser Farbe abgebildet} sind.
170
+
171
+\begin{longtable}{ l l c }%>>>
172
+  \toprule
173
+  Eigenschaft & Datentyp & Standardwert \\
174
+  \midrule
175
+  \endhead
176
+  \eigbes{mu}
177
+  \eigbes{kl}
178
+  \eigbes{in}
179
+  \eigbes{ch}
180
+  \eigbes{ff}
181
+  \eigbes{ge}
182
+  \eigbes{ko}
183
+  \eigbes{kk}
184
+  \eigbes{le}
185
+  \eigbes{au}
186
+  \eigbes{mr}
187
+  \eigbes{ae}
188
+  \eigbes{ke}
189
+  \eigbes{ini}
190
+  \eigbes{gs}
191
+  \eigbes{rs}
192
+  \eigbes{be}
193
+  \eigbes{ws}
194
+  \eigbes{at}
195
+  \eigbes{pa}
196
+  \eigbes{fk}
197
+  \eigbes{waffe}
198
+  \eigbes{links}
199
+  \eigbes{rasse}
200
+  \eigbes{kultur}
201
+  \eigbes{profession}
202
+  \aliaseig{klasse}{profession}
203
+  \aliaseig{Klasse}{profession}
204
+  \eigbes{magier}
205
+  \eigbes{geweihter}
206
+  \eigbes{manoever}
207
+  \aliaseig{manöver}{manoever}
208
+  \aliaseig{Manöver}{manoever}
209
+  \eigbes{zauber}
210
+  \eigbes{liturgien}
211
+  \eigbes{sonderfertigkeiten}
212
+  \bottomrule
213
+\end{longtable}%<<<
214
+
215
+Ein einfacher Strich (-) bedeutet hier, das kein Standardwert verwendet und die
216
+Eigenschaft nicht definiert wird. Die Datentypen sind:
217
+\begin{longtable}{>{\ttfamily}ll}
218
+  \toprule
219
+  \normalfont Datentyp & Erklärung \\
220
+  \midrule
221
+  \endhead
222
+  int   & Ganzzahl \\
223
+  tl    & Text (Token List) \\
224
+  bool  & Boolescher Wert (|true| oder |false|) \\
225
+  clist & Kommaseparierte Liste \\
226
+  \bottomrule
227
+\end{longtable}
228
+
229
+Diejenigen Werte, die sich aus anderen berechnen lassen, werden aus den
230
+zugehörigen Werten abgeleitet (siehe bspw.\@ \cite[S. 20]{WdH}), sollten sie
231
+nicht im vierten Argument von \cs{NeuerChar} definiert werden. Allerdings werden
232
+Rassen-, Kultur\mbox{-~}und Professionsmodifikatoren, sowie Boni und Mali durch
233
+Vor\mbox{-~}und Nachteile bei der Berechnung nicht berücksichtigt.
234
+
235
+Die dargestellten Standardwerte sind diejenigen, die \pkg{DSAchar} standardmäßig
236
+verwendet. Einige können geändert werden:
237
+
238
+\begin{function}{\DSAcharEigStandard}
239
+  In diesem Makro wird der Standardwert für die Grundeigenschaften MU, KL,
240
+  IN, CH, FF, GE, KO und KK gespeichert, eine Umdefinierung mit
241
+  \cs{renewcommand} ist möglich. Die ursprüngliche Definition ist
242
+  \Definition{\DSAcharEigStandard}.
243
+\end{function}
244
+
245
+\begin{function}{\DSAcharGSStandard}
246
+  In diesem Makro wird der Standardwert für die Geschwindigkeit eines Charakters
247
+  gespeichert, eine Umdefinierung mit \cs{renewcommand} ist möglich. Die
248
+  ursprüngliche Definition ist \Definition{\DSAcharGSStandard}.
249
+\end{function}
250
+
251
+\begin{function}{\DSAcharRSStandard}
252
+  In diesem Makro wird der Standardwert für die Rüstung eines Charakters
253
+  gespeichert, eine Umdefinierung mit \cs{renewcommand} ist möglich. Die
254
+  ursprüngliche Definition ist \Definition{\DSAcharRSStandard}.
255
+\end{function}
256
+
257
+\begin{function}{\DSAcharBEStandard}
258
+  In diesem Makro wird der Standardwert für die Behinderung eines Charakters
259
+  gespeichert, eine Umdefinierung mit \cs{renewcommand} ist möglich. Die
260
+  ursprüngliche Definition ist \Definition{\DSAcharBEStandard}.
261
+\end{function}
262
+
263
+\begin{function}{\NeueStandards}
264
+  \begin{syntax}
265
+    \cs{NeueStandards}\meta{*}\marg{Key=Value}
266
+  \end{syntax}
267
+  Mit diesem Macro können beliebige Werte als Standard für alle zukünftigen
268
+  \cs{NeuerChar}s definiert werden. Wird die gesternte Version verwendet, so
269
+  werden vorherige, mit diesem Macro gesetzte Standards gelöscht und nur die
270
+  angegebenen verwendet.
271
+\end{function}
272
+%<<<
273
+
274
+\subsection{Beispiel: \cs{NeuerChar} \lasse*}\label{sec:LasseBluten}%>>>
275
+\lstinputlisting[basicstyle=\ttfamily,language=TeX]{preamble/beispiel.tex}
276
+%<<<

+ 31
- 0
Doc/tex/doc_DSAproben.tex View File

@@ -0,0 +1,31 @@
1
+\section{Das \pkg{DSAproben} Paket}
2
+\pkg{DSAproben} stellt Macros zur Verfügung, um Proben zu setzen.
3
+
4
+\begin{function}{\probe}
5
+  \begin{syntax}
6
+    \cs{probe}\oarg{Erschwernis}\marg{Probe}
7
+  \end{syntax}
8
+  Die derzeitige Version setzt \meta{Probe} immer mit \cs{MakeUppercase}. Setzt
9
+  eine Probe mit \meta{Erschwernis}. Für die Formatierung wird \cs{probeSchrift}
10
+  verwendet. Wird \meta{Erschwernis} genutzt und ist der erste Token von
11
+  \meta{Erschwernis} kein |-|, so wird automatisch ein |+| vor die
12
+  \meta{Erschwernis} gesetzt. Beispiel: |\probe[2]{in}| gibt \probe[2]{in} aus.
13
+  Beispiel 2: |\probe[3]{Schwimmen}| gibt \probe[3]{Schwimen} aus.
14
+\end{function}
15
+
16
+\begin{function}{\vprobe}
17
+  \begin{syntax}
18
+    \cs{vprobe}\oarg{Erschwernis}\marg{Probe}
19
+  \end{syntax}
20
+  Wie \cs{probe}, nur gibt \cs{vprobe} eine \emph{vergleichende} Probe aus.
21
+  Beispiel: |\vprobe[-3]{kl}| gibt \vprobe[-3]{kl} aus.
22
+\end{function}
23
+
24
+\begin{function}{\probeSchrift}
25
+  \begin{syntax}
26
+    \cs{probeSchrift}\marg{Text}
27
+  \end{syntax}
28
+  Wird von \cs{probe} und \cs{vprobe} verwendet, um die Proben zu formatieren.
29
+  Paketstandard ist die Definition \Definition{\probeSchrift}. Kann mit
30
+  \cs{renewcommand} beliebig umdefiniert werden.
31
+\end{function}

+ 76
- 0
Doc/tex/doc_DSAutil.tex View File

@@ -0,0 +1,76 @@
1
+\section{Das \pkg{DSAutil} Paket}
2
+\pkg{DSAutil} stellt verschiedene Unterstützende Macros zur Verfügung. Sie alle
3
+können bei Bedarf natürlich auch von Autoren verwendet werden:
4
+
5
+\subsection{Formatierungsrelevantes}
6
+
7
+\begin{function}{\DSAindentedThingy}
8
+  \begin{syntax}
9
+    \cs{DSAindentedThingy}\oarg{indent}
10
+  \end{syntax}
11
+  Setzt den folgenden Absatz mit hängender Einrückung (\cs{hangindent}) der
12
+  Breite \meta{indent} (voreingestellt ist |1em|).
13
+\end{function}
14
+
15
+\begin{function}{\DSAMakeUppercase}
16
+  \begin{syntax}
17
+    \cs{DSAMakeUppercase}\oarg{Anzahl}\marg{Text}
18
+  \end{syntax}
19
+  Prüft ob \meta{Text} aus \meta{Anzahl} Token oder Gruppen besteht (mittels
20
+  \cs{DSAtllength}) und, sollte dies der Fall sein, setzt \meta{Text} mittels
21
+  \cs{MakeUppercase}, anderenfalls setzt es \meta{Text} unverändert.
22
+\end{function}
23
+
24
+\subsection{Tests}
25
+
26
+\begin{function}{\DSAifminusTF}
27
+  \begin{syntax}
28
+    \cs{DSAifminusTF}\marg{Text}\marg{true}\marg{false}
29
+  \end{syntax}
30
+  Prüft ob \meta{Text} ein |-| enthält. Sollte dies der Fall sein, wird
31
+  \meta{true} ausgeführt, sonst \meta{false}. Das |-| wird nicht gefunden,
32
+  sollte es in geschweiften Klammern versteckt werden.
33
+\end{function}
34
+
35
+\begin{function}{\DSAifemptyTF}
36
+  \begin{syntax}
37
+    \cs{DSAifemptyTF}\marg{Text}\marg{true}\marg{false}
38
+  \end{syntax}
39
+  Prüft ob \meta{Text} leer ist (auch kein Leerzeichen enthält). Sollte dies der
40
+  Fall sein, wird \meta{true} ausgeführt, sonst \meta{false}.
41
+\end{function}
42
+
43
+\begin{function}{\DSAifblankTF}
44
+  \begin{syntax}
45
+    \cs{DSAifemptyTF}\marg{Text}\marg{true}\marg{false}
46
+  \end{syntax}
47
+  Prüft ob \meta{Text} leer ist oder nur Leerzeichen enthält. Sollte dies der
48
+  Fall sein, wird \meta{true} ausgeführt, sonst \meta{false}.
49
+\end{function}
50
+
51
+\begin{function}{\DSAifnegativeTF}
52
+  \begin{syntax}
53
+    \cs{DSAifnegativeTF}\marg{Zahl}\marg{true}\marg{false}
54
+  \end{syntax}
55
+  Prüft ob \meta{Zahl} negativ ist. Sollte dies der Fall sein, wird \meta{true}
56
+  ausgeführt, sonst \meta{false}. Es verwendet einfach nur \cs{ifnum}. Es wird
57
+  nicht geprüft, ob es sich bei \meta{Zahl} tatsächlich um eine Zahl handelt.
58
+  Sollte dies nicht der Fall sein, wird \LaTeX\ einen Fehler ausgeben.
59
+\end{function}
60
+
61
+\begin{function}{\DSAifminusfirstTF}
62
+  \begin{syntax}
63
+    \cs{DSAifminusfirstTF}\marg{Text}\marg{true}\marg{false}
64
+  \end{syntax}
65
+  Prüft ob \meta{Text} ein |-| enthält und, sollte dies der Fall sein, ob dieses
66
+  an erster Stelle steht. Sollte beides zutreffen, wird \meta{true} ausgeführt,
67
+  sonst \meta{false}.
68
+\end{function}
69
+
70
+\begin{function}{\DSAtllength}
71
+  \begin{syntax}
72
+    \cs{DSAtllength}\marg{Text}
73
+  \end{syntax}
74
+  Gibt vollständig expandierbar die Anzahl von Tokens oder Gruppen in
75
+  \meta{Text} aus.
76
+\end{function}

+ 19
- 0
Doc/tex/doc_DSAwurf.tex View File

@@ -0,0 +1,19 @@
1
+\section{Das \pkg{DSAwurf} Paket}
2
+\pkg{DSAwurf} stellt derzeit eigentlich nur das Makro \cs{w} zur Verfügung:
3
+
4
+\begin{function}{\w}
5
+  \begin{syntax}
6
+    \cs{w}\oarg{Anzahl}\marg{Augen}
7
+  \end{syntax}
8
+  Gibt einen Würfelwurf formatiert aus. Für die Schrift wird das Macro
9
+  \cs{wSchrift} verwendet. Beispiel: |\w[2]{6+1}| gibt \w[2]{6+1} aus.
10
+\end{function}
11
+
12
+\begin{function}{\wSchrift}
13
+  \begin{syntax}
14
+    \cs{wSchrift}\marg{Text}
15
+  \end{syntax}
16
+  Wird von \cs{w} verwendet, um den Würfelwurf zu formatieren. Paketstandard ist
17
+  die Definition \Definition{\wSchrift}.
18
+  Kann mit \cs{renewcommand} beliebig umdefiniert werden.
19
+\end{function}

+ 18
- 0
Doc/tex/doc_einleitung.tex View File

@@ -0,0 +1,18 @@
1
+\section{Einleitung}
2
+Dieses Bündel stellt verschiedene Makros und Umgebungen zur Verfügung, um
3
+die Erstellung von Abenteuern für \ac{dsa} zu erleichtern. Es ist hierbei
4
+aufgegliedert in verschiedene Pakete, die unterschiedliche Funktionalitäten
5
+bereitstellen.
6
+
7
+Sämtliche enthaltenen Pakete können durch die Verwendung von
8
+\bverb|\usepackage{DSALaTeX}| mit einer einzigen Codezeile geladen werden.
9
+\pkg{DSALaTeX} stellt hierbei \emph{keine} weitere Funktionalität über die
10
+eigentlichen Pakete hinaus zur Verfügung.
11
+
12
+Das Bündel ist keinesfalls stabil und noch Gegenstand massiver Veränderungen.
13
+Eine zukünftige Abwärtskompatibilität zum derzeitigen Stand wird nicht
14
+garantiert.
15
+
16
+Der Autor spielte bisher nur \ac{dsa}~4.1, weshalb sich die hier verwendeten
17
+Macros natürlich an dieses Format halten, die Einsetzbarkeit in anderen
18
+\ac{dsa} Versionen muss jeder für sich prüfen.

Loading…
Cancel
Save