Skip to content

Commit

Permalink
latexdiff.sh-Skript hinzugefügt
Browse files Browse the repository at this point in the history
  • Loading branch information
NEOatNHNG committed Dec 1, 2014
1 parent 6be6a0e commit 1224cd8
Show file tree
Hide file tree
Showing 3 changed files with 242 additions and 1 deletion.
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,20 @@ Was ist wenn ich kein rubber installiert habe?
Wenn du auf deinem System kein rubber installieren kannst oder möchtest, dann kannst du auch einfach xelatex oder pdflatex verwenden. Bei pdflatex sehen die Überschriften etwas hässlicher aus. Du kannst dann nicht das Build-Skript benutzen sondern musst jede Ordnung einzeln kompilieren.


Wie kann man sich die Änderungen zwischen zwei Versionen anzeigen lassen?
-------------------------------------------------------------------------
Um Änderungen zwischen LaTeX-Dateien anzuzeigen, gibt es das tolle Programm `latexdiff`. Aber weil die Ordnungen etwas kompliziertere Dinge tun muss man dem sehr viele Optionen mitgeben. Daher liefern wir ein Skript `latexdiff.sh` mit, dass das übernimmt.

Einfach mit `cd <ordner>` in den Ordner wechseln wo diese Anleitung liegt und dann `./latexdiff.sh <alt> <neu> <ordnung>` ausführen. Dabei fügt man statt `<alt>` den Namen für die alte Version und statt `<neu>` den Namen für die neuere Version ein. Falls man die neuere Version weg lässt wird mit dem aktuellen Zustand der Datei verglichen und falls man auch noch die alte Version weglässt wird die aktuelle Version im Repository (HEAD) als Grundlage genommen. Die Grundform `./latexdiff.sh <ordnung>` zeigt also einfach an was man, seit dem man die Ordnung das letzte mal committed (in die Versionsverwaltung eingetragen) hat, geändert hat.

Wenn man kein rubber installiert hat gibt das Skript einen Fehler aus, sagt aber wo es die Dateien abgelegt hat. In dem Ordner dann einfach mit xelatex oder pdflatex kompilieren.


Welche Dinge brauche ich um die Satzungen zu kompilieren?
---------------------------------------------------------
Außer rubber für das Build-Skript brauchst du noch folgende LaTeX-Pakete:
- koma-script midestens Version 0.7 (im texlive-latex-recommended Paket)
- rubber für das Build-Skript (optional)
- latexdiff-git für das latexdiff-Skript (optional, latexdiff-git ist oft bei latexdiff mit dabei)


Was ist wenn meine KomaScript-Version zu alt ist?
Expand Down
79 changes: 79 additions & 0 deletions latexdiff.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/bin/bash
# Dieses Script macht ein Diff zwischen der Übergebenen Satzung in verschiedenen
# Versionen

help(){
echo "Benutzung: $0 [<version-alt> [<version-neu>]] Ordnung"
echo
echo "Mache ein Diff für das angegebene Dokument."
echo "Optional können ein oder zwei Versionen angegeben werden mit bzw."
echo "zwischen denen verglichen wird. Standardmäßig wird mit HEAD verglichen."
}

case "$1" in
-h|--help)
help
exit 0
;;
esac

