Changes Evolution
Jump to navigation
Jump to search
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