Changes Evolution

From Wiki
Revision as of 09:16, 6 February 2021 by AKielhorn (talk | contribs) (Fixed the removed paragraph, it wasn't removed when printing the final version.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

< Sample documents

Some documents need to evolve. Laws change, a client changes their mind. While working on a project I like to see the changes but when the project is finished I only need the final document.

The following document creates both documents from a single source. It offers two change histories, one by version number and one by date. In a normal document you would probably only use one.

% !TEX TS-program = ConTeXt (LuaTeX 1.0.9)
% !TEX encoding = UTF-8 Unicode

% Copyright 2018 - 2021 Axel Kielhorn
% Lizenz: CC-BY-SA 4.0 Unported http://creativecommons.org/licenses/by-sa/4.0/deed.de

\enablemode[change]
\setuphyphenation[method=expanded]

\language[de]
\mainlanguage[de]
\setbreakpoints[compound]

\setuppapersize [A4][A4]
\setuplayout    [width=middle,  backspace=1in, cutspace=1in,
                 height=middle, topspace=0.75in, bottomspace=0.75in]

\setupbodyfont[11pt]

% Colo[u]rs

\definecolor[ChrC][red]
\definecolor[ChaC][darkgreen]
\definecolor[ChcC][blue]

% Befehle im Text

\def\Chrc{\ChrC}
\def\Chac{\ChaC}

% Alternative Hervorhebungen

\definetextbackground
 [Highlight]
 [frame=off,
  background=color,
  backgroundcolor=yellow]
  
\setupbar[overstrike][%
 color=ChrC,           %  Farbe
 rulethickness=0.2,   %  Liniendicke in pt 
 offset=.7]           %  Höhenverschiebung in ex

% \def\Chrc{\overstrike}
% \def\Chac{\Highlight}


% Register for version
\defineregister [changev]
\setupregister  [changev] [
  indicator=no          %% no letter
      style=sansbold,   %% headings
  textstyle=slanted,    %% entries
  pagestyle=bolditalic, %% page refs
          n=1,          %% columns
]


% Register for date
\defineregister [changed]
\setupregister  [changed] [
  indicator=no          %% no letter
      style=sansbold,   %% headings
  textstyle=slanted,    %% entries
  pagestyle=bolditalic, %% page refs
          n=1,          %% columns
]

% Change marker and short version for register
% by version number
\def\ChangeV#1#2{\changev{#1+#2}\doifmode{change}{\inmargin{\tx #1}{\ChcC #2\par}}}
\def\ChangeD#1#2{\changed{#1+#2}\doifmode{change}{\inmargin{\tx #1}{\ChcC #2\par}}}

% Inline change
\def\Changer#1{{\doifmode{change}{\Chrc{#1}}}}		            	% removed
\def\Changea#1{{\doifmodeelse{change}{\Chac{#1}}{#1}}}	    		% added
\def\Changec#1#2{{\doifmodeelse{change}{\Chrc{#1}\Chac{#2}}{#2}}}	% changed

\defineblock [ChangePR]
\defineblock [ChangePA]

\setupblock [ChangePR]
 [before={\startsidebar[rulecolor=ChrC]},
  after={\blank[overlay]\stopsidebar}]

\setupblock [ChangePA]
 [before={\startsidebar[rulecolor=ChaC]},
  after={\blank[overlay]\stopsidebar}]

\doifelsemode {change} {
   \keepblocks[ChangePR,ChangePA]
} {
   \keepblocks[ChangePA]
   \setupblock
     [ChangePA]
     [before={},
      after={}]  
}
  
\starttext

\beginChangePR
\ChangeV{V. 1.0}{Fertig!}
\ChangeV{V. 2.0}{Langer Text von DEK entfernt.}
\input knuth
\endChangePR

\ChangeD{2018-12-22}{Fertig!}

\beginChangePA
\ChangeD{2018-12-23}{Letzter Fehler beseitigt.}
\ChangeV{V. 2.0}{Langer Text von DEK als Seitenfüller}
\input knuth
\endChangePA

\ChangeD{2018-12-23}{Allerletzter Fehler beseitigt.}

In diesem Satz war ein \Changec{Fähler}{Fehler}.

\beginChangePA
\ChangeV{V. 2.0}{Farben geändert}
Die Änderungskommentare werden jetzt in {\ChcC blau} ausgegeben, da {\ChrC rot} für gelöschte Texte und {\ChaC grün} für hinzugefügte Texte verwendet wird.
\endChangePA

\beginChangePR
\ChangeV{V. 3.0}{Syntax veraltet}
\ChangeV{V. 2.0}{Neue Befehle \type{ChangeA}, \type{ChangeR}, \type{Changea}, \type{Changer} und \type{Changec}}
Mit den Befehlen \type{\ChangeA} und \type{\ChangeR} werden hinzugefügte bzw. gelöschte Absätze gekennzeichnet.
\endChangePR

\beginChangePA
\ChangeV{V. 3.0}{Syntax veraltet}
Die neuen Befehle \type{\beginChangePA}/ \type{\endChangePA} (Paragraph added) und \type{\beginChangePR}/ \type{\endChangePR} (Paragraph removed) werden zum hervorheben von absatzweisen Änderungen benutzt.
Die Information über die Änderung (Version und Kurzbeschreibung) wird über einen \type{\ChangeV} oder \type{\ChangeD} hinzugefügt.
\endChangePA

\beginChangePA
\ChangeV{V. 2.0}{Befehle für Änderungen im Text}
Mit den Befehlen \type{\Changea}, \type{\Changer} und \type{\Changec} werden hinzugefügte, gelöschte oder geänderte Satzteile gekennzeichnet. Der Befehl \type{\Changec} hat zwei Argumente: alter Text und neuer Text.
\endChangePA

\beginChangePA
\ChangeV{V. 3.0}{Absatz hinzugefügt mit Start/Stopp}
Absatz hinzugefügt
\endChangePA

\beginChangePR
\ChangeV{V. 3.0}{Absatz gelöscht mit Start/Stopp}
Abstaz entfernt
\endChangePR

Ende

\startsection[title={History}]

By Version Number:

\placechangev

\blank[big]
By Date:

\placechanged

\stopsection

\stoptext