texlive[74857] Master/texmf-dist: ucph-revy (5apr25)
commits+karl at tug.org
commits+karl at tug.org
Sat Apr 5 21:55:04 CEST 2025
Revision: 74857
https://tug.org/svn/texlive?view=revision&revision=74857
Author: karl
Date: 2025-04-05 21:55:04 +0200 (Sat, 05 Apr 2025)
Log Message:
-----------
ucph-revy (5apr25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/ucph-revy/Eksempel.tex
trunk/Master/texmf-dist/doc/latex/ucph-revy/README.md
trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-da-doc.pdf
trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-da-man.pdf
trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-en-doc.pdf
trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-en-man.pdf
trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy.bib
trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.dtx
trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.ins
trunk/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls
Added Paths:
-----------
trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy-en-ex.ins
Modified: trunk/Master/texmf-dist/doc/latex/ucph-revy/Eksempel.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ucph-revy/Eksempel.tex 2025-04-05 19:54:41 UTC (rev 74856)
+++ trunk/Master/texmf-dist/doc/latex/ucph-revy/Eksempel.tex 2025-04-05 19:55:04 UTC (rev 74857)
@@ -46,7 +46,11 @@
\role{I} Vred instruktør
\role{A9}[A--ni] Anine
\end{roles}
-%% props-miljøet kan fjernes, hvis der ikke er brug for det
+%% instructors- og props-miljøet kan fjernes, hvis der ikke er brug
+%% for det
+\begin{instructors}
+ \instructor[Instruktør] Raben
+\end{instructors}
\begin{props}
\prop{Hedegaard--hår}[Person, der skaffer]
\prop{Didgeridoo}[Anine]
Modified: trunk/Master/texmf-dist/doc/latex/ucph-revy/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ucph-revy/README.md 2025-04-05 19:54:41 UTC (rev 74856)
+++ trunk/Master/texmf-dist/doc/latex/ucph-revy/README.md 2025-04-05 19:55:04 UTC (rev 74857)
@@ -1,6 +1,6 @@
Package ucph-revy
=================
-v1.1.0
+v1.2.0
A class for typesetting scripts, containing both lyrics and prose, in
the style used by the student revues (revy) at the Faculties of
Modified: trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-da-doc.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-da-man.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-en-doc.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy-en-man.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy.bib 2025-04-05 19:54:41 UTC (rev 74856)
+++ trunk/Master/texmf-dist/doc/latex/ucph-revy/ucph-revy.bib 2025-04-05 19:55:04 UTC (rev 74857)
@@ -24,4 +24,10 @@
author = {Overleaf},
title = {Understanding packages and class files},
howpublished = {\url{https://www.overleaf.com/learn/latex/Understanding_packages_and_class_files}}}
-
+ at Misc{fysikrevytex,
+ author = {Peter Müller and Kristoffer Stensbo-Smidt and Troels Henriksen and Sebastian Paaske Tørholm and Sarah Brofeldt and Anders Komár Ravn and Hansen, Kristoffer Levin and Asbjørn Preuss and Mikkel Noer},
+ title = {Fysik{R}evy{\TeX}},
+ publisher = {GitHub},
+ year = {2025},
+ howpublished = {\url{https://github.com/FysikRevy/FysikRevyTeX}}
+ }
\ No newline at end of file
Added: trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy-en-ex.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy-en-ex.ins (rev 0)
+++ trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy-en-ex.ins 2025-04-05 19:55:04 UTC (rev 74857)
@@ -0,0 +1,34 @@
+%%
+%% Copyright (C) 2023 Kristoffer Levin Hansen
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/ucph-revy}
+\askforoverwritefalse
+\preamble
+
+See the generating file for its conditions on distribution and reuse.
+
+Also, for this file by itself, to the extent possible under law,
+Kristoffer Levin Hansen has waived all copyright and related or
+neighboring rights to Example.tex. This work is published from:
+Denmark.
+
+http://creativecommons.org/publicdomain/zero/1.0/
+
+Note that this file probably contains text, characters and situations
+covered by copyright beloninging to other entities.
+
+\endpreamble
+\generate{\file{Example.tex}{\from{ucph-revy.dtx}{ex-en}}}
+\endbatchfile
Modified: trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.dtx 2025-04-05 19:54:41 UTC (rev 74856)
+++ trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.dtx 2025-04-05 19:55:04 UTC (rev 74857)
@@ -2,7 +2,7 @@
%
% Copyright (C) 1995 Arne John Glenstrup
% 2000 Uffe Friis Lichtenberg
-% 2024 Kristoffer Levin Hansen
+% 2025 Kristoffer Levin Hansen
%
% This file may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
@@ -20,7 +20,7 @@
%<class>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<class>\ProvidesClass{ucph-revy}
%<*class>
- [2024/12/18 v1.1.0 A class for making musical manuscripts]
+ [2025/03/26 v1.2.0 A class for making musical manuscripts]
%</class>
%<*driver>
\documentclass[a4paper]{ltxdoc}
@@ -274,7 +274,7 @@
%
% Vi har også lavet en programpakke, som står for at lave et samlet
% \TeX hæfte ud af en samling af \texttt{.tex}--filer (som bruger
-% den her dokumentklasse). Den er sidst set på adressen
+% den her dokumentklasse). Den er sidst set i \cite{fysikrevytex}.
% \end{danish}
% \begin{english}
% \section{Introduction}
@@ -298,14 +298,13 @@
% larger piece, which are intended to be typeset along with the
% title.
%
-% Figure \ref{eksempel} shown an example of how all this looks when
+% Figure \ref{eksempel} shows an example of how all this looks when
% typeset.
%
% If you're looking for the script package that's designed to help
% with typesetting and compositing a full manuscript, it was last
-% seen at
+% seen in \cite{fysikrevytex}.
% \end{english}^^A
-% \url{https://github.com/fysikrevy/fysikrevytex}.
%
% \begin{danish}^^A
% Ifølge \texttt{revy.sty} var de originale forfattere
@@ -512,7 +511,13 @@
%
% \begin{danish}
% \subsection{Registermærkninger}\label{thumbindex}
+% \end{danish}
+% \begin{english}
+% \subsection{Thumb index}\label{thumbindex}
+% \end{english}
%
+% \begin{macro}{thumbindex}
+% \begin{danish}
% \changes{v1.0.0}{2023/09/05}{Nyt maskineri til registermærkninger}
% Kasserne i kanten af siderne i figur \ref{eksempel} er
% registermærkninger. De er tænkt som en hjælp med at finde rundt i
@@ -519,12 +524,9 @@
% manuskripter, når de bliver sat sammen af flere enkelte numre, som
% hver især bruger \cn. De giver kun mening at bruge i dokumenter
% som er en del af en større samling, så for at sætte dem skal
-% klassen gives
-% valgmuligheden \DescribeMacro{thumbindex}\verb|thumbindex|.
+% klassen gives valgmuligheden \verb|thumbindex|.
% \end{danish}
% \begin{english}
-% \subsection{Thumb index}\label{thumbindex}
-%
% \changes{v1.0.0}{2023/09/05}{New machinery for thumb indexes}
% To help organizing a compiled manuscript, which might consist of a
% collection of many \texttt{.tex} files, we profide a facility for
@@ -532,8 +534,14 @@
% black boxes on the edge of the pages in figure \ref{eksempel}. It
% is off by default, since it only really makes sense in a
% compilation of documents, but is enabled by giving the
-% option \DescribeMacro{thumbindex}\verb|thumbindex| to the class.
+% option \verb|thumbindex| to the class.
% \end{english}
+% \begin{danish}
+% \changes{v1.2.0}{2025/03/20}{Håndtér kommentarer i planfil}
+% \end{danish}
+% \begin{english}
+% \changes{v1.2.0}{2025/03/20}{Handle comments in planfile}
+% \end{english}
%
% \begin{implementation}
% \begin{danish}
@@ -541,6 +549,12 @@
% defineret på side \pageref{loadclass}, og fortæller bare, om
% \verb|thumbindex| er blevet valgt. Hvis den ikke er, så
% springer vi al koden i det her afsnit over.
+%
+% Vi bruger \verb|\@firstofone| og \verb|\@gobble| for at
+% undgå at pakke hele kodeblokken ind i en \verb|\if|, og så
+% få problemer med \verb|\if|'er inden i
+% hinanden\footnote{Dem får vi nok af fra den måde, koden
+% til dokumentationen er struktureret...}.
% \end{danish}
% \begin{english}
% \verb|\if at thumbindex|\DescribeMacro{\if at thumbindex}\ was defined
@@ -547,9 +561,52 @@
% on page \pageref{loadclass}, and just tells us if the option
% \verb|thumbindex| was given. If it wasn't, well just skip
% all the code in this section.
+%
+% We'll use \verb|\@firstofone| and \verb|\@gobble| to achieve
+% this, so that we can avoid wrapping the section in a long
+% \verb|\if|, and dealing with potential problems from nested
+% \verb|\if|s\footnote{We get plenty of that from how the
+% code for the documentation is structured...}.
% \end{english}
% \begin{macrocode}
\if at thumbindex
+% \end{macrocode}
+% \begin{macro}{\revy at readwithhash,\octothorpe}
+% \begin{danish}
+% Som vi kommer til at se senere, så kan planfilen risikrere at
+% indeholde \verb|#|'er, som vi skal genkende som
+% kommentarer. Derfor skal vi bruge en måde at læse ind fra
+% planfilen, som ikke giver \verb|#| sin sædvanlige catcode, og
+% noget at sammenligne med.
+%
+% De bliver nødt til at bo her, og ikke inde i argumentet til
+% \verb|\@firstofone|, pga. noget med rækkefølgen af
+% bogstavskodning of tokenisering\footnote{Detaljerne efterlades
+% som en øvelse til læseren.}.
+% \end{danish}
+% \begin{english}
+% As we shall see, the planfile might contain \verb|#|s, which we
+% must be able to recognize as comments. To do that, we need a way
+% to read them in without their usual catcode, and something to
+% compare with.
+%
+% They have to live here, and not inside the argument to
+% \verb|\@firstofone| due to something with the order of character
+% encoding and tokenization\footnote{The details are left as an
+% exercise for the reader.}.
+% \end{english}
+% \begin{macrocode}
+ \def\revy at readwithhash{
+ \catcode`\#=11
+ \read\planread to \line
+ \catcode`\#=6
+ }
+ \catcode`\#=11
+ \edef\octothorpe{#}
+ \catcode`\#=6
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
\expandafter\@firstofone
\else
\expandafter\@gobble
@@ -556,9 +613,9 @@
\fi{
% \end{macrocode}
% \end{implementation}
-% \label{begintabdefgroup}
%
% \begin{danish}
+% \changes{v1.2.0}{2025/03/26}{Kalder ikke længere {\sffamily fontenc}}
% \cn\ får at vide hvilke numre, som er med i et manuskript, fra en
% ekstern tekstfil, som vi som standard går ud fra hedder
% \texttt{aktoversigt.plan}, og ligger i samme mappe som
@@ -570,6 +627,7 @@
% kaldes således:
% \end{danish}
% \begin{english}^^A
+% \changes{v1.2.0}{2025/03/26}{No longer calls {\sffamily fontenc}}
% The structure of the consolidated manuscript is
% defined in a seperate text file, which contains the filenames of
% the \texttt{.tex} files that make up the manuscript, and divide
@@ -584,9 +642,12 @@
% \begin{verbatim}
%\documentclass[thumbindex,planfile=../plan.txt]{ucph-revy}
% \end{verbatim}
+%
% \begin{danish}
% Et eksempel på en sådan planfil kunne være:
% \begin{verbatim}
+% # Den bedste FysikRevy™ siden Jordens undergang
+%
% Akt 1
% sange/introsang.tex
% sketches/Eksempel.tex
@@ -599,11 +660,243 @@
% Ekstranumre
% sange/under_bæltestedet.tex
% \end{verbatim}
+% Her behandler vi linjer, der stater med \verb|#| som kommentarer,
+% og ignorerer dem. Tomme linjer bliver også ignoreret. Linjer, der
+% ender på \verb|.tex| tages som navne på filer i registeret, som
+% bliver behandlet videre. Andre linjer antages at være
+% aktoverskrifter.
+%
+% \changes{v1.2.0}{2024/03/22}{Håndter stub punkter planfilen.}
+% Det er også muligt at angive et udvalg af info--makroerne, som
+% bliver detaljeret i afsnit \ref{info} på en enkelt linje, som en
+% stub. En sådan har betydning for {\sffamily
+% FysikRevy\TeX}\cite{fysikrevytex}, men bliver bare ignoreret her i
+% \cn.
+% \end{danish}
+%
+% \begin{english}
+% An example of such a plan file might be:
+% \begin{verbatim}
+% # The greatest show, possibly
+%
+% Act 1
+% songs/opener.tex
+% sketches/Example.tex
+% sketches/anarchocommunist_commune.tex
+%
+% Act 2
+% songs/glitzy_dance_act.tex
+% sketches/crossdressing.tex
+%
+% Act 3
+% sketches/stop_police.tex
+% \end{verbatim}
+% Lines that start with \verb|#| are treated as comments and
+% ignored. Empty lines are also ignored. Lines that end in
+% \verb|.tex| are taken as entries in the thumb index and processed
+% further. Any other lines are treated as act titles.
+%
+% \changes{v1.2.0}{2024/03/22}{ Handle stub entries in planfile. }
+% It is also possible to issue a subset of the info--macros detailed
+% in section \ref{info} on a line to create a stub entry. They are
+% meaningful to {\sffamily FysikRevyTeX}\cite{fysikrevytex}, but
+% \cn\ will simply ignore them.
+% \end{english}
+%
+% \begin{macro}{\planfileAllowedMacros}
+% \begin{danish}
+% De tilladte info--makroer opbevares i toks'en
+% \verb|\planfileAllowedMacros|, der som standard indeholder
+% \end{danish}\begin{english}
+% The allowed info--macros are contained in the toks
+% \verb|\planfileAllowedMacros|, which by default
+% contains\end{english} \verb|\title|, \verb|\eta|, \verb|\status|,
+% \verb|\melody|, \verb|\revyname|,
+% \verb|\revyyear|\begin{danish} og\end{danish}\begin{english} and\end{english}
+% \verb|\category|
+% \begin{danish}(der ikke er en af dem fra afsnit \ref{info}).
+% \end{danish}\begin{english}(which is in addition to the macros in section
+% \ref{info}).
+% \end{english}
+% \begin{implementation}
+% \begin{macrocode}
+ \newtoks\planfileAllowedMacros
+ \planfileAllowedMacros={
+ \title\eta\status\melody\revyname\revyyear\category
+ }
+% \end{macrocode}
+% \end{implementation}
+% \end{macro}
+%
+% \begin{macro}{\planfileAllowMacros}
+% \begin{danish}
+% \changes{v1.2.0}{2025/03/26}{Gør tilpasning af stub--kommandoer
+% nemmere.}
+% Yderligere makroer kan tilføjes til den her liste med
+% \verb|\planfileAllowMacros|. Den kan gives flere makroer i samme
+% argument, som fx:
+% \end{danish}
+% \begin{english}
+% \changes{v1.2.0}{2025/03/26}{Aid customization of stub commands.}
+% Further macros can be added to the list with
+% \verb|\planfileAllowMacros|. It takes one or more macros as its
+% argument, eg:
+% \end{english}
+% \begin{verbatim}
+% \planfileAllowMacros{ \author \responsible }
+% \end{verbatim}
+% \begin{implementation}
+% \begin{macrocode}
+ \def\planfileAllowMacros#1{
+ \toks256={#1}
+ \edef\act{
+ \noexpand\planfileAllowedMacros={
+ \the\planfileAllowedMacros \the\toks256
+ }
+ }
+ \act
+ }
+% \end{macrocode}
+% \end{implementation}
+% \end{macro}
+%
+%\begin{implementation}
+%\begin{macro}{\revy at tabs}
+% \begin{danish}
+% \changes{v1.2.0}{2025/03/26}{Flyt indlæsning af planfil til første
+% gang en registermærkning bliver sat}
+% Koden, som læser og forstår planfilen og de andre
+% \verb|.tex|--filer bor i den her makro. Den kommer til at blive
+% kaldt midt i dokument--flowet, så vi er nødt til at være
+% forsigtige med at afslutte linjer, som ellers kunne lave ekstra
+% mellemrum, med \verb|%|.
+% \end{danish}
+% \begin{english}
+% \changes{v1.2.0}{2025/03/26}{Move parsing of planfile to the first
+% time a thumb mark is typeset.}
+% The code that reads and comprehends the plan file and the listed
+% \texttt{.tex} files lives inside this macro. It will be called in
+% the middle of the document flow, so care must be taken to end
+% lines, that could otherwise create extra spaces, with a \verb|%|.
+% \end{english}
+% \begin{macrocode}
+ \def\revy at tabs{%
+ \begingroup
+% \end{macrocode}
+% \begin{macro}{\stubCommand,\markStubCommands,\swap,\skipFiFi,\nothing}
+% \begin{danish}
+% Helt konkret, så så når vi hen til at kunne ignorere makroerne i
+% \verb|\planfileAllowedMacros| ved at sætte dem alle sammen til at
+% være en makro, vi kan genkende.
+% \end{danish}
+% \begin{english}
+% We will enable ourselves to skip the macros in
+% \verb|\planfileAllowedMacros| by setting each of them equal to
+% a recognizable macro.
+% \end{english}
+% \begin{macrocode}
+ \def\stubCommand{}%
+% \end{macrocode}
+% \begin{macrocode}
+ \def\swap##1##2{##2##1}%
+ \def\skipFiFi##1\nothing{\fi\fi}%
+ \let\nothing=\relax
+% \end{macrocode}
+% \begin{macrocode}
+ \def\markStubCommands##1{%
+ \ifx\@undefined##1 \else
+ \ifx\relax##1%
+ \skipFiFi
+ \fi
+ \fi
+ \let##1=\stubCommand
+ \swap\markStubCommands\nothing
+ }
+ \edef\act{\noexpand\markStubCommands\the\planfileAllowedMacros\relax}%
+ \act
+% \end{macrocode}
+% \begin{danish}
+% Konstruktionen, hvor \verb|\act| bliver defineret, og
+% så kaldt med det samme, er for at styre, hvor dybt \TeX\ udvider
+% vores makroer\cite{eijkhout:toksstack}.
+% \end{danish}
+% \begin{english}
+% The construction where \verb|\act| is defined, and then
+% immediately called, controls how deeply \TeX\ will expand our
+% macros\cite{eijkhout:toksstack}.
+% \end{english}
+% \end{macro}
+% \begin{macro}{\findStubCommands,\ifstub}
+% \begin{danish}
+% Vi skal så kunne genkende den makro senere.
+% \end{danish}
+% \begin{english}
+% We then need to be able to recognize that macro later.
+% \end{english}
+% \begin{macrocode}
+ \newif\ifstub \stubfalse
+ \def\findStubCommands##1{%
+ \ifx\stubCommand##1%
+ \stubtrue
+ \fi
+ \ifx\relax##1 \else
+ \expandafter\findStubCommands
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\expandFiHere}
+% \begin{danish}
+% Vi får brug for den her makro, som du måske genkender som
+% \verb|\hop|, hvis du har læst \cite{eijkhout:hop}.
+% \end{danish}
+% \begin{english}
+% We shall need this macro, which you may reckognize as
+% \verb|\hop| if you've read \cite{eijkhout:hop}.
+% \end{english}
+% \begin{macrocode}
+ \def\expandFiHere##1\fi{\fi ##1}%
+% \end{macrocode}
+% \end{macro}
+% \begin{danish}
+% Vi får brug for at vide planfilens sti
+% \end{danish}
+% \begin{english}
+% We will need to know the path of the plan file
+% \end{english}
+% \begin{macrocode}
+ \def\patheat##1/##2{%
+ \ifx\relax##2\else
+ \expandFiHere##1/\patheat##2%
+ \fi
+ }%
+ \edef\planpath{\expandafter\patheat\planfile/\relax}%
+% \end{macrocode}
+% \end{macro}
+% \end{implementation}
+%
+% \begin{danish}
% Mappenavnene (\texttt{sange}, \texttt{sketches}) er ikke
-% nødvendige for at registermærkningerne kan fungere, de er bare et
-% eksempel. \texttt{.tex}--filerne kan placeres hvor som helst,
-% \TeX\ kan læse fra.
-%
+% nødvendige for at registermærkningerne kan fungere, men de har
+% betydning for {\sffamily FysikRevy\TeX}
+% \cite{fysikrevytex}. \texttt{.tex}--filerne kan placeres hvor som
+% helst, \TeX\ kan læse fra.
+% \end{danish}
+% \begin{english}
+% Note that the folder names (\texttt{songs}, \texttt{sketches})
+% carry significance for {\sffamily FysikRevy\TeX}
+% \cite{fysikrevytex}, but not for \cn. The \texttt{.tex} files can
+% be placed at any location that \TeX\ can read.
+% \end{english}
+%
+% \begin{implementation}
+% \begin{macrocode}
+ \newread\planread
+ \openin\planread=\planfile
+% \end{macrocode}
+% \end{implementation}
+%
+% \begin{danish}
% Ud fra sådan en planfil kan klassen generere et
% register\textbf{indeks} som ligner det i figur \ref{registerex},
% eller register\textbf{mærkninger} som dem i figur
@@ -629,37 +922,9 @@
% oplistet i planfilen, og sammenligner indholdet af deres
% \verb|\title|--makroer med den seneste \verb|\title|, som \TeX\
% har set.
-%
-% Derfor er det nødvendigt, for at \cn\ kan sætte registermærkerne,
-% at der er angivet en \verb|\title|. Det er altid den sidste
-% \verb|\title| i en fil, som \cn\ sammenligner med den
-% \verb|\title|, som \TeX\ kender. Det kan gå galt, hvis der er
-% flere \verb|\title|'r i en fil.
-%
-% Hvis der er flere af filerne i planfilen, som har den
-% \verb|\title| som \cn\ leder efter, vil \cn\ sætte registermærker
-% for alle de tilsvarende pladser i rækkefølgen.
% \end{danish}
-%
+%
% \begin{english}
-% An example of such a plan file might be:
-% \begin{verbatim}
-% Act 1
-% songs/opener.tex
-% sketches/Example.tex
-% sketches/anarchocommunist_commune.tex
-%
-% Act 2
-% songs/glitzy_dance_act.tex
-% sketches/crossdressing.tex
-%
-% Act 3
-% sketches/stop_police.tex
-% \end{verbatim}
-% Note that the folder names (\texttt{songs}, \texttt{sketches}) are
-% merely for illustration. The \texttt{.tex} files can be placed at any
-% location that \TeX\ can read.
-%
% From this plan file, the class can generate a thumb mark for each
% of thsee individual files, as demonstrated in figure
% \ref{eksempel}, which shows the location of that file in the
@@ -687,7 +952,21 @@
% \emph{which} file it is in by comparing the content of the
% \verb|\title| macro in the files in the plan file with the title
% that \TeX\ knows about in the current file.
+% \end{english}
%
+% \begin{danish}
+% Derfor er det nødvendigt, for at \cn\ kan sætte registermærkerne,
+% at der er angivet en \verb|\title|. Det er altid den sidste
+% \verb|\title| i en fil, som \cn\ sammenligner med den
+% \verb|\title|, som \TeX\ kender. Det kan gå galt, hvis der er
+% flere \verb|\title|'r i en fil.
+%
+% Hvis der er flere af filerne i planfilen, som har den
+% \verb|\title| som \cn\ leder efter, vil \cn\ sætte registermærker
+% for alle de tilsvarende pladser i rækkefølgen.
+% \end{danish}
+%
+% \begin{english}
% Therefore, it is necessary for the thumb index to work that a
% \verb|\title| is declared in each of the files that are listed in
% the plan file.
@@ -699,35 +978,59 @@
% \end{english}
%
% \begin{implementation}
+% \begin{macro}{\revy at tabs,\skipopt,\titleeater}
% \begin{danish}
-% For at sammenligningen kan fungere, er vi afhængige af, at
-% tekstrepræsentationen ikke skifter undervejs. Det kan ske, hvis
-% \verb|.tex|--filen kalder
-% \DescribeMacro{fontenc}\textsf{fontenc}, og titlerne indeholder
-% specialtegn. Den simple og effektive\footnote{Læs: det er et
-% hack, som ikke har givet mig problemer \emph{endnu}.} løsning
-% er bare at kalde \textsf{fontenc} selv, så der ikke er plads til
-% misforståelser.
+% \changes{v1.2.0}{2025/03/19}{Håndtér valgfi korte titler i
+% manuskriptfiler}
+% I registermærkningens verden sorterer vi bare de valgfri korte
+% titler (se s. \pageref{shorttitle}) fra, når vi leder efter
+% \verb|\title| definitioner. Til det bruger vi følgende makroer:
% \end{danish}
% \begin{english}
-% For this comparing of titles to work, we depend of the text
-% representation not changing between the \verb|\title|
-% declaration and the time when the thumb index routine runs. It
-% might, though, if \DescribeMacro{fontenc}\textsf{fontenc} is
-% called. To quickly knock that problem on the head,\footnote{In a
-% way that hasn't come back to bite \emph{me} yet.} we'll just
-% call \textsf{fontenc} ourselves.
+% \changes{v1.2.0}{2025/03/19}{Handle optional short titles in
+% manuscript files}
+% In the world of thumbtabs, we will simply filter out the
+% optional short titles (see p. \pageref{shorttitle}) while we're
+% searching for \verb|\title| definitions. The macros for this
+% purpose are:
% \end{english}
% \begin{macrocode}
- \RequirePackage[OT1]{fontenc}
+ %[
+ \def\skipopt##1]##2{\titleeater{##2}}%
+ \def\titleeater##1##2\title##3{%
+ \ifx\done##3%
+ ##1%
+ \else
+ \ifx##3[% ]
+ \expandFiHere\expandFiHere\skipopt
+ \else
+ \expandFiHere\expandFiHere\titleeater{##3}%
+ \fi
+ \fi
+ }%
% \end{macrocode}
+% \end{macro}
+%
+% \begin{danish}
+% For at forsøge at afværge problemer, der kan opstå, hvis der er
+% linjeskift midt i en \verb|\title| i den eksterne fil, slår vi
+% \TeX 's interne håndtering af linjeskift fra
+% \end{danish}
+% \begin{english}
+% To try and ward off issues caused by newlines inside \verb|\title|
+% definitions in the external file, we'll disable \TeX s internal
+% handling of newlines
+% \end{english}
+% \begin{macrocode}
+ \endlinechar=-1
+% \end{macrocode}
+% \begin{macrocode}
+ \newread\tabtex
+% \end{macrocode}
%
% \begin{danish}
-% Koden, som læser og forstår planfilen og de andre
-% \verb|.tex|--filer bor i den her gruppe. I sidste ende kommer vi
-% til at definere
-% makroen \DescribeMacro{\revy at tabs}\verb|\revy at tabs|, som burde,
-% for hver overskrift i planfilen, indeholde sekvensen
+% I sidste ende kommer \verb|\revy at tabs| til at omdefinere sig selv,
+% så den burde, for hver overskrift i planfilen, indeholde sekvensen
% \begin{showcommand}
% \verb|\undertab| \meta{tæller ved start} \verb|\text|
% \meta{overskrift} \verb|\stop|,
@@ -742,17 +1045,10 @@
% \verb|\undertab| \meta{antal filer} \verb|\text| \verb|\done|
% \verb|\stop|.
% \end{showcommand}
-% Undervejs bygger vi de her sekvenser op i en
-% \verb|toks|. Konstruktionen, hvor \verb|\act| bliver defineret, og
-% så kaldt med det samme, er for at styre, hvor dybt \TeX\ udvider
-% vores makroer\cite{eijkhout:toksstack}.
% \end{danish}
% \begin{english}
-% The code that reads and comprehends the plan file and the listed
-% \texttt{.tex} files lives in this group. The ultimate effect ought
-% to be defining the
-% macro \DescribeMacro{\revy at tabs}\verb|\revy at tabs|, which will
-% contain, for each heading in the plan file, the sequence
+% Ultimately, \verb|\revy at tabs| ought to redefine itself so that it
+% will contain, for each heading in the plan file, the sequence
% \begin{showcommand}
% \verb|\undertab| \meta{counter at start} \verb|\text|
% \meta{hading} \verb|\stop|,
@@ -767,188 +1063,215 @@
% \verb|\undertab| \meta{no. of files} \verb|\text| \verb|\done|
% \verb|\stop|.
% \end{showcommand}
-% As we go, these sequences will be built up in a \verb|toks|. The construction where \verb|\act| is defined, and then immediately called, controls how deeply \TeX\ will expand our macros\cite{eijkhout:toksstack}.
% \end{english}
+%
+% \begin{macro}{\tabtoks}
+% \begin{danish}
+% Undervejs bygger vi de her sekvenser op i en \verb|toks|.
+% \end{danish}
+% \begin{english}
+% As we go, these sequences will be built up in a \verb|toks|.
+% \end{english}
% \begin{macrocode}
- \begingroup
+ \newtoks\tabtoks
% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabscount}
+% \begin{danish}
+% Og vi holder tal på hvor mange mærker, vi skal lave
+% \end{danish}
+% \begin{english}
+% And we'll keep a count of how many tabs to make
+% \end{english}
% \begin{macrocode}
- \count256=0
- \endlinechar=-1
- \newtoks\tabtoks
- \newread\tabtex
- \newread\planread
- \openin\planread=\planfile
+ \newcount\tabscount \tabscount=0
% \end{macrocode}
+% \end{macro}
+%
+% \begin{danish}
+% Vi \verb|\loop|er nu over hver linje
+% i \DescribeMacro{\planfile}\verb|\planfile|, og tjekker om der
+% overhovedet er flere linjer,
+% \end{danish}
+% \begin{english}
+% We now \verb|\loop| over the lines in \DescribeMacro{\planfile},
+% and check whether there are any more lines,
+% \end{english}
% \begin{macrocode}
- \def\expandFiHere#1\fi{\fi #1}
+ \loop\ifeof\planread
+ \closein\planread
+ \closein\tabtex
+ \else
% \end{macrocode}
+% \begin{danish}
+% om vi er midt i at læse en \verb|.tex|--fil,
+% \end{danish}
+% \begin{english}
+% wether we're in the midde of reading a \verb|.tex| file,
+% \end{english}
% \begin{macrocode}
- \def\patheat#1/#2{%
- \ifx\relax#2\else
- \expandFiHere#1/\patheat#2%
- \fi
- }
- \edef\planpath{\expandafter\patheat\planfile/\relax}
+ \ifeof\tabtex
+ \let\readline\empty
+ \revy at readwithhash
% \end{macrocode}
+% \begin{danish}
+% om vi kigger på en linje med stub--kommandoer (som skal
+% ignoreres),
+% \end{danish}
+% \begin{english}
+% wether we're looking at a line with stub commands (which should
+% be ignored),
+% \end{english}
% \begin{macrocode}
- \def\titleeater#1#2\title#3{%
- \ifx\done#3%
- #1%
- \else
- \expandFiHere
- \titleeater{#3}%
- \fi
- }
+ \stubfalse
+ \expandafter\findStubCommands\line\relax
+ \ifstub \else
% \end{macrocode}
-% \begin{danish}
-% Her i \verb|\loop|'et tjekker vi først, om vi er færdige med
-% planfilen (\verb|\repeat| kobler på den \verb|\else|, som hører
-% til den første \verb|\ifeof|. Hvis den \verb|\ifeof| er sand, så
-% læser \TeX\ kun den \verb|\fi|, som er gemt inde i
-% \verb|\repeat|, og kalder ikke den rekursion, som også ligger
-% derinde. Jeg prøver at forklare det her for mig selv, for jeg
-% bliver forvirret hver gang jeg vender tilbage til den her
-% konstruktion.) Så tjekker vi, om der {\em ikke} er en åben fil i
-% \verb|\tabtex|. Hvis ikke, prøver vi at greje den næste linje i
-% planfilen. Ellers leder vi efter \verb|\title|--kald i filen i
-% \verb|\tabtex| (og håber, at det ikke spænder over flere
-% linjer).
-% \end{danish}
-% \begin{english}
-% In this loop, we read the plan file plan file line by line. If the
-% line ends in \texttt{.tex}, we take it as a file name, and open
-% that file, looking for \verb|\title| commands, which hopefully do
-% not span across any line breaks.
-% \end{english}
+% \begin{danish}
+% om vi kigger på en tom linje (som skal ignoreres),
+% \end{danish}
+% \begin{english}
+% wether we're looking at an empty line (which should be ignored),
+% \end{english}
% \begin{macrocode}
- \loop\ifeof\planread
- \closein\planread
- \else
- \ifeof\tabtex
- \let\readline\empty
- \read\planread to \line
- \expandafter\ifx\expandafter\par\line\else
- \IfEndWith{\line}{.tex}{
- \advance\count256 by 1
+ \IfStrEq{}{\line}{}{%
% \end{macrocode}
-% \begin{danish}
-% \verb|\set at curr@file| tager sig af problemer med catcode'er.
-% \end{danish}
-% \begin{english}
-% \verb|\set at curr@file| beats down issues with catcodes in
-% filenames.
-% \end{english}
+% \begin{danish}
+% om vi kigger på en kommentar (som skal ignoreres)
+% \end{danish}
+% \begin{english}
+% wether we're looking at a comment (which should be ignored)
+% \end{english}
% \begin{macrocode}
- \set at curr@file{\line}
- \openin\tabtex={\planpath\@curr at file}
- }{%
+ \IfBeginWith{\line}{\octothorpe}{}{%
+% \end{macrocode}
+% \begin{danish}
+% og om linjen slutter på \verb|.tex|. Hvis den gør, må vi have
+% fundet den næste \verb|.tex|--fil, der skal tjekkes.
+% \end{danish}
+% \begin{english}
+% and wether the line ends in \verb|.tex|. If it does, we must
+% have found the next \verb|.tex| file to check.
+% \end{english}
+% \begin{macrocode}
+ \IfEndWith{\line}{.tex}{%
+ \advance\tabscount by 1 %
+% \end{macrocode}
+% \begin{danish}
+% \verb|\set at curr@file| tager sig af problemer med catcode'er i
+% filnavne.
+% \end{danish}
+% \begin{english}
+% \verb|\set at curr@file| beats down issues with catcodes in
+% filenames.
+% \end{english}
+% \begin{macrocode}
+ \set at curr@file{\line}%
+ \openin\tabtex={\planpath\@curr at file}%
+ }{%
+% \end{macrocode}
+% \begin{danish}
+% Ellers må vi have fundet en aktoverskrift, og vi gemmer den
+% tilsvarende sekvens i \DescribeMacro{\tabtoks}\verb|\tabtoks|,
+% som beskrevet ovenfor.
+% \end{danish}
+% \begin{english}
+% Otherwise, we must have found an act heading, and save the
+% appropriate sequence in \DescribeMacro{\tabtoks}\verb|\tabtoks|,
+% as described above.
+% \end{english}
+% \begin{macrocode}
+ \edef\act{\noexpand\tabtoks={%
+ \the\tabtoks
+ \noexpand\undertab
+ \number\tabscount
+ \noexpand\text
+ \line
+ \noexpand\stop
+ }}\act
+ }%
+ }%
+ }%
+ \fi
+ \else
+% \end{macrocode}
+% \begin{danish}
+% Hvis vi \emph{er} midt i at læse en \verb|.tex|--fil, så
+% fortsætter vi med det (det her med, at vi skelner mellem hvilken
+% fil vi er ved at læse med en \verb|\ifeof| betyder, at der ikke
+% er noget eksplicit indre \verb|\loop|, der læser
+% \verb|.tex|--filen).
+% \end{danish}
+% \begin{english}
+% If we \emph{are} in the middle of reading a \verb|.tex| file,
+% we'll continue doing that (this thing, where we choose which
+% file we're reading with an \verb|\ifeof| means that there is no
+% explicit inner \verb|\loop| for reading the \verb|.tex|
+% files).
+% \end{english}
+% \begin{macrocode}
+ \read\tabtex to \subline
+ \edef\readline{%
+ \expandafter\titleeater
+ \expandafter\readline\subline\title\done
+ }%
+ \ifeof\tabtex
\edef\act{\noexpand\tabtoks={%
\the\tabtoks
- \noexpand\undertab
- \number\count256
- \noexpand\text
- \line
- \noexpand\stop
- }}\act
- }
- \fi
- \else
- \read\tabtex to \subline
- \edef\readline{%
- \expandafter\titleeater
- \expandafter\readline\subline\title\done
- }
- \ifeof\tabtex
- \edef\act{\noexpand\tabtoks={%
- \the\tabtoks
\noexpand\overtab
- \number\count256
+ \number\tabscount
\noexpand\text
\readline
\noexpand\stop
}}\act
+ \fi
\fi
- \fi
- \repeat
- \closein\tabtex
+ \repeat
% \end{macrocode}
%
% \begin{danish}
-% Afslutningssekvensen:
+% Efter, vi har læst hele planfilen, kan vi gemme den afsluttende
+% sekvens i \DescribeMacro{\tabtoks}\verb|\tabtoks|, før vi gemmer
+% hele sekvensen i \verb|\revy at tabs|, hvor den er tilgængelig for
+% resten af koden i klassen.
% \end{danish}
% \begin{english}
-% The final sequence:
+% Having read the entire plan file, we can save the final sequence
+% in \DescribeMacro{\tabtoks}\verb|\tabtoks|, before we save the
+% entire sequence in \verb|\revy at tabs|, which is where the rest of
+% the class' code can access it.
% \end{english}
% \begin{macrocode}
- \edef\act{\noexpand\tabtoks={%
- \the\tabtoks
- \noexpand\undertab
- \number\count256
- \noexpand\text
- \noexpand\done
- \noexpand\stop
- }}\act
+ \edef\act{\noexpand\tabtoks={%
+ \the\tabtoks
+ \noexpand\undertab
+ \number\tabscount
+ \noexpand\text
+ \noexpand\done
+ \noexpand\stop
+ }}\act
% \end{macrocode}
-% \begin{macro}{\revy at tabs}
-% And then, the money shot.
% \begin{macrocode}
- \xdef\revy at tabs{\the\tabtoks}
+ \xdef\revy at tabs{\the\tabtoks}%
+ \endgroup
% \end{macrocode}
-% \end{macro}
-% \begin{macrocode}
- \endgroup
-% \end{macrocode}
-% \end{implementation}
-%
% \begin{danish}
-% I eksemplet i appendiks \ref{fullex} er \verb|thumbindex| ikke
-% taget med, fordi det kun rigtig giver mening at lave
-% registermærkninger i en samling af manuskripter. Men hvis der
-% ligger en fil i samme mappe som eksempelfilen, som hedder
-% \texttt{aktoversigt.plan}, hvor indholdet er eksemplet fra før, og
-% hvis invokeringen i eksempelfilen skiftes ud med
+% Nu, hvor vi har givet \verb|\revy at tabs| det ønskede indhold,
+% kalder vi den som det sidste i den her makro, så det her kald til
+% \verb|\revy at tabs| giver det samme resultat som alle senere kald.
% \end{danish}
% \begin{english}
-% The thumbindex hasn't been enabled in the example file in appendix
-% \ref{fullex}, since there's nothing to index. However, if you were
-% to place the example plan file above in a file along side
-% \texttt{Example.tex} named \texttt{aktoversigt.plan}, and replace
-% the class invocation at the top of \texttt{Example.tex} with
+% Now that \verb|\revy at tabs| has the desired content, we'll call it
+% as the last step in this macro, so that this call to
+% \verb|\revy at tabs| yelds the same result as all subsequent calls.
% \end{english}
-% \begin{verbatim}
-%\documentclass[thumbindex]{ucph-revy}
-% \end{verbatim}
+% \begin{macrocode}
+ \revy at tabs
+ }
+% \end{macrocode}
+%
% \begin{danish}
-% så burde \texttt{.tex}--filen kompilere til et resultat, som har
-% registermærkninger ligesom i eksemplet i figur
-% \ref{eksempel}. Manglende filer bliver bare ignoreret.
-%
-% Det lyder måske som en god idé at have en side med et register,
-% som ligner det i figur \ref{registerex}, men som passer i
-% størrelsen til de mærkninger, som bliver sat i den enkelte
-% manuskriptfil. Et eksempel på hvordan man kunne lave en side med
-% sådan et registerindeks findes i appendiks
-% \ref{registerindeks}. Hvis du har adgang til klassens kildefiler
-% kan du også trække den kode ud i filen \texttt{Thumbindex.tex},
-% ved at køre filen \texttt{upch-revy-ex-thumb.ins} igennem \LaTeX.
-% \end{danish}
-% \begin{english}
-% then the typeset result should have a thumb marking like the one
-% in figure \ref{example}. Nonexistent files are simply ignored when
-% constructing the thumb index.
-%
-% You might also like to have a page with an index of the thumb
-% markings, something similar to figure \ref{thumbindexex}, but
-% scaled to a full page. Appendix \ref{registerindeks} hold a
-% complete example of one way to make a page like that. If you have
-% access to the package's source files, you can also extract that
-% code as the file \texttt{Thumbindex.tex}, by running the file
-% \texttt{ucph-revy-ex-thumb.ins} through \LaTeX.
-% \end{english}
-%
-% \begin{implementation}
-% \begin{danish}
% \textsf{Ti{\em k}Z} er ikke et tegneprogram\cite{tikz}, men vi
% bruger den alligevel til at tegne registermærkningerne.
% \end{danish}
@@ -1006,15 +1329,13 @@
% \end{macrocode}
% \begin{macro}{\expandFiHere}
% \begin{danish}
-% Du genkender måske den her som \verb|\hop|, hvis du har læst
-% \cite{eijkhout:hop}.
+% Den her skal også defineres i den her gruppe
% \end{danish}
% \begin{english}
-% You man reckognize this one as \verb|\hop| if you've read
-% \cite{eijkhout:hop}.
+% This one needs to be defined in this group as well
% \end{english}
% \begin{macrocode}
-\def\expandFiHere##1\fi{\fi ##1}
+ \def\expandFiHere##1\fi{\fi ##1}
% \end{macrocode}
% \end{macro}
% \begin{danish}
@@ -1080,24 +1401,24 @@
% \end{macro}
% \begin{macro}{\ifwritetitles}
% \begin{macrocode}
-\newif\ifwritetitles\writetitlesfalse
+ \newif\ifwritetitles\writetitlesfalse
% \end{macrocode}
% \end{macro}
% \begin{danish}
% Her kobler vi mening på de tokens, som vi stoppede ind i
-% \verb|\revy at tabtoks| tidligere.
+% \verb|\revy at tabs| tidligere.
% \end{danish}
% \begin{english}
% Here, we attach meaning to the tokens we stuffed into
-% \verb|\revy at tabtoks| previously.
+% \verb|\revy at tabs| previously.
% \end{english}
% \begin{macrocode}
\def\printovertab##1##2{
\fill ( 0, -##1\tabheight )
node[ text=white, anchor=east ]{\bfseries##1}
- +( \overtableft, -.5\tabheight + 1mm )
- rectangle +( \overtabright, .5\tabheight - 1mm )
- +( \textoffset, 0 )
+ +( \overtableft, -.5\tabheight + 1mm )
+ rectangle +( \overtabright, .5\tabheight - 1mm )
+ +( \textoffset, 0 )
\ifwritetitles
node[ anchor=\textanchorcorner ]{\small\bfseries##2}
\fi
@@ -1107,16 +1428,16 @@
% \begin{macrocode}
\def\printundertab##1##2##3{%
\path ( 0, -##1\tabheight ) +( \undertabright, -.5\tabheight - 1mm )
- coordinate (topright);
+ coordinate (topright);
\path ( 0, -##2\tabheight ) +( \undertableft, -.5\tabheight + 1mm )
- coordinate (bottomleft);
+ coordinate (bottomleft);
\fill[ color=black!30 ] (topright) rectangle (bottomleft);
\path (bottomleft)
\underangle node[ xshift=\underlabeloffset,
- pos=\underpos,
- rotate=\undersign90
- ]{\Large##3}
- (topright);
+ pos=\underpos,
+ rotate=\undersign90
+ ]{\Large##3}
+ (topright);
}%
% \end{macrocode}
% \begin{macrocode}
@@ -1387,7 +1708,54 @@
% \end{macro}\end{macro}\end{macro}\end{macro}
%
% \begin{danish}
-% \subsection{Infoblokken}
+% I eksemplet i appendiks \ref{fullex} er \verb|thumbindex| ikke
+% taget med, fordi det kun rigtig giver mening at lave
+% registermærkninger i en samling af manuskripter. Men hvis der
+% ligger en fil i samme mappe som eksempelfilen, som hedder
+% \texttt{aktoversigt.plan}, hvor indholdet er eksemplet fra før, og
+% hvis invokeringen i eksempelfilen skiftes ud med
+% \end{danish}
+% \begin{english}
+% The thumbindex hasn't been enabled in the example file in appendix
+% \ref{fullex}, since there's nothing to index. However, if you were
+% to place the example plan file above in a file along side
+% \texttt{Example.tex} named \texttt{aktoversigt.plan}, and replace
+% the class invocation at the top of \texttt{Example.tex} with
+% \end{english}
+% \begin{verbatim}
+%\documentclass[thumbindex]{ucph-revy}
+% \end{verbatim}
+% \begin{danish}
+% så burde \texttt{.tex}--filen kompilere til et resultat, som har
+% registermærkninger ligesom i eksemplet i figur
+% \ref{eksempel}. Manglende filer bliver bare ignoreret.
+%
+% Det lyder måske som en god idé at have en side med et register,
+% som ligner det i figur \ref{registerex}, men som passer i
+% størrelsen til de mærkninger, som bliver sat i den enkelte
+% manuskriptfil. Et eksempel på hvordan man kunne lave en side med
+% sådan et registerindeks findes i appendiks
+% \ref{registerindeks}. Hvis du har adgang til klassens kildefiler
+% kan du også trække den kode ud i filen \texttt{Thumbindex.tex},
+% ved at køre filen \texttt{upch-revy-ex-thumb.ins} igennem \LaTeX.
+% \end{danish}
+% \begin{english}
+% then the typeset result should have a thumb marking like the one
+% in figure \ref{example}. Nonexistent files are simply ignored when
+% constructing the thumb index.
+%
+% You might also like to have a page with an index of the thumb
+% markings, something similar to figure \ref{thumbindexex}, but
+% scaled to a full page. Appendix \ref{registerindeks} hold a
+% complete example of one way to make a page like that. If you have
+% access to the package's source files, you can also extract that
+% code as the file \texttt{Thumbindex.tex}, by running the file
+% \texttt{ucph-revy-ex-thumb.ins} through \LaTeX.
+% \end{english}
+% \end{macro}
+%
+% \begin{danish}
+% \subsection{Infoblokken}\label{info}
% Lige efter titlen kan vi sætte en masse information, som er
% brugbar i arbejdet med at organisere en revy. Figur \ref{title}
% viser et eksempel på, hvordan titlen ser ud med alle informationer
@@ -1399,6 +1767,7 @@
% \phantom{.}
% \begingroup
% \exDaPre
+% \title[Eksempel]{Et eksempel til at illustrere brugen af ucph--revy}
% \def\getpagerefnumber#1{2}
% \vspace{6em}
% \class at maketitle
@@ -1418,7 +1787,7 @@
% at have dem med. Makroerne var:
%\end{danish}
%\begin{english}
-% \subsection{The infoblock}
+% \subsection{The infoblock}\label{info}
% \cn's modified title block contains some additinal information that
% is useful in organizing a show. Figure \ref{title} shows an example
% of how the title block looks with every possilbe piece of
@@ -1430,6 +1799,7 @@
% \phantom{.}
% \begingroup
% \exEnPre
+% \title[Example]{An example to illustrate the use of ucph--revy}
% \def\getpagerefnumber#1{2}
% \vspace{6em}
% \class at maketitle
@@ -1472,7 +1842,7 @@
% \verb|\version| is the only one of these commands that may not
% be omitted, because version conrol is important\footnote{You
% might be of the opinion that there are better ways of doing
-% version control in the far future year 2023. In which case, you
+% version control in this far future year 2023. In which case, you
% may take this as a reminder to actually use one of them.}.
% \end{english}
% \begin{implementation}
@@ -1494,19 +1864,19 @@
% \begin{macro}{\revyyear}
% \begin{macro}{\title}
% \begin{danish}
+% \changes{v1.2.0}{2025/03/18}{Valgfri kort titel}
%\begin{verbatim}
%\revyname{FysikRevy\texttrademark}
%\revyyear{2019}
-%\title{Eksempel}
-%\author{en eksempelsmed}
+%\title[Eksempel]{Et eksempel til at illustrere brugen af ucph--revy}
%\end{verbatim}
%\end{danish}
%\begin{english}
+%\changes{v1.2.0}{2025/03/18}{Optional short title}
% \begin{verbatim}
%\revyname{The Meaning of Liff}
%\revyyear{3001}
-%\title{Example}
-%\author{an examplesmith}
+%\title[Example]{An example to illustrate the use of ucph--revy}
% \end{verbatim}
%\end{english}
% \begin{implementation}
@@ -1514,13 +1884,48 @@
\def\revyname#1{\def\@revyname{#1}}
\def\revyyear#1{\def\@revyyear{#1}}
% \end{macrocode}
+% \end{implementation}
+% \label{shorttitle}
+% \begin{danish}
+% Her demonstreres brugen af den valgfri parameter til
+% \verb|\title|, som er en kort udgave af titlen, som bliver brugt
+% i sidehovedet, og kan bruges i indholdsoversigter. I eksemplet i
+% appendix \ref{fullex} er den valgfri parameter udeladt, fordi
+% titlen der ikke er uforholdsmæssigt lang.
+% \end{danish}
+% \begin{english}
+% This demonstrates the use of the optional parameter to
+% \verb|\title|, which is a short version of the title. The short
+% title is put in the page headers, and can be used for content
+% lists. In the example in appendix \ref{fullex}, the optional
+% parameter is skipped, since its title is of a reasonable length.
+% \end{english}
+% \begin{implementation}
+% \begin{macrocode}
+\let\revy at oldtitle=\title
+\renewcommand{\title}[2][\relax]{%
+ \ifx\relax#1 \shorttitle{\@title}\else\shorttitle{#1}\fi
+ \revy at oldtitle{#2}%
+}
+% \end{macrocode}
+% \end{implementation}
+% \begin{macro}{\shorttitle}
% \begin{danish}
-% \verb|\title| og \verb|\author| bliver ikke ændret.
+% Den korte titel kan også sættes med makroen
+% \verb|\shorttitle|\marg{kort titel}.
% \end{danish}
% \begin{english}
-% \verb|\title| and \verb|\author| remian unaltered.
+% The short title may also be set with the macro
+% \verb|\shorttitle|\marg{short title}.
% \end{english}
+% \begin{implementation}
+% \begin{macrocode}
+\newcommand{\shorttitle}[1]{\def\theshorttitle{#1}}
+\shorttitle{\@title}
+% \end{macrocode}
% \end{implementation}
+% \end{macro}
+%
% \begin{danish}
% Hvis \cn\ ikke får at vide, hvad revyens navn og år skal være,
% og hvad titlen er, går den som standard ud fra, at det er
@@ -1530,6 +1935,7 @@
% If \cn\ isn't given a revue name, year or a title, it will use the
% defaults of ``DIKUrevy'', ``1973'' and ``En sketch''.
% \end{english}
+%
% \begin{implementation}
% \begin{macrocode}
\def\@revyyear{1973}
@@ -1549,10 +1955,10 @@
% \begin{danish}
% De resterende bliver ikke sat, hvis de ikke bliver defineret.
%\begin{verbatim}
+%\author{en eksempelsmed}
%\status{eksempel}
%\eta{$1$ minut, $47$ sekunder}
%\responsible{Dig}
-%\author{en eksempelsmed}
%\melody{Queen: "`Bohemian Rhapsody"' (\url{https://youtu.be/fJ9rUzIMcZQ})}
%\end{verbatim}
% \end{danish}
@@ -1559,6 +1965,7 @@
% \begin{english}
% The rest aren't typeset if they are not defined.
%\begin{verbatim}
+%\author{an examplesmith}
%\status{example}
%\eta{$1$ minute, $47$ seconds}
%\responsible{Probably you}
@@ -1695,6 +2102,8 @@
% "`0 sider"', mens \verb|\pagessum{1}| giver "`1 side"'. En ny
% makro, som hedder \verb|\pagessum|, men gør noget andet, kan
% defineres med \verb|\renewcommand|.
+%
+% I udgangspunktet er definitionen
% \end{danish}
% \begin{english}
% The page count is a touch more complicated, and requires a macro
@@ -1702,17 +2111,14 @@
% grammatically correct phrase for that page count. Thus
% \verb|\pagessum{0}| becomes ``0 sider'' (the plural), while
% \verb|\pagessum{1}| becomes ``1 side'' (the singular).
-% \end{english}
-% \begin{implementation}
-% \begin{english}
-% The default macro, for danish, is
+%
+% The default macro, for danish, is
% \end{english}
% \begin{macrocode}
\newcommand{\pagessum}[1]{#1 side\ifnum1=#1\else r\fi}
% \end{macrocode}
-% \end{implementation}
% \begin{english}
-% In the example, such a macro is given for english in the line
+% In the example, such a macro is given for english as
% \begin{verbatim}
%\renewcommand{\pagessum}[1]{#1 page\ifnum#1=1\else s\fi}
% \end{verbatim}
@@ -1887,8 +2293,14 @@
%
% \begin{figure}[htbp]
% \begingroup
-% \IfLanguageName{danish}{\exDaPre}{}
-% \IfLanguageName{english}{\exEnPre}{}
+% \IfLanguageName{danish}{
+% \exDaPre
+% \title[Eksempel]{Et eksempel til at illustrere brugen af ucph--revy}
+% }{}
+% \IfLanguageName{english}{
+% \exEnPre
+% \title[Example]{An example to illustrate the use of \cn}
+% }{}
% \ps at revyheadings
% \let\thepage=2
% \def\pageref#1{2}
@@ -1928,7 +2340,7 @@
\hbox to \textwidth{\hfil\rectoheaderthumbtab}
\hbox{\rm\strut\@revyname{} \@revyyear}
\hbox to \textwidth{Version \@version\quad\today
- \hfil {\large\sl\@title}\hfil
+ \hfil {\large\sl\theshorttitle}\hfil
Side \rm\thepage/\pageref{lastpage}}
\hrule}}
\def\@evenhead{\vbox to 0pt{\vss
@@ -1935,7 +2347,7 @@
\hbox{\versoheaderthumbtab}
\hbox to \textwidth{\hfil\rm\strut\@revyname{} \@revyyear}
\hbox to \textwidth{Side \rm\thepage/\pageref{lastpage}
- \hfil {\large\sl\@title}\hfil
+ \hfil {\large\sl\theshorttitle}\hfil
Version \@version\quad\today}
\hrule}}
\def\@oddfoot{}\def\@evenfoot{}}
@@ -2026,6 +2438,9 @@
% \role{I} Vred instruktør
% \role{A9}[A--ni] Anine
% \end{roles}
+% \begin{instructors}
+% \instructor[Instruktør] Raben
+% \end{instructors}
% \begin{props}
% \prop{Hedegaard--hår}[Person, der skaffer]
% \prop{Didgeridoo}[Anine]
@@ -2039,6 +2454,9 @@
% \role{I} Vred instruktør
% \role{A9}[A--ni] Anine
% \end{roles}
+% \begin{instructors}
+% \instructor[Instruktør] Raben
+% \end{instructors}
% \begin{props}
% \prop{Hedegaard--hår}[Person, der skaffer]
% \prop{Didgeridoo}[Anine]
@@ -2423,7 +2841,7 @@
% \changes{v1.0.0}{2023/09/05}{The body text macros
% (\texttt{\textbackslash scene}, etc.) are no longer available
% outside the \texttt{song} and \texttt{sketch} environments.}
-% To typese spoken lines, as in the example shown in figure
+% To typeset spoken lines, as in the example shown in figure
% \ref{sketchex}, use the \texttt{sketch} envrionment.
%
% \begin{figure}[hbtp]
@@ -3097,7 +3515,11 @@
\role{I} Vred instruktør
\role{A9}[A--ni] Anine
\end{roles}
-%% props-miljøet kan fjernes, hvis der ikke er brug for det
+%% instructors- og props-miljøet kan fjernes, hvis der ikke er brug
+%% for det
+\begin{instructors}
+ \instructor[Instruktør] Raben
+\end{instructors}
\begin{props}
\prop{Hedegaard--hår}[Person, der skaffer]
\prop{Didgeridoo}[Anine]
@@ -3135,10 +3557,6 @@
\says{A9} Didgeridoo?
\says{PH} Ja. Der står i rekvisitlisten, at du skaffer en.
\says{A9} Jamen så må det jo passe.
- \says{PH} Ja, ellers skriver vi "`Person, der skaffer,"' for at
- minde os om at skrive et navn ind.
- \says{A9} Nå, men så må jeg jo hellere begynde at lede. \act{Vender
- sig mod Bandet} Bandet, har I...?
%<*driver>
\end{sketch}
\end{document}
@@ -3147,6 +3565,10 @@
\begin{document}
\begin{sketch}
%</driver>
+ \says{PH} Ja, ellers skriver vi "`Person, der skaffer,"' for at
+ minde os om at skrive et navn ind.
+ \says{A9} Nå, men så må jeg jo hellere begynde at lede. \act{Vender
+ sig mod Bandet} Bandet, har I...?
\scene{Hvert bandmedlem holder sin egen didgeridoo op.}
\says{A9}[Til PH] Den ser ud til at være i vinkel.
\says{PH} Sejt.
Modified: trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.ins 2025-04-05 19:54:41 UTC (rev 74856)
+++ trunk/Master/texmf-dist/source/latex/ucph-revy/ucph-revy.ins 2025-04-05 19:55:04 UTC (rev 74857)
@@ -7,7 +7,7 @@
Copyright (C) 1995 Arne John Glenstrup
2000 Uffe Friis Lichtenberg
- 2023 Kristoffer Levin Hansen
+ 2023-2025 Kristoffer Levin Hansen
This file may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
Modified: trunk/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls 2025-04-05 19:54:41 UTC (rev 74856)
+++ trunk/Master/texmf-dist/tex/latex/ucph-revy/ucph-revy.cls 2025-04-05 19:55:04 UTC (rev 74857)
@@ -9,7 +9,7 @@
%%
%% Copyright (C) 1995 Arne John Glenstrup
%% 2000 Uffe Friis Lichtenberg
-%% 2023 Kristoffer Levin Hansen
+%% 2023-2025 Kristoffer Levin Hansen
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -22,7 +22,7 @@
%% LaTeX version 2005/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesClass{ucph-revy}
- [2024/12/18 v1.1.0 A class for making musical manuscripts]
+ [2025/03/26 v1.2.0 A class for making musical manuscripts]
\RequirePackage{xstring}
\newif\if at thumbindex\@thumbindexfalse
\DeclareOption{thumbindex}{\@thumbindextrue}
@@ -42,88 +42,146 @@
\setlength{\textheight}{\paperheight}
\addtolength{\textheight}{-4cm}
\if at thumbindex
+ \def\revy at readwithhash{
+ \catcode`\#=11
+ \read\planread to \line
+ \catcode`\#=6
+ }
+ \catcode`\#=11
+ \edef\octothorpe{#}
+ \catcode`\#=6
\expandafter\@firstofone
\else
\expandafter\@gobble
\fi{
- \RequirePackage[OT1]{fontenc}
- \begingroup
- \count256=0
- \endlinechar=-1
- \newtoks\tabtoks
- \newread\tabtex
- \newread\planread
- \openin\planread=\planfile
- \def\expandFiHere#1\fi{\fi #1}
- \def\patheat#1/#2{%
- \ifx\relax#2\else
- \expandFiHere#1/\patheat#2%
- \fi
+ \newtoks\planfileAllowedMacros
+ \planfileAllowedMacros={
+ \title\eta\status\melody\revyname\revyyear\category
+ }
+ \def\planfileAllowMacros#1{
+ \toks256={#1}
+ \edef\act{
+ \noexpand\planfileAllowedMacros={
+ \the\planfileAllowedMacros \the\toks256
+ }
}
- \edef\planpath{\expandafter\patheat\planfile/\relax}
- \def\titleeater#1#2\title#3{%
- \ifx\done#3%
- #1%
- \else
- \expandFiHere
- \titleeater{#3}%
- \fi
- }
- \loop\ifeof\planread
- \closein\planread
- \else
- \ifeof\tabtex
- \let\readline\empty
- \read\planread to \line
- \expandafter\ifx\expandafter\par\line\else
- \IfEndWith{\line}{.tex}{
- \advance\count256 by 1
- \set at curr@file{\line}
- \openin\tabtex={\planpath\@curr at file}
- }{%
- \edef\act{\noexpand\tabtoks={%
- \the\tabtoks
- \noexpand\undertab
- \number\count256
- \noexpand\text
- \line
- \noexpand\stop
- }}\act
- }
+ \act
+ }
+ \def\revy at tabs{%
+ \begingroup
+ \def\stubCommand{}%
+ \def\swap##1##2{##2##1}%
+ \def\skipFiFi##1\nothing{\fi\fi}%
+ \let\nothing=\relax
+ \def\markStubCommands##1{%
+ \ifx\@undefined##1 \else
+ \ifx\relax##1%
+ \skipFiFi
+ \fi
\fi
+ \let##1=\stubCommand
+ \swap\markStubCommands\nothing
+ }
+ \edef\act{\noexpand\markStubCommands\the\planfileAllowedMacros\relax}%
+ \act
+ \newif\ifstub \stubfalse
+ \def\findStubCommands##1{%
+ \ifx\stubCommand##1%
+ \stubtrue
+ \fi
+ \ifx\relax##1 \else
+ \expandafter\findStubCommands
+ \fi
+ }%
+ \def\expandFiHere##1\fi{\fi ##1}%
+ \def\patheat##1/##2{%
+ \ifx\relax##2\else
+ \expandFiHere##1/\patheat##2%
+ \fi
+ }%
+ \edef\planpath{\expandafter\patheat\planfile/\relax}%
+ \newread\planread
+ \openin\planread=\planfile
+ %[
+ \def\skipopt##1]##2{\titleeater{##2}}%
+ \def\titleeater##1##2\title##3{%
+ \ifx\done##3%
+ ##1%
+ \else
+ \ifx##3[% ]
+ \expandFiHere\expandFiHere\skipopt
+ \else
+ \expandFiHere\expandFiHere\titleeater{##3}%
+ \fi
+ \fi
+ }%
+ \endlinechar=-1
+ \newread\tabtex
+ \newtoks\tabtoks
+ \newcount\tabscount \tabscount=0
+ \loop\ifeof\planread
+ \closein\planread
+ \closein\tabtex
\else
- \read\tabtex to \subline
- \edef\readline{%
- \expandafter\titleeater
- \expandafter\readline\subline\title\done
- }
\ifeof\tabtex
- \edef\act{\noexpand\tabtoks={%
+ \let\readline\empty
+ \revy at readwithhash
+ \stubfalse
+ \expandafter\findStubCommands\line\relax
+ \ifstub \else
+ \IfStrEq{}{\line}{}{%
+ \IfBeginWith{\line}{\octothorpe}{}{%
+ \IfEndWith{\line}{.tex}{%
+ \advance\tabscount by 1 %
+ \set at curr@file{\line}%
+ \openin\tabtex={\planpath\@curr at file}%
+ }{%
+ \edef\act{\noexpand\tabtoks={%
+ \the\tabtoks
+ \noexpand\undertab
+ \number\tabscount
+ \noexpand\text
+ \line
+ \noexpand\stop
+ }}\act
+ }%
+ }%
+ }%
+ \fi
+ \else
+ \read\tabtex to \subline
+ \edef\readline{%
+ \expandafter\titleeater
+ \expandafter\readline\subline\title\done
+ }%
+ \ifeof\tabtex
+ \edef\act{\noexpand\tabtoks={%
\the\tabtoks
\noexpand\overtab
- \number\count256
+ \number\tabscount
\noexpand\text
\readline
\noexpand\stop
}}\act
+ \fi
\fi
- \fi
- \repeat
- \closein\tabtex
- \edef\act{\noexpand\tabtoks={%
- \the\tabtoks
- \noexpand\undertab
- \number\count256
- \noexpand\text
- \noexpand\done
- \noexpand\stop
- }}\act
- \xdef\revy at tabs{\the\tabtoks}
- \endgroup
+ \repeat
+ \edef\act{\noexpand\tabtoks={%
+ \the\tabtoks
+ \noexpand\undertab
+ \number\tabscount
+ \noexpand\text
+ \noexpand\done
+ \noexpand\stop
+ }}\act
+ \xdef\revy at tabs{\the\tabtoks}%
+ \endgroup
+ \revy at tabs
+ }
\RequirePackage{tikz}
\def\revy at thumbindex#1{%
\begingroup
-\def\expandFiHere##1\fi{\fi ##1}
+ \def\expandFiHere##1\fi{\fi ##1}
\newdimen\tabheight
\tabheight=\paperheight
\advance\tabheight by -1cm%
@@ -157,13 +215,13 @@
\def\textoffset{\undertabright + .5cm}
\def\textside{left}
}
-\newif\ifwritetitles\writetitlesfalse
+ \newif\ifwritetitles\writetitlesfalse
\def\printovertab##1##2{
\fill ( 0, -##1\tabheight )
node[ text=white, anchor=east ]{\bfseries##1}
- +( \overtableft, -.5\tabheight + 1mm )
- rectangle +( \overtabright, .5\tabheight - 1mm )
- +( \textoffset, 0 )
+ +( \overtableft, -.5\tabheight + 1mm )
+ rectangle +( \overtabright, .5\tabheight - 1mm )
+ +( \textoffset, 0 )
\ifwritetitles
node[ anchor=\textanchorcorner ]{\small\bfseries##2}
\fi
@@ -171,16 +229,16 @@
}%
\def\printundertab##1##2##3{%
\path ( 0, -##1\tabheight ) +( \undertabright, -.5\tabheight - 1mm )
- coordinate (topright);
+ coordinate (topright);
\path ( 0, -##2\tabheight ) +( \undertableft, -.5\tabheight + 1mm )
- coordinate (bottomleft);
+ coordinate (bottomleft);
\fill[ color=black!30 ] (topright) rectangle (bottomleft);
\path (bottomleft)
\underangle node[ xshift=\underlabeloffset,
- pos=\underpos,
- rotate=\undersign90
- ]{\Large##3}
- (topright);
+ pos=\underpos,
+ rotate=\undersign90
+ ]{\Large##3}
+ (topright);
}%
\def\overtab##1\text##2\stop{%
\printovertab{##1}{##2}
@@ -277,6 +335,13 @@
\global\let\the at version=\versionsnr}{}\the at version}
\def\revyname#1{\def\@revyname{#1}}
\def\revyyear#1{\def\@revyyear{#1}}
+\let\revy at oldtitle=\title
+\renewcommand{\title}[2][\relax]{%
+ \ifx\relax#1 \shorttitle{\@title}\else\shorttitle{#1}\fi
+ \revy at oldtitle{#2}%
+}
+\newcommand{\shorttitle}[1]{\def\theshorttitle{#1}}
+\shorttitle{\@title}
\def\@revyyear{1973}
\def\@revyname{DIKUrevy}
\def\@title{En sketch}
@@ -354,7 +419,7 @@
\hbox to \textwidth{\hfil\rectoheaderthumbtab}
\hbox{\rm\strut\@revyname{} \@revyyear}
\hbox to \textwidth{Version \@version\quad\today
- \hfil {\large\sl\@title}\hfil
+ \hfil {\large\sl\theshorttitle}\hfil
Side \rm\thepage/\pageref{lastpage}}
\hrule}}
\def\@evenhead{\vbox to 0pt{\vss
@@ -361,7 +426,7 @@
\hbox{\versoheaderthumbtab}
\hbox to \textwidth{\hfil\rm\strut\@revyname{} \@revyyear}
\hbox to \textwidth{Side \rm\thepage/\pageref{lastpage}
- \hfil {\large\sl\@title}\hfil
+ \hfil {\large\sl\theshorttitle}\hfil
Version \@version\quad\today}
\hrule}}
\def\@oddfoot{}\def\@evenfoot{}}
More information about the tex-live-commits
mailing list.