Author Archive

LaTeX: Quellcode-Änderungen hervorheben (highlighten) – Teil 2

LaTeXdiff ist ein Perl-Skript, das die Unterschiede von zwei TeX-Dateien grafisch darstellen kann. Unter Windows wird bei TeXlive eine entsprechende exe mitgeliefert, sodass das Skript auch ohne installiertes Perl funktioniert. Hier ein Beispiel:

Dokument1.tex

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
 
\begin{document}
 
Hallo Welt!
 
\end{document}

Dokument2.tex

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
 
\begin{document}
 
Hallo, Welt! Foobar!
 
\end{document}

latexdiff Dokument1.tex Dokument2.tex > result.tex

result.tex

%DIF 1c1
%DIF < \documentclass{scrartcl}
%DIF -------
\documentclass{article} %DIF > 
%DIF -------
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
%DIF PREAMBLE EXTENSION ADDED BY LATEXDIFF
%DIF UNDERLINE PREAMBLE %DIF PREAMBLE
\RequirePackage[normalem]{ulem} %DIF PREAMBLE
\RequirePackage{color}\definecolor{RED}{rgb}{1,0,0}\definecolor{BLUE}{rgb}{0,0,1} %DIF PREAMBLE
\providecommand{\DIFadd}[1]{{\protect\color{blue}\uwave{#1}}} %DIF PREAMBLE
\providecommand{\DIFdel}[1]{{\protect\color{red}\sout{#1}}}                      %DIF PREAMBLE
%DIF SAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddbegin}{} %DIF PREAMBLE
\providecommand{\DIFaddend}{} %DIF PREAMBLE
\providecommand{\DIFdelbegin}{} %DIF PREAMBLE
\providecommand{\DIFdelend}{} %DIF PREAMBLE
%DIF FLOATSAFE PREAMBLE %DIF PREAMBLE
\providecommand{\DIFaddFL}[1]{\DIFadd{#1}} %DIF PREAMBLE
\providecommand{\DIFdelFL}[1]{\DIFdel{#1}} %DIF PREAMBLE
\providecommand{\DIFaddbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFaddendFL}{} %DIF PREAMBLE
\providecommand{\DIFdelbeginFL}{} %DIF PREAMBLE
\providecommand{\DIFdelendFL}{} %DIF PREAMBLE
%DIF END PREAMBLE EXTENSION ADDED BY LATEXDIFF
 
\begin{document}
 
Hallo\DIFdelbegin \DIFdel{Welt}\DIFdelend \DIFaddbegin \DIFadd{, Welt! Foobar}\DIFaddend !
 
 
 
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

LaTeX: Quellcode-Änderungen hervorheben (highlighten) – Teil 1

Hier ein kurzes Beispiel, wie man mit LaTeX Änderungen an einem Dokument hervorheben kann:

\documentclass{scrartcl}
\usepackage[draft]{changes}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\definechangesauthor[name={Uwe Ziegenhagen}, color=red]{UZ}
 
\begin{document}
 
Cras \added[UZ]{viverra} metus \replaced[UZ]{vehicula}{rhoncus} sem. Nulla et lectus vestibulum
urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer
sapien est, iaculis in, pretium quis, viverra ac, nunc. \deleted{Präsent }Praesent eget sem vel leo ultrices
bibendum. Aenean \deleted[UZ]{faucibus}. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac,
nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue
eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
 
\listofchanges
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Cleveref, varioref und hyperref

In einem früheren Blogpost hatte ich schon darüber geschrieben, wie man mit prettyref und varioref Referenzen verwalten kann.

Die Kombination cleveref, varioref und hyperref bietet auch interessante Automatisierungsfunktionen. cleveref erkennt automatisch, auf was sich ein Label bezieht: auf eine Section, ein Bild oder eine Table. Entsprechende Befehle des varioref Pakets werden umdefiniert. Wichtig ist nur die Reihenfolge, in der die Pakete geladen werden müssen:

  1. varioref
  2. hyperref
  3. cleveref
\documentclass[ngerman]{scrartcl}
\usepackage[]{babel}
\usepackage[]{varioref}
\usepackage{hyperref}
\usepackage[]{cleveref}
\begin{document}
 
\section{Erster Abschnitt}\label{sec}
 
\begin{figure}
\rule{\textwidth}{1cm}
\caption{bild}\label{bild}
\end{figure}
 
Siehe \vref{sec}, siehe \vref{bild}
 
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Tracklog Köln => Neuss

Hier ein Tracklog meiner Radtour nach Neuss.

Koeln_nach_Neuss (KML)


Mit dem Rad von Köln nach Neuss auf einer größeren Karte anzeigen

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Von Posaunen und Trompeten

Eine Mathematik-Klausur an der Uni Köln hat einigen Staub aufgewirbelt (http://www.spiegel.de/unispiegel/studium/0,1518,827375,00.html), die Aufgaben sind im Spiegel-Artikel verlinkt.

Aufgabe 3 fand ich interessant: Die Anzahl von Posaunen und Trompeten so zu maximieren, dass das Budget von 10’000 Euro eingehalten wird.

Auch ohne groß herum zu rechnen, lässt sich dies leicht in Excel lösen. Man bestimmt einfach die Kosten der verschiedenen Kombinationen aus $x$ Trompeten und $y$ Posaunen und schaut, welche Kombination am nächsten an den 10’000 Euro dran ist. Mit wenigen Zeilen VBA-Code und bedingter Formatierung lässt sich auch leicht eine Planungshilfe gestalten, die bei unterschiedlichen Preisen und anpassbarem Budget die optimale Lösung ausspuckt.

Klausur.xlsm

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Tracklog Bonn => Köln

Hier ein Tracklog meiner Radtour von Bonn nach Köln.

Bonn_nach_Koeln (KML)


Mit dem Rad von Bonn nach Köln auf einer größeren Karte anzeigen

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

R unter Ubuntu aktualisieren

Hier eine kurze Zusammenfassung (ausführlich unter http://cran.r-project.org/bin/linux/ubuntu/), wie man unter Ubuntu seine R Installation aktualisiert:

  1. Import des PGP Keys via gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9
  2. Bereitstellung für apt über gpg -a --export E084DAB9 | sudo apt-key add -
  3. Einfügen des CRAN Mirrors in die /etc/apt/sources.list: deb http://ftp5.gwdg.de/pub/misc/cran/bin/linux/ubuntu oneiric/
  4. sudo apt-get update
  5. sudo apt-get upgrade

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Wie man einen eigenen TeX Live Mirror aufsetzt

Wenn man zuhause mehr als einen (oder zwei, drei, vier) Rechner zu stehen hat, auf denen immer die neueste Version von TeX Live laufen soll, so empfiehlt es sich, einen eigenen Mirror-Server aufzusetzen. So muss man die Updates nur einmal aus dem Internet ziehen, alle Updates erfolgen dann über das lokale Netz zuhause.

Die Lösung fand sich bei stackexchange: http://tex.stackexchange.com/questions/22362/how-to-mirror-texlive.

Da ich zuhause ein Synology NAS im 24/7 Betrieb habe, bot es sich an, auch das TeX Live Mirroring darüber zu machen.

Der folgende Befehl holt die TeX Live Daten und speichert sie in einem über den NAS-Webserver zugänglichen Verzeichnis.

rsync -a --delete rsync://rsync.dante.ctan.org/CTAN/systems/texlive/tlnet/ /web/texlivemirror

Um das Mirroring zu automatisieren, habe ich den Befehl in einer ausführbaren Skript-Datei abgelegt und einen entsprechenden Cron-Job dafür angelegt. Details zum Aufsetzen des Cron-Jobs findet man unter http://www.synology-wiki.de/index.php/Cron.

Zu guter Letzt muss man nur noch den verschiedenen TeX Live-Installationen klar machen, dass sie ab sofort ihre Updates vom NAS holen sollen. Dazu nutzt man den tlmgr Befehl (siehe http://www.tug.org/texlive/doc/tlmgr.html):

tlmgr option repository http://<mein.webserver>/texlivemirror

oder bei der Installation zum Beispiel:

install-tl-windows.bat --location http://192.168.0.10/texlivemirror/

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Excel: Prüfen, ob eine Zelle eine Formel enthält

Excel stellt leider keine Funktion bereit, um das Vorhandensein einer Formel in einer Zelle zu prüfen. Behelfen kann man sich aber mit einer selbst gestrickten Excel-Funktion (gefunden bei http://www.vbaexpress.com/kb/getarticle.php?kb_id=324):

Option Explicit 
 
Function ISFORMULA(cel As Range) As Boolean 
    ISFORMULA = cel.HasFormula 
End Function

isFormel.xlsm

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

LaTeX Befehle parsen mit PyParsing – Teil 1

Hier ein erster Versuch, LaTeX Befehle mit PyParsing zu parsen:

from pyparsing import *
 
# grammar definition
commandname = Word(alphas)
leftbrace = Literal("{")
rightbrace = Literal("}")
parameter = Word(alphas)
command = Literal("\\") + commandname + leftbrace + parameter + rightbrace
 
# input string
mystring = "\section{hello}"
 
# parse input string
print mystring, "->", command.parseString(mystring)

Beispiel:

\section{hello} -> [‚\\‘, ’section‘, ‚{‚, ‚hello‘, ‚}‘]

Als nächstes werde ich die Grammatik so erweitern, dass auch optionale Parameter geparst werden können. Eine Erweiterung wird dann das Parsing von Key=Value Parametern.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website