if [ $# -lt 1 ]
then
echo "Fehler: Brauche mindestens ein Argument"
echo
help
exit 1
fi

if [ $# -gt 3 ]
then
echo "Fehler: Kann mit mehr als drei Argumenten nichts anfangen"
echo
help
exit 1
fi

basedir="$(dirname "$0")"
ordnung="${!#%/}"

# Parse Versions-Strings
if [ $# -gt 1 -a "$1" ]
then
alt="$1"
else
alt="HEAD"
fi
versions=("-r" "$alt")

if [ $# -gt 2 -a \( "$1" -a "$2" \) ]
then
neu="$2"
versions+=("-r" "$neu")
fi

# Erzeuge ein Arbeitsverzeichnis in /tmp
tmpdir="$(mktemp -d --tmpdir "latexdiff.$ordnung.XXXXXXXXXX")"

# Kopiere das template ins Arbeitsverzeichnis
cp "$basedir/latexdiff_template.tex" "$tmpdir/$ordnung.diff.tex"

# Führe latexdiff-git aus
latexdiff-git --encoding=utf8 --packages=hyperref --exclude-safecmd='ref' --append-textcmd='stupadate,publishdate,jurchanges,jurparagraph,jursubparagraph,jursection' --dir="$tmpdir/" "${versions[@]}" "$basedir/$ordnung/document.core.tex"

# Wenn zwei Versionen verglichen werden hinterlässt latexdiff-git Müll
# => aufräumen
if [ "$neu" ]
then
rm "$basedir/$ordnung/document.core-oldtmp-"*".tex"
fi

# Verschiebe das Diff und lösche Unterordner
mv "$tmpdir/$ordnung/document.core.tex" "$tmpdir/document.core.diff.tex"
rmdir "$tmpdir/$ordnung/"

# Baue das Diff-PDF
cd "$tmpdir"
rubber --pdf --warn misc "$tmpdir/$ordnung.diff.tex"

echo "Das Diff liegt in $tmpdir/"
xdg-open "$tmpdir/$ordnung.diff.pdf"
152 changes: 152 additions & 0 deletions latexdiff_template.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
%% Diese Datei dient dazu Diffs aus latex zu generieren. Sie wird mit dem
%% latexdiff.sh-Skript benutzt

\documentclass[
a4paper,
parskip=half,
numbers=noenddot,
% titlepage,
% twoside, % Benutze diese Optionen für Booklet-Layout
% BCOR=2mm, % Auskommentiert für bessere Bildschirmdarstellung
DIV=12,
]{scrartcl}

\synctex=1

%%% rubber: module xelatex
\usepackage{ifxetex}
\ifxetex
\usepackage{fontspec}% provides font selecting commands
%\setmainfont[Mapping=tex-text]{Adobe Garamond Pro}
%\setsansfont[Mapping=tex-text]{Myriad Pro}
\else
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\fi

\usepackage[ngerman]{babel}

% Wir brauchen scrjura aus den koma-script-Klassen in mindestens Version 0.7
% sonst werden auch einzelne Absätze nummeriert. Falls nicht vorhanden unter
% http://mirrors.ctan.org/install/macros/latex/contrib/koma-script.tds.zip
% runterladen und in ~/texmf/ entpacken (evtl. noch "texhash ~/texmf/" ausführen)
\usepackage[juratotoc,juratocindent=0pt,ref=parlong,ref=nosentence]{scrjura}[2013/11/04]

% Verwende multicol für den Zwei-Spalten-Satz
% Erlaubt Umschaltung innerhalb der Seite und gleicht die Spalten aus
\usepackage{multicol}
% Setze Abstand zwischen Spalten
\setlength{\columnsep}{5mm}

% Für leichteres Programmieren
\usepackage{xifthen}

% Für "schöne" Brüche, z.B. bei 2/3-Mehrheit
\usepackage{xfrac}

% Großbuchstaben für die Untergliederungen
\renewcommand{\thesection}{\Alph{section}}

% Setze einen kleinen Abstand \, zwischen Zahl und Buchstabe bei Paragraphen
\renewcommand*{\thecontractSubParagraph}{%
{\theParagraph\texorpdfstring{\,}{}\alph{contractSubParagraph}}}

% Größerer Abstand zwischen Paragraphennummer und -titel im Inhaltsverzeichnis
\renewcommand{\numberline}[1]{\makebox[2.5em][l]{#1}}


% Aus irgendeinem Grund werden chapters nicht als Absatz in einem Paragraphen
% fehlinterpretiert sections aber schon und dementsprechend wird vor ihnen eine
% Absatznummer eingefügt => definiere eigenen Befehl (macht es auch einfacher
% wenn man doch wieder scrbook und chapters will)
\newcommand{\jursection}[1]{\parnumberfalse\section{#1}\parnumbertrue}

% Dieses Kommando setzt einen Paragraphen
% Eigentlich gibt es dazu \Paragraph aus scrjura aber das hat eine komische Argument-Syntax weshalb das nicht ganz so gut mit latexdiff zusammen zu bringen ist und auch irgendwie doof zu benutzen ist. Dieses Kommando reicht eigentlich alle Parameter einfach nur an scrjura weiter aber nimmt den Titel als normales Argument und erlaubt weitere Argumente im optionalen Argument zu übergeben
\newcommand{\jurparagraph}[2][]{%
\ifthenelse{\isempty{#2}}{\Paragraph{#1}}{\Paragraph{title={#2}, #1}}%
}
\newcommand{\jursubparagraph}[2][]{%
\ifthenelse{\isempty{#2}}{\SubParagraph{#1}}{\SubParagraph{title={#2}, #1}}%
}


\usepackage[unicode, pdfusetitle, pdfborder={0 0 0}, bookmarksnumbered]{hyperref}
\author{}


% Befehle für Metainformationen
\makeatletter
\newcommand*{\@stupadate}{Noch nicht beschlossen}
\newcommand*{\@publishdate}{Noch nicht veröffentlicht}
\newcommand*{\@jurchanges}{Noch nicht veröffentlicht}
\newcommand*{\stupadate}[1]{\renewcommand*{\@stupadate}{#1}}
\newcommand*{\publishdate}[1]{\renewcommand*{\@publishdate}{#1}}
\newcommand*{\jurchanges}[1]{\renewcommand*{\@jurchanges}{Eingearbeitete Änderungen:\begin{itemize}#1\end{itemize}}}


% Diese Umgebung umschließt das eigentliche Dokument. Argument ist der Titel, optional noch ein Kurztitel
\newenvironment{jurdoc}[2][]{% begin{jurdoc}
\ifthenelse{\isempty{#1}}{\def\@jurshorttitle{#2}}{\def\@jurshorttitle{#1}}

\title{Änderungen zur \@jurshorttitle}

\maketitle

\begin{center}
\begin{tabular}{ll}
Beschluss: & \@stupadate \\
Veröffentlichung: & \@publishdate \\
\end{tabular}
\end{center}

\@jurchanges

Im Folgenden wird aus Gründen der besseren Lesbarkeit ausschließlich die weibliche Form verwendet. Dabei ist jede andere Form impliziert. Die Geschlechtsdefinition obliegt jeder Person selbst.

\begin{multicols}{2}
\tableofcontents
\end{multicols}

\bigskip

\begin{multicols}{2}%
\begin{contract}%
\setcounter{Paragraph}{0}%
%
}{% end{jurdoc}
\end{contract}%
\end{multicols}%
}% Ende von jurdoc

\makeatother

% DIF Präambel für latexdiff
\RequirePackage[normalem]{ulem}
\RequirePackage{color}\definecolor{RED}{rgb}{1,0,0}\definecolor{BLUE}{rgb}{0,0,1}
\DeclareRobustCommand{\DIFaddtex}[1]{{\color{blue}\uwave{#1}}\linebreak[0]}
\DeclareRobustCommand{\DIFdeltex}[1]{{\color{red}\sout{#1}}\linebreak[0]}

\providecommand{\DIFaddbegin}{}
\providecommand{\DIFaddend}{}
\providecommand{\DIFdelbegin}{}
\providecommand{\DIFdelend}{}

\providecommand{\DIFaddFL}[1]{\DIFadd{#1}}
\providecommand{\DIFdelFL}[1]{\DIFdel{#1}}
\providecommand{\DIFaddbeginFL}{}
\providecommand{\DIFaddendFL}{}
\providecommand{\DIFdelbeginFL}{}
\providecommand{\DIFdelendFL}{}

\providecommand{\DIFadd}[1]{\texorpdfstring{\DIFaddtex{#1}}{#1}}
\providecommand{\DIFdel}[1]{\texorpdfstring{\DIFdeltex{#1}}{}}


\begin{document}


\input{document.core.diff.tex}


\end{document}

0 comments on commit 1224cd8

Please sign in to comment.