texlive[63457] Master/texmf-dist: schwalbe-chess (31may22)

commits+karl at tug.org commits+karl at tug.org
Tue May 31 21:44:55 CEST 2022


Revision: 63457
          http://tug.org/svn/texlive?view=revision&revision=63457
Author:   karl
Date:     2022-05-31 21:44:55 +0200 (Tue, 31 May 2022)
Log Message:
-----------
schwalbe-chess (31may22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/schwalbe-chess/README
    trunk/Master/texmf-dist/doc/latex/schwalbe-chess/schwalbe.pdf
    trunk/Master/texmf-dist/source/latex/schwalbe-chess/schwalbe.dtx
    trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls
    trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty

Modified: trunk/Master/texmf-dist/doc/latex/schwalbe-chess/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/schwalbe-chess/README	2022-05-31 19:43:45 UTC (rev 63456)
+++ trunk/Master/texmf-dist/doc/latex/schwalbe-chess/README	2022-05-31 19:44:55 UTC (rev 63457)
@@ -1,5 +1,5 @@
 schwalbe --- A package for typesetting chessproblems
-Version v2.7 / Stefan Hoening 2012-2018
+Version v2.9 / Stefan Hoening 2012-2020
 
 CONTENTS
 

Modified: trunk/Master/texmf-dist/doc/latex/schwalbe-chess/schwalbe.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/schwalbe-chess/schwalbe.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/schwalbe-chess/schwalbe.dtx	2022-05-31 19:43:45 UTC (rev 63456)
+++ trunk/Master/texmf-dist/source/latex/schwalbe-chess/schwalbe.dtx	2022-05-31 19:44:55 UTC (rev 63457)
@@ -13,9 +13,9 @@
 %%
 %%
 % \fi
-% \def\fileversion{v2.7}
-% \def\docdate{2019/12/28}
-% \CheckSum{2122}
+% \def\fileversion{v2.9}
+% \def\docdate{2022/05/28}
+% \CheckSum{2247}
 % \changes{v1.1}{03 June 2011}{Reflecting change in command
 % @writename inside diagram.sty}
 % \changes{v1.2}{01 July 2011}{Added parameter for Band to Heft
@@ -52,6 +52,13 @@
 % values given in Heft command.}
 % \changes{v2.6}{16 October 2019}{Moved do at dia@job redefinition to schwalbe.cls.}
 % \changes{v2.7}{28 December 2019}{Used new begin/end diagram hook command to deactivate/activate solslash before/after diagrams.}
+% \changes{v2.8}{27 December 2020}{Added code to generate file
+% containing Loesung comands while generating diagrams within Urdrucke
+% environment.\\
+% Added Loesung command to generate intro of a single problem within
+% Loesungen environment.}
+% \changes{v2.9}{28 May 2022}{Added code to simplify measuring size of
+% articles.}
 %
 % \DoNotIndex{\@arabic,\def,\@idxitem,\@ifnextchar,\@ifstar,
 % \@ne,\@ptsize,\ ,\advance,\AtEndOfPackage,\begin,\begingroup,
@@ -74,9 +81,9 @@
 % \newcommand*{\Schwalbe}{\textbf{\textit{Schwalbe}}}
 % \newcommand*{\DieSchwalbe}{\hbox{\textbf{\textit{Die Schwalbe}}}}
 % 
-% \title{Der \LaTeX-Style f"ur die Problemschach-Zeitschrift
+% \title{Der \LaTeX-Style für die Problemschach-Zeitschrift
 % \DieSchwalbe{}\\{\large Version~\fileversion}}
-% \author{Stefan H\"oning\\Neuss}
+% \author{Stefan Höning\\Neuss}
 % \date{\docdate}
 %
 % \maketitle
@@ -84,11 +91,11 @@
 % \begin{abstract}
 % Diese Dokumentation beschreibt die \LaTeX-Class und \LaTeX-Style, die zum
 % Setzen der Zeitschrift \DieSchwalbe{} benutzt wird --- die
-% Mitgliederzeitschrift der deutschen Vereinigung f"ur Problemschach.
+% Mitgliederzeitschrift der deutschen Vereinigung für Problemschach.
 %
 % Die Schwalbe-Class hat die Aufgabe, die Seiteneinstellungen und Umgebungen
-% f"ur die Schwalbe zu definieren.  Der Schwalbe-Style hat die Aufgaben,
-% Layoutanpassungen bzgl.\ des \verb+diagram.sty+ vorzunhmen, mit dem die
+% für die Schwalbe zu definieren.  Der Schwalbe-Style hat die Aufgaben,
+% Layoutanpassungen bzgl.\ des \verb+diagram.sty+ vorzunehmen, mit dem die
 % Problemschach-Diagramme erzeugt werden.
 % \end{abstract}
 %
@@ -101,7 +108,7 @@
 % Parameter in der angegebenen Reihenfolge:
 %
 % \begin{enumerate}
-% \item der Band, zu dem das Heft geh"ort
+% \item der Band, zu dem das Heft gehört
 % \item die Nummer des Heftes
 % \item der Monat des Erscheinens als Zahl
 % \item das Jahr des Erscheinens
@@ -115,14 +122,14 @@
 % \verb+\Heft{XXXIV}{299}{12}{2019}{361}+
 %
 % \DescribeEnv{Editorial}
-% Die \verb+Editorial+ Umgebung ben"otigt einen Parameter, der
-% die "Uberschrift definiert. Als optionaler Parameter kann noch
-% der Eintrag im Inhaltsverzeichnis festgelegt werden. L"asst man
+% Die \verb+Editorial+ Umgebung benötigt einen Parameter, der
+% die Überschrift definiert. Als optionaler Parameter kann noch
+% der Eintrag im Inhaltsverzeichnis festgelegt werden. Lässt man
 % diesen weg, erscheint dort der Begriff {\bfseries Editorial}.
 %
 % \DescribeEnv{aktuell}
-% Die \verb+aktuell+ Umgebung f"ur die {\bfseries Aktuellen Meldungen} kommt
-% ohne parameter aus. Neben der "Uberschrift wird ein Eintrag im
+% Die \verb+aktuell+ Umgebung für die {\bfseries Aktuellen Meldungen} kommt
+% ohne parameter aus. Neben der Überschrift wird ein Eintrag im
 % Inhaltsverzeichnis erzeugt.
 %
 % \DescribeEnv{InformalEntscheid}
@@ -135,7 +142,7 @@
 % \item das Jahr, auf das sich der Entscheid bezieht
 % \item der Name des Preisrichters
 % \end{enumerate}
-% Die Umgebung setzt automatisch die "Uberschrift und erzeugt
+% Die Umgebung setzt automatisch die Überschrift und erzeugt
 % einen Eintrag im Inhaltsverzeichnis.
 %
 % Außerdem wird der Kopf bei Diagrammen anders ausgegeben: In der 1.~Zeile
@@ -161,19 +168,19 @@
 %    dieser wird in der Form \verb+<Name>, <Vorname>/<Wohnort>+
 %    angegeben.
 % \end{enumerate}
-% Um die "Uberschrift des Aufsatzes zu setzen, gibt es die
+% Um die Überschrift des Aufsatzes zu setzen, gibt es die
 % Umgebung \verb+Titel+. Die wesentliche Aufgabe dieser Umgebung
-% ist es, passende Abst"ande zum vorherigen sowie zum
+% ist es, passende Abstände zum vorherigen sowie zum
 % nachfolgenden Text zu erzeugen.
 %
 % \DescribeEnv{Urdrucke}
-% Die Umgebung \verb+Urdrucke+ ben"otigt als Parameter die Nummer
+% Die Umgebung \verb+Urdrucke+ benötigt als Parameter die Nummer
 % des ersten Urdrucks.
 %
 % \DescribeMacro{\Abteilung}
 % Innerhalb der Urdrucke gibt es den Befehl \verb+\Abteilung+, mit dem die
 % einzelnen Abteilungen innerhalb der Urdrucke eingeleitet werden.
-% Der Befehl benötigt im Normalfall 5 Parameter:
+% Der Befehl benötigt im 5 Parameter:
 % \begin{enumerate}
 % \item Name der Abteilung
 % \item Name der Referenz der ersten Problem der Abteilung
@@ -184,17 +191,17 @@
 %
 % 
 % \DescribeMacro{\Abteilung*}
-% Sollte in der Abteilung nur ein Urdruck erscheinen, muss man
+% Sollte in einer Abteilung einma nur ein Urdruck erscheinen, muss man
 % \verb+\Abteilung*+ benutzen und die Referenz auf das letzte Problem
 % weglassen.
 %
 % \DescribeEnv{maerchenlexikon}
 % \DescribeMacro{\maerchenart}
-% Im Vorspann der M"archenschachabteilung der Urdrucke werden die
-% benutzten M"archenschachregeln erl"autert. Dies geschieht
+% Im Vorspann der Märchenschachabteilung der Urdrucke werden die
+% benutzten Märchenschachregeln erläutert. Dies geschieht
 % innerhalb der Umgebung \verb+maechenlexion+. Innerhalb dieser
-% Umgebung werden alle M"archenarten mittels \verb+\maerchenart+
-% eingef"uhrt, die einen Parameter hat, mit dem die M"archenart
+% Umgebung werden alle Märchenarten mittels \verb+\maerchenart+
+% eingeführt, die einen Parameter hat, mit dem die Märchenart
 % angegeben wird.
 %
 % \DescribeEnv{retrolexikon}
@@ -214,7 +221,7 @@
 % \end{enumerate}
 %
 % \DescribeMacro{\Abteilung}
-% Innerhalb der L"osungen gibt es auch einen Befehl \verb+\Abteilung+ um die einzelnen Abteilungen einzuleiten.
+% Innerhalb der Lösungen gibt es auch einen Befehl \verb+\Abteilung+ um die einzelnen Abteilungen einzuleiten.
 % Die Parameter für diesen Befehl lauten:
 % \begin{enumerate}
 % \item{Name der Abteilung}
@@ -223,7 +230,7 @@
 % \item{Name des Sachbearbeiters}
 % \end{enumerate}
 %
-% \DescribeMacro{\Abteilung}
+% \DescribeMacro{\Abteilung*}
 % Sollte einmal nur eine Aufgabe in der Abteilung vorhanden sein, benutzt man
 % \verb+\Abteilung*+, die die dann nur 3 Parameter erwartet.
 %
@@ -240,14 +247,39 @@
 % Bei der \verb+\Loeser*+ Form erscheint der Name auch an der Stelle im Text.
 %
 % \DescribeMacro{\ListeLoeserKuerzel}
-% Gibt die aufgesammelten L"oserk"urzel und -namen aus.
+% Gibt die aufgesammelten Löserkürzel und -namen aus.
+%
+% \DescribeMacro{\Loesung}
+% \DescribeMacro{\Loesung*}
+% Die Lösungsbesprechung zu einer Aufgabe wird mit dem Befehl
+% \verb+\Loesung+ eingeleitet, der 3 Parameter benötigt:
+% \begin{enumerate}
+% \item{Nummer der Aufgabe}
+% \item{Liste der Autoren}
+% \item{Lösung der Aufgabe}
+% \end{enumerate}
+% Wird die Form ohne * verwendet, wird von der Aufgabe nur
+% die Aufgabennummer und - in runden Klammern - die Liste der Autoren
+% gesetzt. Der Punkt hinter der Klammer entfällt. Der Lösungstext
+% aus dem 3. Parameter kann % dann allerding mittels \verb+\showsol+ 
+% ausgegeben werden.
 % 
+% Bei der *-Form wird ein Punkt hinter die schließende Runde Klammer
+% bei den Autoren gesetzt, und dann die Lösung ausgegeben.
+%
+% Diese \verb+\Loesung+ Kommandos für den Lösungsteil werden beim
+% Kompilieren des Urdruckteils des entsprechenden Hefts automatisch in
+% eine Datei geschrieben. Diese Datei wird den Sachbearbeitern für die
+% Erstellung der Lösungsbesprechungen zur Verfügung gestellt. In der
+% Regel müssen hier dann nur die Lösungen ergänzt werden - wenn diese
+% nicht bereits bei den Urdrucken mit erfasst worden sind.
+% 
 % \DescribeEnv{BuB}
 % Die \verb+BuB+ Umgebung setzt die {\bfseries Bemerkungen und
 % Berichtigungen}
 %
 % \DescribeEnv{turnierberichte}
-% Innerhalb der Umgebung \verb+turnierberichte+ wird "uber
+% Innerhalb der Umgebung \verb+turnierberichte+ wird über
 % Turniere z.\,B.\ aus anderen Zeitschriften berichtet.
 %
 % \DescribeEnv{Buecher}
@@ -282,17 +314,17 @@
 % Einleitende \verb+\begin{Turnierbericht}+ besitzt als Parameter
 % den Namen des Turniers und den Namen des Autors in der Form:
 % \verb+<Nachname>, <Vorname>+. Diese beiden Angaben werden
-% automatisch ins Inhaltsverzeichnis "ubernommen.
-% Der Titel des Turnierberichts ist wie bei Aufs"atzen in die
+% automatisch ins Inhaltsverzeichnis übernommen.
+% Der Titel des Turnierberichts ist wie bei Aufsätzen in die
 % Umgebung \verb+Titel+ einzubauen.
 %
 % \DescribeEnv{Entscheid}
 % Die \verb+Entscheid+ Umgebung wird genutzt, um
 % Turnierentscheide zu allgemeinen Turnieren der \Schwalbe{}, oder
-% aber auch Nachtr"age oder entg"ultige Entscheide zu setzen.
+% aber auch Nachträge oder entgültige Entscheide zu setzen.
 % Als Parameter wird an das einleitende \verb+\begin{Entscheid}+
 % der Titel des Entscheids angegeben, der ins Inhaltsverzeichnis
-% "ubernommen werden soll. Der eigentliche Titel muss --- wie bei
+% übernommen werden soll. Der eigentliche Titel muss --- wie bei
 % verschiedenen anderen Umgebungen auch --- mittels der
 % \verb+Titel+ Umgebung gesetzt werden.
 % 
@@ -299,7 +331,7 @@
 %
 % \DescribeEnv{Loeserliste}
 % Nach dem einleitenden \verb+\begin{Loeserliste}+ ist als
-% Parameter das Jahr anzugeben, auf dass sich die L"oeserliste
+% Parameter das Jahr anzugeben, auf dass sich die Löserliste
 % bezieht.
 %
 % \DescribeEnv{Turnierausschreibung}
@@ -312,18 +344,18 @@
 %
 % \section{Kleine Helferlein}
 %
-% \subsection{Diagrammgr"ossen}
+% \subsection{Diagrammgrössen}
 % \DescribeMacro{\smalldia}
 % \DescribeMacro{\normaldia}
 % In der \Schwalbe{} werden normalerweise zwei verschiedene
-% Diagrammgr"ossen verwendet. Mittels \verb+\normaldia+ wird die
-% Normalgr"osse eingestellt. Mittels \verb+\smalldia+ kann auf
+% Diagrammgrössen verwendet. Mittels \verb+\normaldia+ wird die
+% Normalgrösse eingestellt. Mittels \verb+\smalldia+ kann auf
 % kleinere Diagramme umgeschaltet werden --- von denen dann 4
-% St"uck in eine Zeile passen. Da die kleineren Diagramme
+% Stück in eine Zeile passen. Da die kleineren Diagramme
 % normalerweise zu mehreren benutzt werden, kann dieser
-% Befehl nat"urlich auch als Umgebung benutzt werden.
+% Befehl natürlich auch als Umgebung benutzt werden.
 %
-% \subsection{H"aufige Abk"urzungen}
+% \subsection{Häufige Abkürzungen}
 % \DescribeMacro{\dh}
 % \DescribeMacro{\ua}
 % \DescribeMacro{\zB}
@@ -332,20 +364,20 @@
 % \DescribeMacro{\seedia}
 % \LaTeX\ intepretiert einen Punkt nach einem Kleinbuchstaben
 % normalerweise als Satzende. Als Folge davon ist der Abstand
-% hinter diesem Punkt gr"osser als der normale Wortabstand.
-% Insbesondere bei Abk"urzungen ist dies aber nicht
-% gew"unscht. Besonders bei mehrgliedrigen Abk"urzungen sollte
+% hinter diesem Punkt grösser als der normale Wortabstand.
+% Insbesondere bei Abkürzungen ist dies aber nicht
+% gewünscht. Besonders bei mehrgliedrigen Abkürzungen sollte
 % man sogar einen kleineren Abstand als den normalen Wortabstand
-% zwischen den Gliedern der Abk"urzung w"ahlen. Daher definiert
-% der Style Befehle f"ur einige H"aufig vorkommende Abk"urzungen:
+% zwischen den Gliedern der Abkürzung wählen. Daher definiert
+% der Style Befehle für einige Häufig vorkommende Abkürzungen:
 %
 % \medskip
 % \begin{tabular}{|l|l|l|}
 % \hline
-% {\bfseries Befehl}&{\bfseries f"ur}&{\bfseries Bemerkungen}\\
+% {\bfseries Befehl}&{\bfseries für}&{\bfseries Bemerkungen}\\
 % \hline
-% \verb+\dh+&d.\,h.&enth"alt ein Leerzeichen am Ende\\
-% \verb+\ua+&u.\,a.&enth"alt ein Leerzeichen am Ende\\
+% \verb+\dh+&d.\,h.&enthält ein Leerzeichen am Ende\\
+% \verb+\ua+&u.\,a.&enthält ein Leerzeichen am Ende\\
 % \verb+\zB+&z.\,B.&\\
 % \verb+\su+&s.\,u.&\\
 % \verb+\ep+&e.\,p.&\\
@@ -381,10 +413,10 @@
 %
 % \subsection{Verschiedenes}
 % \DescribeMacro{\figline}
-% Mittels \verb+\figline+ kann eine Zeile mit K"onigen ausgegeben
+% Mittels \verb+\figline+ kann eine Zeile mit Königen ausgegeben
 % werden, die als Trenner zwischen 2 Abschnitten dient.
 % \DescribeMacro{\foto}
-% Um Freiraum f"ur ein Foto zu lassen kann der Befehl\newline
+% Um Freiraum für ein Foto zu lassen kann der Befehl\newline
 % \verb+\foto{<Breite>}{<Hoehe>}{<Bildunterschrift>}+\newline
 % benutzt werden.
 %
@@ -397,18 +429,25 @@
 % \DescribeMacro{\mal}
 % Als Kurzschreibweise für das $\times$ Symbol ist der Befehl \verb+\mal+ definiert.
 %
+% \DescribeEnv{MeasureMode}
+% \DescribeMacro{\MeasureNewpage}
+% Um den Umfang der einzelnen Artikel einfacher Abschätzen zu können,
+% füge ich vor jedem Artikel den Befehl \verb+\MeasureNewpage+ ein,
+% der ein \verb+\newpage+ durchführt, wenn der Boolean
+% \verb+MeasureMode+ gleich \verb+true+ ist.
+%
 % \StopEventually{\PrintIndex\PrintChanges}
 %
-% \section{Die Treiberdatei f"ur die Dokumentation}
+% \section{Die Treiberdatei für die Dokumentation}
 % Der folgende Code erzeugt die Dokumentation. Da dies der erste
 % nicht auskommentierte Code in der Datei ist, kann die
 % Dokumentation einfach erzeugt werden, indem man diese Datei mit
-% \LaTeXe\ "ubersetzt.
+% \LaTeXe\ übersetzt.
 %    \begin{macrocode}
 %<*driver>
 \documentclass[a4paper]{article}
 \usepackage{doc}
-\RequirePackage{schwalbe}
+% \LoadClass{schwalbe}
 \RequirePackage[utf8]{inputenc}% fsRUS 140121
 \RequirePackage[ngerman]{babel}
 \setlength{\hoffset}{-1in}
@@ -431,9 +470,10 @@
 %    \begin{macrocode}
 %<*class>
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{schwalbe}[2019/12/28]
+\ProvidesClass{schwalbe}[2022/05/28]
 \LoadClass[11pt,a4paper]{article}
 \RequirePackage[12pt]{schwalbe}[2019/12/28]
+\RequirePackage{cpdparse}[2020/12/27]
 \RequirePackage[T2A,T1]{fontenc}% fsRUS 140121
 \RequirePackage[koi8-r,utf8]{inputenc}% fsRUS 140121
 \RequirePackage[russian,german,english,ngerman]{babel}
@@ -445,7 +485,6 @@
 \RequirePackage{paralist}
 \RequirePackage{afterpage}
 \InputIfFileExists{schwalbe.ext}{}{}%
-\RequirePackage{picinpar}
 %    \end{macrocode}
 %
 % Ein paar Trennhilfen und Einstellungen zum Trennverhalten.
@@ -487,7 +526,7 @@
    \fi%
 }
 %-----------------------------------------------------------
-% Ein paar Abk"urzungen:
+% Ein paar Abkürzungen:
 %
 \def\dh{d.\,h.\ \ignorespaces}
 \def\ua{u.\,a.\ \ignorespaces}
@@ -508,7 +547,7 @@
 }}
 %
 %-----------------------------------------------------------
-% Freiraum f"ur Fotos
+% Freiraum für Fotos
 \def\foto#1#2#3{%
   \begin{minipage}[t]{#1}
   \hbox to #1{\hsize#1%
@@ -538,12 +577,12 @@
 }
 %    \end{macrocode}
 %
-% Im Titel sowie bei den Urdrucken und L"osungen werden die Namen der Monate benötigt.
+% Im Titel sowie bei den Urdrucken und Lösungen werden die Namen der Monate benötigt.
 %
 %    \begin{macrocode}
 \newcommand{\sw at monat}[1]{%
 \ifcase#1\relax%
-\or Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi%
+\or Januar\or Februar\or März\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi%
 }%
 %    \end{macrocode}
 %
@@ -575,12 +614,12 @@
    %\input{intro}%
    \vskip5mm%
    \newcommand{\SchwalbeCopyright}%
-   {\textcopyright{} Schwalbe, deutsche Vereinigung für Problemschach #4}%
+   {\textcopyright{} #4 Schwalbe, deutsche Vereinigung für Problemschach e.\,V.}%
 }
 %    \end{macrocode}
 %
-% Eine Umgebung f"ur ein Editorial. Als optionaler Parameter kann die
-% "Uberschrift im Text angegeben werden. Der andere Parameter wird f"ur den
+% Eine Umgebung für ein Editorial. Als optionaler Parameter kann die
+% Überschrift im Text angegeben werden. Der andere Parameter wird für den
 % Eintrag im Inhaltsverzeichnis benutzt.
 %    \begin{macrocode}
 \newenvironment{Editorial}[2][Editorial]{%
@@ -604,7 +643,7 @@
 }{}
 %    \end{macrocode}
 %
-% Eine Umgebung f"ur {\itshape AKTUELLE MELDUNGEN}, die die "Uberschrift und
+% Eine Umgebung für {\itshape AKTUELLE MELDUNGEN}, die die Überschrift und
 % den Eintrags ins Inhaltsverzeichnis erzeugt.
 %    \begin{macrocode}
 \newenvironment{aktuell}{%
@@ -627,10 +666,10 @@
 }{}
 %    \end{macrocode}
 %
-% F"ur Informalturniere der \Schwalbe{} gibt es eine besondere Umgebung, die die 3
+% Für Informalturniere der \Schwalbe{} gibt es eine besondere Umgebung, die die 3
 % Parameter {\itshape Abteilung}, {\itshape Jahr} und {\itshape Preisrichter}
-% ben"otigt.  Die normale Form der Umgebung erzeugt auch die "Uberschrift.
-% Falls dies unterdr"uckt werden mu"s -- um z.\,B. die "Uberschrift speziell zu
+% benötigt.  Die normale Form der Umgebung erzeugt auch die Überschrift.
+% Falls dies unterdrückt werden mu"s -- um z.\,B. die Überschrift speziell zu
 % formatieren, kann die {\bfseries Stern-Form} der Umgebung genutzt werden.
 % Daher findet die Auswertung der Parameter in den Kommandos
 % \verb+\x at InformalEntscheid+ und \verb+\y at InformalEntscheid+ statt.
@@ -696,7 +735,7 @@
    \let\orig at dia@above=\dia at above%
    \let\dia at above=\dia at above@InformalEntscheid%
    \setboolean{normaldiaabove}{false}%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \bgroup%
       \def\@tempb{\InformalEntscheid}%
       \def\@tempc{#1}%
@@ -725,14 +764,15 @@
 }
 %    \end{macrocode}
 %
-% Die Umgebung f"ur Aufs"atze. Die Parameter ({\itshape Titel} und {\itshape
-% Autoren (mit Wohnorten)}) werden f"ur das Inhaltsverzeichnis verwendet.
+% Die Umgebung für Aufsätze. Die Parameter ({\itshape Titel} und {\itshape
+% Autoren (mit Wohnorten)}) werden für das Inhaltsverzeichnis verwendet.
 %    \begin{macrocode}
 \newenvironment{Aufsatz}[2]{%
+   \diagnum{1}%
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
+   \setcounter{footnote}{0}%
    \begingroup%
-      \setcounter{footnote}{0}%
       \def\@tempa{#1}%
       \def\@tempc{\aufsatz}%
       \def\@tempb{#2}%
@@ -773,7 +813,7 @@
 %
 % Innerhalb der Umgebung \verb+Urdrucke+ werden
 % die Diagramme immer zu dritt nebeneinander gesetzt -
-% sofern dies pa"st. Au"serdem werden von jedem Diagramm
+% sofern dies passt. Außerdem werden von jedem Diagramm
 % die Autoren sowie Diagramm und Seitennummern in die 
 % Datei \jobname.inhalt geschrieben.
 % Zur Einleitung der einzelnen Abteilungen gibt es einen speziellen Befehl
@@ -780,6 +820,31 @@
 % \verb+\Abteilung+.
 %
 %    \begin{macrocode}
+\newwrite\@swfile at lsghead
+\newcommand{\sw at openlsghead}{%
+    \immediate\openout\@swfile at lsghead=\jobname.lsgh\relax%
+}
+\newcommand{\sw at closelsghead}{%
+    \immediate\closeout\@swfile at lsghead%
+}
+
+\AtBeginDocument{\sw at openlsghead}
+\AtEndDocument{\sw at closelsghead}
+
+\newcommand{\sw at write@abteilung}[2]{%
+    \esol%
+    \bgroup%
+    \edef\@tempd{#1}%
+    \edef\@tempe{#2}%
+    \edef\@tempa{%
+        \immediate\write\@swfile at lsghead{%
+            \@nearverbatim\@tempd|%
+            \@nearverbatim\@tempe%
+        }%
+    }%
+    \expandafter\egroup\@tempa%
+    \bsol%
+}
 \newcommand{\sw at urd@abteilung}{%
     \@ifstar%
         \@sw at urd@abteilung at one%
@@ -789,11 +854,13 @@
     \textbf{#1 (\ref{#2}): %
     Bearbeiter = #3%
     \url{#4}}
+    \sw at write@abteilung{*}{#2}%
 }
 \newcommand{\@sw at urd@abteilung}[5]{%
     \textbf{#1 (\ref{#2}-\ref{#3}): %
     Bearbeiter = #4%
     \url{#5}}
+    \sw at write@abteilung{#2}{#3}%
 }
 \newenvironment{Urdrucke}[1]{%
     \setboolean{showcity}{true}%
@@ -804,7 +871,7 @@
     \def\do at dia@job{%    
         % Gebe das Diagramm aus
         \unhbox\dia at box%
-        % Erzeuge die Eintr"age f"ur das Inhaltsverzeichnis
+        % Erzeuge die Einträge für das Inhaltsverzeichnis
         \sw at problem%
     }%
     \ttitel at skip%
@@ -854,7 +921,7 @@
 \newcommand{\sw at loesungen}[2]{%
    \begingroup%
    \ttitel at skip%
-   \centerline{\Large\bfseries L\"osungen der Urdrucke aus Heft #1, #2}%
+   \centerline{\Large\bfseries Lösungen der Urdrucke aus Heft #1, #2}%
    \titel at skip%
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
@@ -903,8 +970,9 @@
 }
 %    \end{macrocode}
 %
-% Innerhalb der einzelnen Abteilungen in den L"osungen werden die Namen und K"urzel der L"oser aufgesammelt, damit
-% die Liste der L"oserk"urzel am Beginn der Lösungsbesprechungen angegeben werden kann.
+% Innerhalb der einzelnen Abteilungen in den Lösungen werden die Namen
+% und Kürzel der Löser aufgesammelt, damit die Liste der Löserkürzel
+% am Beginn der Lösungsbesprechungen angegeben werden kann.
 %
 %    \begin{macrocode}
 \newwrite\@cpdfile at loeserkuerzel
@@ -938,12 +1006,59 @@
 }
 %    \end{macrocode}
 %
+% Einzelne Lösungen innerhalb der Lösungsbesprechung sollen mit dem
+% Befehl \verb+\Loesung+ eingeleitet werden.
 %
-% Eine Umbegung f"ur die L"oserliste.
 %    \begin{macrocode}
+\newcounter{sw at loesung@author at count}
+\newcounter{sw at loesung@author at index}
+\def\sw at count@authors#1; {%
+    \stepcounter{sw at loesung@author at count}%
+    \cpd at parse@list%
+}
+\def\sw at display@author#1, #2; {%
+    \stepcounter{sw at loesung@author at index}%
+    \ifthenelse{\value{sw at loesung@author at index}=1}{%
+        % No separator before 1st author
+    }{%
+        \ifthenelse{\value{sw at loesung@author at index}=\value{sw at loesung@author at count}}{%
+            \ \& %
+        }{%
+            , %
+        }%
+    }%
+    #2 #1%
+    \cpd at parse@list%
+}
+\newcommand{\sw at loesung@authors}[1]{%
+\setcounter{sw at loesung@author at count}{0}%
+\let\cpd at parse@action=\sw at count@authors%
+\cpd at parse@list#1; \relax%
+\setcounter{sw at loesung@author at index}{0}%
+\let\cpd at parse@action=\sw at display@author%
+(\cpd at parse@list#1; \relax)%
+}
+\newcommand{\showsol}{}
+\newcommand{\cpd at Loesung}[3]{%
+    \textbf{#1}\ \sw at loesung@authors{#2}%
+    \renewcommand{\showsol}{#3}%
+}
+\newcommand{\cpd at Loesung@star}[3]{%
+    \textbf{#1}\ \sw at loesung@authors{#2}\ #3%
+    \renewcommand{\showsol}{}%
+}
+\newcommand{\Loesung}{%
+    \@ifstar{\cpd at Loesung@star}{\cpd at Loesung}%
+}
+
+%    \end{macrocode}
+%
+%
+% Eine Umbegung für die Löserliste.
+%    \begin{macrocode}
 \newenvironment{Loeserliste}[1]{%
    \ttitel at skip%
-   \centerline{\Large\bfseries L\"oserliste #1}%
+   \centerline{\Large\bfseries Löserliste #1}%
    \titel at skip%
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
@@ -961,26 +1076,26 @@
 }{}
 %    \end{macrocode}
 %
-% Eine Zwischen"uberschrift f"ur {\itshape Sonderpunkte \& Dauerkonto}.
+% Eine Zwischenüberschrift für {\itshape Sonderpunkte \& Dauerkonto}.
 %    \begin{macrocode}
 \newcommand{\dauerkonto}[1]{%
    \ttitel at skip%
-   \centerline{\large\bfseries L\"oserliste: Sonderpunkte \& Dauerkonto #1}%
+   \centerline{\large\bfseries Löserliste: Sonderpunkte \& Dauerkonto #1}%
    \titel at skip%
 }
 %    \end{macrocode}
 %
-% Eine Zwischen"uberschrift f"ur den Preisbericht zum L\"osungswettbewerb.
+% Eine Zwischenüberschrift für den Preisbericht zum Lösungswettbewerb.
 %    \begin{macrocode}
 \newcommand{\loesungswettbewerb}[1]{
    \ttitel at skip%
-   \centerline{\Large\bfseries Preisbericht zum L\"osungswettbewerb #1}%
+   \centerline{\Large\bfseries Preisbericht zum Lösungswettbewerb #1}%
    \titel at skip%
 }
 %    \end{macrocode}
 %
-% Die Umgebung f"ur {\bfseries Bemerkungen und Berichtigungen} erzeugt die
-% "Uberschrift und den Eintrag ins Inhaltsverzeichnis.
+% Die Umgebung für {\bfseries Bemerkungen und Berichtigungen} erzeugt die
+% Überschrift und den Eintrag ins Inhaltsverzeichnis.
 %    \begin{macrocode}
 \newenvironment{BuB}{%
    \ttitel at skip%
@@ -1023,11 +1138,11 @@
 \def\endUntertitel{\subtitel at subskip}
 %    \end{macrocode}
 %
-% Eine Umgebung f"ur Berichte ohne automatisch erstellte "Uberschrift.
-% Der "ubergebene Wert wird in das Inhaltsverzeichnis "ubernommen.
+% Eine Umgebung für Berichte ohne automatisch erstellte Überschrift.
+% Der übergebene Wert wird in das Inhaltsverzeichnis übernommen.
 %    \begin{macrocode}
 \newenvironment{Bericht}[1]{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
    \bgroup%
@@ -1045,8 +1160,8 @@
 }{}
 %    \end{macrocode}
 %
-% Eine Umgebung f"ur Gr"usse ohne automatisch erstellte "Uberschrift.
-% Der "ubergebene Wert wird in das Inhaltsverzeichnis "ubernommen.
+% Eine Umgebung für Grüsse ohne automatisch erstellte Überschrift.
+% Der übergebene Wert wird in das Inhaltsverzeichnis übernommen.
 %    \begin{macrocode}
 \newenvironment{Gruss}[1]{%
    % Eintrag im Inhaltsverzeichnis
@@ -1067,8 +1182,8 @@
 }{}
 %    \end{macrocode}
 %
-% Eine Umgebung f"ur Tagungsberichte ohne automatisch erstellte "Uberschrift.
-% Der "ubergebene Wert wird in das Inhaltsverzeichnis "ubernommen.
+% Eine Umgebung für Tagungsberichte ohne automatisch erstellte Überschrift.
+% Der übergebene Wert wird in das Inhaltsverzeichnis übernommen.
 %    \begin{macrocode}
 \newenvironment{Tagung}[1]{%
    % Eintrag im Inhaltsverzeichnis
@@ -1090,12 +1205,12 @@
 %    \end{macrocode}
 %
 % Bei Turnierberichten wird nur ein Eintrag ins Inhaltsverzeichnis erzeugt.
-% Die "Uberschrift muss in der Umgebung \verb+Titel+ gesetzt werden.
+% Die Überschrift muss in der Umgebung \verb+Titel+ gesetzt werden.
 %    \begin{macrocode}
 \newenvironment{Turnierbericht}[2]{%
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \bgroup%
       \def\@tempb{\Turnierbericht}%
       \def\@tempc{#1}%
@@ -1113,7 +1228,7 @@
 }{}
 %    \end{macrocode}
 %
-% Die Umbegung f"ur Berichte von Turnieren aus anderen Zeitschriften.
+% Die Umbegung für Berichte von Turnieren aus anderen Zeitschriften.
 %    \begin{macrocode}
 % Turnierberichte aus anderen Zeitschriften
 \newenvironment{turnierberichte}{%
@@ -1143,10 +1258,10 @@
 }
 %   \end{macrocode}
 %
-% Das {\itshape kleine M"archenschach-Lexikon} im Urdruckteil kann in mehrere
+% Das {\itshape kleine Märchenschach-Lexikon} im Urdruckteil kann in mehrere
 % Abschnitte zerlegt werden, damit es besser auf die Seiten passt. Bei der
 % ersten \verb+maerchenlexikon+ Umgebung steht die Einleitung.  Zwei
-% M"archenarten werden mittels \verb+---+ voneinander getrennt.
+% Märchenarten werden mittels \verb+---+ voneinander getrennt.
 %   \begin{macrocode}
 \newcounter{@maerchenlexikon}
 \setcounter{@maerchenlexikon}{0}
@@ -1162,7 +1277,7 @@
 \newenvironment{maerchenlexikon}%
 {%
   \ifthenelse{\value{@maerchenlexikon}=0}{%
-    {\itshape Kleines M\"archenschach-Lexikon:} %
+    {\itshape Kleines Märchenschach-Lexikon:} %
   }{}%
   \setboolean{@first at lexikon@entry}{true}%
   \stepcounter{@maerchenlexikon}%
@@ -1195,12 +1310,16 @@
 %
 % Die Umbegung \verb+Entscheid+ erzeugt einen Eintrag ins Inhaltsverzeichnis.
 % Als Parameter ist der Name des Turnier anzugeben.
-% Die "Uberschrift muss mittels der Umbebung \verb+Titel+ gesetzt werden.
+% Die Überschrift muss mittels der Umbebung \verb+Titel+ gesetzt werden.
 %    \begin{macrocode}
 \newenvironment{Entscheid}[1]{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
+   % Weitere Einstellungen
+   \let\orig at dia@above=\dia at above%
+   \let\dia at above=\dia at above@InformalEntscheid%
+   \setboolean{normaldiaabove}{false}%
    \bgroup%
       \def\@tempb{\Entscheid}%
       \def\@tempc{#1}%
@@ -1251,7 +1370,7 @@
 %     1. Autor(en) und
 %     2. Titel des Buches
 % anzugeben. Beide Angaben erscheinen Fettgedruckt am Beginn der
-% Buchbesprechung und werden f"ur das Register "ubernommen.
+% Buchbesprechung und werden für das Register übernommen.
 %
 % Schreiben der Autoren
 %
@@ -1452,7 +1571,7 @@
    \titel at skip%
 }
 %-----------------------------------------------------------
-% 7) Personalia: Geburtstage und Sterbef"alle
+% 7) Personalia: Geburtstage und Sterbefälle
 %    Parameter: (Geburt)
 %        1. Name
 %        2. Alter
@@ -1474,7 +1593,7 @@
    \centerline{\Large\bfseries#1\ \ #2}
    \titel at skip%
    \fi%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -1498,7 +1617,7 @@
    \centerline{#1}
    \titel at skip%
    \fi%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -1522,7 +1641,7 @@
    \ttitel at skip%
    \hbox to \textwidth{\large\bfseries\uppercase{#1}\hfill#2}%
    \titel at skip%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -1542,7 +1661,7 @@
 }
 %
 \def\y at Verstorben#1{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -1560,7 +1679,7 @@
 }
 %
 \def\Nachruf#1{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -1613,8 +1732,8 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Es folgen ein paar Hilfskommandos und Initialsierungen
 %-----------------------------------------------------------
-% 1. "Offnen der datei, die alle Eintr"age f"ur das 
-%    Inhaltsverzeichnis enth"alt.
+% 1. "Offnen der datei, die alle Einträge für das 
+%    Inhaltsverzeichnis enthält.
 %
 \newwrite\sw at contents
 \immediate\openout\sw at contents=\jobname.inhalt\relax
@@ -1621,8 +1740,8 @@
 \newwrite\sw at problems
 \immediate\openout\sw at problems=\jobname.problems\relax
 %-----------------------------------------------------------
-% 2. Abstand zu einer "Uberschrift und 
-%    von einer "Uberschrift zum folgenden Text
+% 2. Abstand zu einer Überschrift und 
+%    von einer Überschrift zum folgenden Text
 %
 % \def\ttitel at skip{\vskip30\p@ plus \f at ur\p@\penalty-100}
 \def\ttitel at skip{\vskip24\p@ plus \f at ur\p@\goodbreak}
@@ -1652,7 +1771,7 @@
 %
 \newif\if at gemeinschaft
 \def\sw at problem{%
-    % Z"ahle die Autoren
+    % Zähle die Autoren
     \sw at count\z@%
     \let\@action=\sw at authorCount%
     \expandafter\l@@klist\the\aut at tk; \e at list%
@@ -1695,7 +1814,7 @@
     \l@@klist%
 }
 %-----------------------------------------------------------
-% 5. Z"ahlen von Autoren
+% 5. Zählen von Autoren
 %
 \newcount\sw at count
 \def\sw at authorCount#1; {%
@@ -1703,7 +1822,7 @@
     \l@@klist%
 }
 %-----------------------------------------------------------
-% 6. F"ur das Schreiben in die inhaltsdatei ohne 
+% 6. Für das Schreiben in die inhaltsdatei ohne 
 %    Kommandos zu expandieren.
 \def\@meaning#1>{}
 \def\@nearverbatim{\expandafter\@meaning\meaning}
@@ -1736,7 +1855,7 @@
   :\/} #2}{#1}%
 }
 \def\ix at InformalEntscheid#1#2#3#4{\i at line{Entscheid im Informalturnier #2, Abteilung #1}{#4}}
-\def\ix at Loesungen#1#2#3{\i at line{L\"osungen der Urdrucke aus Heft #1, #2}{#3}}
+\def\ix at Loesungen#1#2#3{\i at line{Lösungen der Urdrucke aus Heft #1, #2}{#3}}
 \def\ix at turnierbericht#1#2#3{%
   \i at line{Entscheid im #1}{#3}%
 }
@@ -1753,7 +1872,7 @@
 \def\i at InformalEntscheid#1{\ix at InformalEntscheid#1}
 \def\i at urdrucke#1{\i at line{Urdrucke}{#1}}
 \def\i at Loesungen#1{\ix at Loesungen#1}
-\def\i at Loeserliste#1{\i at line{L\"oserliste}{#1}}
+\def\i at Loeserliste#1{\i at line{Löserliste}{#1}}
 \def\i at bub#1{\i at line{Bemerkungen und Berichtigungen}{#1}}
 \def\i at turniere#1{\i at line{Turnierberichte}{#1}}
 \def\i at buecher#1{\i at line{Buchbesprechungen}{#1}}
@@ -1822,7 +1941,7 @@
 \catcode`/=\active\relax\let/\sol at slash\relax\catcode`/=12%
 \def\bsol{\catcode`/=\active\relax}
 \def\esol{\catcode`/=12\relax}
-\bsol
+\AtBeginDocument{\bsol}
 \renewcommand{\cpd at begindiagram@hook}{\esol}
 \renewcommand{\cpd at enddiagram@hook}{\bsol}
 
@@ -1833,8 +1952,59 @@
 
 \renewcommand{\x}{:}
 \newcommand{\mal}{\mbox{\ifmmode\times\else$\times$\fi}}
+%    \end{macrocode}
 %
+% Das Makro \verb+\Ruler+ erzeugt ein Lineal mit einer $1/20$
+% Einteilung der Seitenhöhe.
 %
+%    \begin{macrocode}
+\newcommand{\Ruler}{%
+\makebox{%
+\setlength{\unitlength}{13mm}
+\begin{picture}(1,20)
+\put(0.4,-20){\line(0,1){20}}
+
+\multiput(0.4,-20)(0,2){11}{\line(1,0){0.4}}
+\multiput(0.4,-19)(0,2){10}{\line(1,0){0.2}}
+\put(0,-20){10}
+\put(0,-18){9}
+\put(0,-16){8}
+\put(0,-14){7}
+\put(0,-12){6}
+\put(0,-10){5}
+\put(0,-8){4}
+\put(0,-6){3}
+\put(0,-4){2}
+\put(0,-2){1}
+\end{picture}
+}}% Ruler
+%    \end{macrocode}
+%
+% Das Makro \verb+\ShowRuler+ sorgt dafür, dass das mittels
+% \verb+\Ruler+ erzeugte Lineal auf jeder Seite angezeigt wird.
+%
+%    \begin{macrocode}
+\newcommand{\ShowRuler}{%
+\AddToHook{shipout/background}{\put(32mm,-46mm){\Ruler}}%
+}%
+%    \end{macrocode}
+%
+% Wenn beim Übersetzen der \LaTeX-Datei in aktuellen Verzeichnis keine
+% \verb+__finalpdf__.tex+ existiert, wird die Anzeige des
+% Lineals mittels \verb+\ShowRuler+ aktiviert. Durch Anlegen der Datei
+% kann das Einblenden des Lineals deaktiviert werden.
+%
+%    \begin{macrocode}
+\AtBeginDocument{\IfFileExists{__finalpdf__.tex}{}{\ShowRuler}}
+
+\newboolean{MeasureMode}
+\setboolean{MeasureMode}{false}
+\newcommand{\MeasureNewpage}{%
+   \ifthenelse{\boolean{MeasureMode}}{\newpage}{}%
+}
+
+%
+%
 %</class>
 %    \end{macrocode}
 %
@@ -1857,7 +2027,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\RequirePackage{diagram}[2019/12/28]
+\RequirePackage{diagram}[2020/02/09]
 %
 %
 % Wir definieren das Diagrammlayout ein wenig um.
@@ -1919,7 +2089,7 @@
       PLEASE~REPRINT\hfill BITTE~NACHDRUCKEN\hfill PRIERE~DE~REIMPRIMER%
    }%
 }
-% Definiere ein anderes Layout f"ur den Kopf eines Diagramms
+% Definiere ein anderes Layout für den Kopf eines Diagramms
 %
 %
 \def\@dia at number{}% Die Diagrammnummer wird bei den Autoren gesetzt!

Modified: trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls	2022-05-31 19:43:45 UTC (rev 63456)
+++ trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.cls	2022-05-31 19:44:55 UTC (rev 63457)
@@ -34,9 +34,10 @@
 %%
 %%
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{schwalbe}[2019/12/28]
+\ProvidesClass{schwalbe}[2022/05/28]
 \LoadClass[11pt,a4paper]{article}
 \RequirePackage[12pt]{schwalbe}[2019/12/28]
+\RequirePackage{cpdparse}[2020/12/27]
 \RequirePackage[T2A,T1]{fontenc}% fsRUS 140121
 \RequirePackage[koi8-r,utf8]{inputenc}% fsRUS 140121
 \RequirePackage[russian,german,english,ngerman]{babel}
@@ -48,7 +49,6 @@
 \RequirePackage{paralist}
 \RequirePackage{afterpage}
 \InputIfFileExists{schwalbe.ext}{}{}%
-\RequirePackage{picinpar}
 \hyphenation{Patt-idee Da-men-op-fer nicht-ortho-doxe Grim-shaw Rein-form}
 
 \advance\exhyphenpenalty by -10
@@ -111,7 +111,7 @@
 }
 \newcommand{\sw at monat}[1]{%
 \ifcase#1\relax%
-\or Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi%
+\or Januar\or Februar\or März\or April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or November\or Dezember\fi%
 }%
 \newcounter{sw at issue}%
 \newcounter{sw at month}%
@@ -137,7 +137,7 @@
    %\input{intro}%
    \vskip5mm%
    \newcommand{\SchwalbeCopyright}%
-   {\textcopyright{} Schwalbe, deutsche Vereinigung für Problemschach #4}%
+   {\textcopyright{} #4 Schwalbe, deutsche Vereinigung für Problemschach e.\,V.}%
 }
 \newenvironment{Editorial}[2][Editorial]{%
    \ttitel at skip%
@@ -230,7 +230,7 @@
    \let\orig at dia@above=\dia at above%
    \let\dia at above=\dia at above@InformalEntscheid%
    \setboolean{normaldiaabove}{false}%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \bgroup%
       \def\@tempb{\InformalEntscheid}%
       \def\@tempc{#1}%
@@ -258,10 +258,11 @@
    \x at InformalEntscheid{#1}{#2}{#3}%
 }
 \newenvironment{Aufsatz}[2]{%
+   \diagnum{1}%
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
+   \setcounter{footnote}{0}%
    \begingroup%
-      \setcounter{footnote}{0}%
       \def\@tempa{#1}%
       \def\@tempc{\aufsatz}%
       \def\@tempb{#2}%
@@ -292,6 +293,31 @@
          \sw at monat{\value{sw at loesungen@bis at monat}}%
       }%
 }%
+\newwrite\@swfile at lsghead
+\newcommand{\sw at openlsghead}{%
+    \immediate\openout\@swfile at lsghead=\jobname.lsgh\relax%
+}
+\newcommand{\sw at closelsghead}{%
+    \immediate\closeout\@swfile at lsghead%
+}
+
+\AtBeginDocument{\sw at openlsghead}
+\AtEndDocument{\sw at closelsghead}
+
+\newcommand{\sw at write@abteilung}[2]{%
+    \esol%
+    \bgroup%
+    \edef\@tempd{#1}%
+    \edef\@tempe{#2}%
+    \edef\@tempa{%
+        \immediate\write\@swfile at lsghead{%
+            \@nearverbatim\@tempd|%
+            \@nearverbatim\@tempe%
+        }%
+    }%
+    \expandafter\egroup\@tempa%
+    \bsol%
+}
 \newcommand{\sw at urd@abteilung}{%
     \@ifstar%
         \@sw at urd@abteilung at one%
@@ -301,11 +327,13 @@
     \textbf{#1 (\ref{#2}): %
     Bearbeiter = #3%
     \url{#4}}
+    \sw at write@abteilung{*}{#2}%
 }
 \newcommand{\@sw at urd@abteilung}[5]{%
     \textbf{#1 (\ref{#2}-\ref{#3}): %
     Bearbeiter = #4%
     \url{#5}}
+    \sw at write@abteilung{#2}{#3}%
 }
 \newenvironment{Urdrucke}[1]{%
     \setboolean{showcity}{true}%
@@ -316,7 +344,7 @@
     \def\do at dia@job{%
         % Gebe das Diagramm aus
         \unhbox\dia at box%
-        % Erzeuge die Eintr"age f"ur das Inhaltsverzeichnis
+        % Erzeuge die Einträge für das Inhaltsverzeichnis
         \sw at problem%
     }%
     \ttitel at skip%
@@ -351,7 +379,7 @@
 \newcommand{\sw at loesungen}[2]{%
    \begingroup%
    \ttitel at skip%
-   \centerline{\Large\bfseries L\"osungen der Urdrucke aus Heft #1, #2}%
+   \centerline{\Large\bfseries Lösungen der Urdrucke aus Heft #1, #2}%
    \titel at skip%
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
@@ -427,9 +455,50 @@
     \InputIfFileExists{\jobname.llx}{}{}%
     \egroup%
 }
+\newcounter{sw at loesung@author at count}
+\newcounter{sw at loesung@author at index}
+\def\sw at count@authors#1; {%
+    \stepcounter{sw at loesung@author at count}%
+    \cpd at parse@list%
+}
+\def\sw at display@author#1, #2; {%
+    \stepcounter{sw at loesung@author at index}%
+    \ifthenelse{\value{sw at loesung@author at index}=1}{%
+        % No separator before 1st author
+    }{%
+        \ifthenelse{\value{sw at loesung@author at index}=\value{sw at loesung@author at count}}{%
+            \ \& %
+        }{%
+            , %
+        }%
+    }%
+    #2 #1%
+    \cpd at parse@list%
+}
+\newcommand{\sw at loesung@authors}[1]{%
+\setcounter{sw at loesung@author at count}{0}%
+\let\cpd at parse@action=\sw at count@authors%
+\cpd at parse@list#1; \relax%
+\setcounter{sw at loesung@author at index}{0}%
+\let\cpd at parse@action=\sw at display@author%
+(\cpd at parse@list#1; \relax)%
+}
+\newcommand{\showsol}{}
+\newcommand{\cpd at Loesung}[3]{%
+    \textbf{#1}\ \sw at loesung@authors{#2}%
+    \renewcommand{\showsol}{#3}%
+}
+\newcommand{\cpd at Loesung@star}[3]{%
+    \textbf{#1}\ \sw at loesung@authors{#2}\ #3%
+    \renewcommand{\showsol}{}%
+}
+\newcommand{\Loesung}{%
+    \@ifstar{\cpd at Loesung@star}{\cpd at Loesung}%
+}
+
 \newenvironment{Loeserliste}[1]{%
    \ttitel at skip%
-   \centerline{\Large\bfseries L\"oserliste #1}%
+   \centerline{\Large\bfseries Löserliste #1}%
    \titel at skip%
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
@@ -447,12 +516,12 @@
 }{}
 \newcommand{\dauerkonto}[1]{%
    \ttitel at skip%
-   \centerline{\large\bfseries L\"oserliste: Sonderpunkte \& Dauerkonto #1}%
+   \centerline{\large\bfseries Löserliste: Sonderpunkte \& Dauerkonto #1}%
    \titel at skip%
 }
 \newcommand{\loesungswettbewerb}[1]{
    \ttitel at skip%
-   \centerline{\Large\bfseries Preisbericht zum L\"osungswettbewerb #1}%
+   \centerline{\Large\bfseries Preisbericht zum Lösungswettbewerb #1}%
    \titel at skip%
 }
 \newenvironment{BuB}{%
@@ -489,7 +558,7 @@
 \def\Untertitel{\subtitel at skip\centering}
 \def\endUntertitel{\subtitel at subskip}
 \newenvironment{Bericht}[1]{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
    \bgroup%
@@ -542,7 +611,7 @@
 \newenvironment{Turnierbericht}[2]{%
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \bgroup%
       \def\@tempb{\Turnierbericht}%
       \def\@tempc{#1}%
@@ -596,7 +665,7 @@
 \newenvironment{maerchenlexikon}%
 {%
   \ifthenelse{\value{@maerchenlexikon}=0}{%
-    {\itshape Kleines M\"archenschach-Lexikon:} %
+    {\itshape Kleines Märchenschach-Lexikon:} %
   }{}%
   \setboolean{@first at lexikon@entry}{true}%
   \stepcounter{@maerchenlexikon}%
@@ -621,9 +690,13 @@
   \stepcounter{@retrolexikon}%
 }{}
 \newenvironment{Entscheid}[1]{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \let\titel at ext\inhalt at label\relax%
+   % Weitere Einstellungen
+   \let\orig at dia@above=\dia at above%
+   \let\dia at above=\dia at above@InformalEntscheid%
+   \setboolean{normaldiaabove}{false}%
    \bgroup%
       \def\@tempb{\Entscheid}%
       \def\@tempc{#1}%
@@ -848,7 +921,7 @@
    \centerline{\Large\bfseries#1\ \ #2}
    \titel at skip%
    \fi%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -872,7 +945,7 @@
    \centerline{#1}
    \titel at skip%
    \fi%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -895,7 +968,7 @@
    \ttitel at skip%
    \hbox to \textwidth{\large\bfseries\uppercase{#1}\hfill#2}%
    \titel at skip%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -914,7 +987,7 @@
    \expandafter\egroup\@tempa%
 }
 \def\y at Verstorben#1{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -931,7 +1004,7 @@
    \expandafter\egroup\@tempa%
 }
 \def\Nachruf#1{%
-   % Erzeuge den Eintrag f\"ur das Inhaltsverzeichnis
+   % Erzeuge den Eintrag für das Inhaltsverzeichnis
    \stepcounter{@inhalt}%
    \inhalt at label\relax%
    \bgroup%
@@ -1002,7 +1075,7 @@
 }
 \newif\if at gemeinschaft
 \def\sw at problem{%
-    % Z"ahle die Autoren
+    % Zähle die Autoren
     \sw at count\z@%
     \let\@action=\sw at authorCount%
     \expandafter\l@@klist\the\aut at tk; \e at list%
@@ -1071,7 +1144,7 @@
   :\/} #2}{#1}%
 }
 \def\ix at InformalEntscheid#1#2#3#4{\i at line{Entscheid im Informalturnier #2, Abteilung #1}{#4}}
-\def\ix at Loesungen#1#2#3{\i at line{L\"osungen der Urdrucke aus Heft #1, #2}{#3}}
+\def\ix at Loesungen#1#2#3{\i at line{Lösungen der Urdrucke aus Heft #1, #2}{#3}}
 \def\ix at turnierbericht#1#2#3{%
   \i at line{Entscheid im #1}{#3}%
 }
@@ -1087,7 +1160,7 @@
 \def\i at InformalEntscheid#1{\ix at InformalEntscheid#1}
 \def\i at urdrucke#1{\i at line{Urdrucke}{#1}}
 \def\i at Loesungen#1{\ix at Loesungen#1}
-\def\i at Loeserliste#1{\i at line{L\"oserliste}{#1}}
+\def\i at Loeserliste#1{\i at line{Löserliste}{#1}}
 \def\i at bub#1{\i at line{Bemerkungen und Berichtigungen}{#1}}
 \def\i at turniere#1{\i at line{Turnierberichte}{#1}}
 \def\i at buecher#1{\i at line{Buchbesprechungen}{#1}}
@@ -1147,7 +1220,7 @@
 \catcode`/=\active\relax\let/\sol at slash\relax\catcode`/=12%
 \def\bsol{\catcode`/=\active\relax}
 \def\esol{\catcode`/=12\relax}
-\bsol
+\AtBeginDocument{\bsol}
 \renewcommand{\cpd at begindiagram@hook}{\esol}
 \renewcommand{\cpd at enddiagram@hook}{\bsol}
 
@@ -1157,6 +1230,37 @@
 
 \renewcommand{\x}{:}
 \newcommand{\mal}{\mbox{\ifmmode\times\else$\times$\fi}}
+\newcommand{\Ruler}{%
+\makebox{%
+\setlength{\unitlength}{13mm}
+\begin{picture}(1,20)
+\put(0.4,-20){\line(0,1){20}}
+
+\multiput(0.4,-20)(0,2){11}{\line(1,0){0.4}}
+\multiput(0.4,-19)(0,2){10}{\line(1,0){0.2}}
+\put(0,-20){10}
+\put(0,-18){9}
+\put(0,-16){8}
+\put(0,-14){7}
+\put(0,-12){6}
+\put(0,-10){5}
+\put(0,-8){4}
+\put(0,-6){3}
+\put(0,-4){2}
+\put(0,-2){1}
+\end{picture}
+}}% Ruler
+\newcommand{\ShowRuler}{%
+\AddToHook{shipout/background}{\put(32mm,-46mm){\Ruler}}%
+}%
+\AtBeginDocument{\IfFileExists{__finalpdf__.tex}{}{\ShowRuler}}
+
+\newboolean{MeasureMode}
+\setboolean{MeasureMode}{false}
+\newcommand{\MeasureNewpage}{%
+   \ifthenelse{\boolean{MeasureMode}}{\newpage}{}%
+}
+
 \endinput
 %%
 %% End of file `schwalbe.cls'.

Modified: trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty	2022-05-31 19:43:45 UTC (rev 63456)
+++ trunk/Master/texmf-dist/tex/latex/schwalbe-chess/schwalbe.sty	2022-05-31 19:44:55 UTC (rev 63457)
@@ -39,7 +39,7 @@
 \DeclareOption{11pt}{\PassOptionsToPackage{11pt}{diagram}}
 \DeclareOption{12pt}{\PassOptionsToPackage{12pt}{diagram}}
 \ProcessOptions
-\RequirePackage{diagram}[2019/12/28]
+\RequirePackage{diagram}[2020/02/09]
 \newcommand{\rb}[1]{\raisebox{0.4ex}{#1}}
 \nocomputer
 \setboolean{piececounter}{true}



More information about the tex-live-commits mailing list.