Checking links with Python in TeX documents

As every year the German documentation for the TeX Live distribution is on my agenda. To check the more than 100 weblinks in the document I wrote a small Python script which does the job fairly well.

import re
import urllib2
 
filehandle = open("texlive-de-new.tex")
text = filehandle.read()
filehandle.close()
 
# regexp from http://www.noah.org/wiki/RegEx_Python
m = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', text)
 
i = 0
for item in m:
        i=i+1
        print i, '\t', item, '\t',
        try:
            response = urllib2.urlopen(item)
        except urllib2.HTTPError, e:
                    print e.code
        except urllib2.URLError, u:
                    print u.args
        print "\n"

Dateien verschieben mit Powershell

Ausgangssituation: Diverse Unterverzeichnisse mit Dateien, die alle ins darüberliegende Verzeichnis verschoben werden sollen. Mit dem Windows Explorer dauert es Stunden, selbst mit Total Commander dauert es zu lange. Gut, dass ein paar Zeilen Powershell das erledigen:

$path =  "D:\files\"
cd $path
 
$files = gci | ? {$_.PSisContainer -eq $true} 
 
foreach ($i in $files){
	Move-Item $i\*.* $path
}

Erste Schritte mit der Roland iModela

Vor kurzem hat die Dingfabrik in Köln eine Roland iModela vom Hersteller zur Verfügung gestellt bekommen. Da mich CAD/CAM generell interessiert (weil ich mit Säge und Feile eher untalentiert bin), habe ich das Ding gleich mal an meinen Rechner angestöpselt und im Selbstversuch einen Stempel gefräst.

Der Anschluss an den Rechner war nicht so einfach, denn die iModela musste erst einmal gefunden werden. Ich hatte ja ein Gerät von der Größe eines Röhrenfernsehers erwartet, jedoch entsprechen die Maße der iModela eher denen eines Toasters, die bearbeitbare Fläche beträgt 86mm x 55mm.

Roland iModela

Das Gerät eignet sich auch nicht unbedingt dazu, aus Hartmetallen Formen zu fräsen, seine Spezialität sind eher weiche Materialien wie Stempelgummi und weiche Hölzer wie Balsaholz. Der eingesetzte Motor erinnert mich sehr an Motoren von Quadcoptern und hat mit 50 Stunden eine vergleichsweise begrenzte Lebensdauer. Roland liefert aber einen Ersatzmotor mit, über den Handel lassen sich vielleicht auch hochwertigere Motoren erwerben.

Das nächste Bild zeigt die Maschine mal aufgeklappt, das Aufklappen selbst ist innerhalb von Sekunden erledigt. Die linke und rechte Seite lässt sich einfach umklappen, danach lassen sich die hellgrünen Klammern lösen.

IMG_6368

Die Software-Installation war recht unspektakulär: Nach der Treiber-Installation empfiehlt es sich, zumindest iModela Creator und iModela Controller zu installieren. Ersteres ist ein einfaches grafisches CAD Programm, letzteres steuert die Maschine selbst an. Für Vorschau-Ansichten eines Datensatzes liefert Roland noch Virtual Modela mit (letztes Update im Jahr 2004, Look & Feel eher altbacken), in meinem ersten Versuchen konnte ich aber eher drauf verzichten.

In meinem Versuch habe ich einen Buchstaben in ein Stück Stempelgummi gefräst. Ein einfaches ‘+’ Zeichen von knapp 7×7 Millimetern brauchte ungefähr fünf Minuten, durch geeignete Parameterwahl bei Vortrieb und Drehgeschwindigkeit des Fräsers lassen sich hier aber sicher noch Verbesserungen vornehmen.

IMG_6389

IMG_6399

Fazit meiner ersten Schritte: Der Einstieg in die Arbeit mit der iModela fällt wirklich leicht. Mit der passabel gestalteten Software kann man innerhalb von wenigen Minuten erste Erfolge feiern. In Sachen Arbeitsfläche und Materialauswahl erfüllt die iModela sicherlich keine professionellen Anforderungen, im Hobby-Bereich ist sie aber durchaus einsetzbar. Ich denke, in den nächsten Wochen und Monaten werde ich noch einige Stempel damit fräsen. :-)

Vorlage für Jour Fixe Protokolle / Template for Jour Fixe protocols

Ausgehend von Vorlage für Gesprächsprotokolle hat mir Stefan Wollny, ein Leser des Blogs, eine schicke Vorlage für Jour Fixe Protokolle geschickt.

Hier die Vorlage_Jour-Fix-Protokoll PDF-Datei, hier der Quellcode:

%% basierend auf http://uweziegenhagen.de/?p=1109
%% gefunden am 15.03.2013
%% 
%%
\PassOptionsToPackage{table}{xcolor}	% Notwendig, damit die Zeilen-Colorierung funktioniert
\documentclass[]{scrartcl}
\usepackage{palatino,url}
\usepackage[T1]{fontenc}		% Vor {inputenc}! http://uweziegenhagen.de/?p=1644
\usepackage[latin1]{inputenc}		% in Uwes Vorgabe noch anders herum
\usepackage[german,ngerman]{babel}	% Alte Hunde lernen keine neuen Tricks
\usepackage[a4paper,top=30mm,left=25mm,right=20mm,bottom=23mm,headsep=12mm,footskip=12mm]{geometry}
\usepackage{textcomp,eurosym}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{booktabs,paralist}
\usepackage{url}
\usepackage{pgfgantt}
\usepackage{xcolor,soul}
%% Hervorhebungen	\hl{text}
%% Farbe Hervorhebungen \sethlcolor{yellow}  oder {red} oder {green}
%% Unterstreichungen	\ul{text}
%% Farbe Unterstreichungen \setulcolor{yellow}  oder {red} oder {green}
%% Durchstreichungen	\st{text}
%% Farbe Durchstreichungen \setstcolor{yellow}  oder {red} oder {green}
%% Kapitälchen		\caps{text}
%% Letterspacing	\so{text}
\definecolor{LinkColor}{rgb}{0,0,0.5}
%
\definecolor{cell}{RGB}{220,230,240}
\definecolor{line}{RGB}{80,130,190}
\renewcommand{\arraystretch}{1.25}
%
\usepackage[]{changebar}
\newcommand{\cb}[1]{\begin{changebar}#1\end{changebar}}
%
\usepackage[flushmargin]{footmisc}
\renewcommand{\thempfootnote}{\alph{mpfootnote}}
\usepackage{scrpage2,lastpage}
\clearscrheadfoot
%
% nur bei gesetzem twoside
%\lehead{lehead} \cehead{cehead}
%\rehead{rehead} \lefoot{lefoot}
%\cefoot{cefoot} \refoot{refoot}
%
%\lohead{lohead} \cohead{cohead}
%\rohead{rohead} \lofoot{lofoot}
%\cofoot{cofoot}
%
\lohead{Flying Circus \\ Finanzen}
\rohead{\includegraphics[scale=0.15]{puf200X172}}
\lofoot{\today}
\rofoot{Seite \thepage~ von \pageref{LastPage}}
\pagestyle{scrheadings}
%
\usepackage[%
	pdftitle   ={Gespraechsprotokoll},%
	pdfauthor  ={Duck, Donald},%
	pdfcreator ={pdflatex with hyperref},%
	pdfsubject ={Projekt X},%
	pdfkeywords={Gold, Geldspeicher, Inventur}]{hyperref}
\hypersetup{%
	colorlinks =true,%
	linkcolor  =LinkColor,%
	citecolor  =LinkColor,%
	filecolor  =Linkcolor,%
	menucolor  =LinkColor,%
	urlcolor   =LinkColor,%
	breaklinks =true}
%
%
%
\begin{document}
%
\begin{flushleft}
 {\LARGE \textbf{Jour-Fix Protokoll}}
\end{flushleft}
%
\begin{tabular}{rp{5.4cm}lp{5.4cm}} \toprule
 Datum & \textbf{13.03.2013} Rev. 2 & & \\
 Protokollant & Duck, Donald & & \\
 Anwesend & Duck, Dagobert (Chair)	& Abwesend & Gans, Gustav (Luckiness) \\
  & Duck, Daisy (COO) 		&	   & Goofy (Fatality) \\
  & Duck, Tick (Clever-1)			&	& Pluto (Security) \\ 
  & Duck, Trick (Clever-2)		&	& \\ 
  & Duck, Track (Clever-3)		&	& \\ \bottomrule
\end{tabular}
%
%\arrayrulecolor{line}
%\rowcolors{2}{cell}{white}
\begin{small}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{flushleft}
\begin{longtable}{p{0.2cm}p{0.3cm}p{9.9cm}p{2.4cm}l} \toprule
lfd. Nr.	& Art\footnotemark[1] %\footnote{I: Information | A: Aufgabe | B: Beschluß | N: Nachtrag}	
	& Thema
	& Verantwortlich/ Referent
	& Termin	\\ \midrule \endfirsthead
\hline
lfd. Nr.	& Art
	& Thema
	& Verantwortlich/ Referent
	& Termin	\\ \midrule \endhead
%
 
\rowcolor{blue!10}
\textbf{1.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Reinigung Geldspeicher}			
	& \textbf{Duck, Donald}	
	& \\
	& I	
	& Die Reinigung erwies sich als schwieriger, als zunächst gedacht. Durch wiederholte Besuche der Gebrüder \caps{Panzerknacker} wurde die zwischenzeitliche Ordnung derart durcheinander gebracht, daß zunächst das Eintreffen der Entenhausener Polizei abgewartet werden mußte, um selbige wieder herzustellen.
	& Duck, Donald	\\ \cline{2-5}
	& A	
	& Bericht im nächsten JF	
	& Duck, Donald	
	& 2.04.2013 \\ \cline{2-5}
	& A	
	& Bericht im übernächsten JF	
	& Duck, Donald	
	& 22.04.2013 \\ \cline{2-5}
	& N	
	& Im Nachgang zur Besprechnung wurde bekannt, daß die Hexe \begin{changebar}\caps{Gaukeley, Gundel}\end{changebar} aus der Haft auf dem Brocken entlassen werden mußte. Sie hatte den Gefängisdirektor in eine Maus verwandelt, was das Interesse der Gefängniskatze wecke. Erst nachdem er versprach, Frau \caps{Gaukeley} zu entlassen, wurde er wieder zurückverwandelt.
	& Duck, Donald	
	&  \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{2.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Goldmachmaschine}
	& \textbf{Dr. Düsentrieb, Daniel}
	& \\
	& I
	& \caps{Dr. Düsentrieb} wird erst wieder in der KW 15 in Entenhausen sein.
	& Duck, Donald
	& \vspace*{0.2cm} \\
%
 
\rowcolor{blue!10}
\textbf{3.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Lotterie}			
	& \textbf{Gans, Gustav}	
	& \\
	& 
I	
	& Herr Gans läß sich entschuldigen: Nach dem letzten ungeplanten Lotteriegewinn hat er einen kurzfristig anberaumten Termin mit seinem Steuerberater, Herrn Hartz, damit die Finanzierung von \textit{La Dolce Vita} nicht durch eine unangekündigte  Buchprüfung der Wirtschaftsprüfungsgesellschaft \caps{Troika \& Co.} oder durch eine \textit{Bäng-Bäng}-Affäre gestört wird.
	& Duck, Donald	
	& \\ \cline{2-5}
	& A	
	& Bericht zum Sachstand der Ausbeutung im nächsten JF	
	& Gans, Gustav	
	& 2.04.2013 \vspace*{0.2cm} \\
%
 
\rowcolor{blue!10}
\textbf{4.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Steueroptimierung}
	& \textbf{Duck, Daisy}
	& \\
	& I
	& Bei der zypriotischen Regierung wurde angefragt, was 'Steuern' sind. Solange die Antwort auf sich warten läßt, wurde zusammen mit der Spielbank 'Silberjunge Schwab' ein innovatives, die Sinne vernebelndes Finanzprodukt aufgelegt, daß die Beteiligten aufgrund ihrer internationalen Verflechtungen unzweifelhaft als systemrelevant qualifiziert, da die Anleger in jedem Fall alles verlieren werden.
	& Duck, Daisy	
	& \\ \cline{2-5}
	& A	
	& Bericht zum Sachstand der \euro -Gefälligkeiten
	& Gans, Gustav	
	& 2.04.2013 \vspace*{0.2cm} \\
%
\newpage
\rowcolor{blue!10}
\textbf{5.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Auskunftsersuche IBF}			
	& \textbf{Duck, Trick}	
	& \\
	&  \vspace*{0.2cm}
I	
	& Das Fachkonzept wurde mit der Anwaltskanzlei \caps{Nostra Casa \& Cie.} ausfühlich besprochen. Alle offenen Punkte wurden ungeklärt in die Kanalisation gespült. Eine Gefahr für die Kanalisation bestand zu seinem Zeitpunkt; marginale Kollateralschäden bei Menschen, Kindern und Frauen (!) sind eingepreist. Die Risiken konnten auf die UE geswappt werden.
	& Duck, Trick	
	&	\\ \cline{2-5}
	& A	
	& Bericht im nächsten JF	
	& Duck, Track	
	& 2.04.2013 \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{6.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Liquidität}
	& \textbf{Duck, Dagobert}
	& \\
	& I
	& Herr Duck informierte über die aktuelle Goldbad-Temperatur. Das Thermometer wies in letzter Zeit eine auffällige Korrelation zum Aktienkurs der 'Germanian Bunk Ltd.`` auf, die auch der Entenhausener Handelszeitung nicht entgangen war. \caps{Don Corleone} wurde informiert.
	& Duck, Dagobert
	& \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{7.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Fort Knox - Goldschatz}			
	& \textbf{Duck, Dagobert}	
	& \\
	&  \vspace*{0.2cm}
I	
	& Die Analyse der Sicherheitsvorkehrungen ist noch nicht abgeschlossen. \caps{Kater Karlo} verweigert leider noch immer die Kooperation, so daß ein persönlicher Besuch vor Ort wohl unumgänglich sein wird.
	&	\\ \cline{2-5}
	& A	
	& Bericht im nächsten JF	
	& Duck, Donald	
	& 2.04.2013 \vspace*{0.2cm} \\
%
%\newpage
\rowcolor{blue!10}
\textbf{8.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Hr. M. aus N.}
	& \textbf{Destructivus, Tullius}
	& \\
	& I
	& Hr. D. läßt ausrichten, daß es ihn nie gegeben habe und daß er jeden anderweitigen Hinweis unerbittlich bis zum groß-imperialen Zwischenhändler verfolgen wird, sollte jemand etwas anderes behaupten. Da der 'ehrenwerte Richter' \textit{leider} drei Kinder hat, erübrigt sich ein Erscheinen vor dem hohen Gerüst und ein neuer Termin.
	& Duck, Donald
	& \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{9.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Las Vegas}			
	& \textbf{Duck, Dagobert}	
	& \\
	&  \vspace*{0.2cm}
I	
	& Der Betriebsauflug nach L.V. war ein voller Erfolg: Anders als beim letzt-jährigen Ausflug nach Hawaii störte diesmal nicht die Werbung für das Softeis 'Magnam'.  Als \textit{dernier-crie} erwies sich vielmehr 'Hokus-Pokus-13', was einigen Geschäftspartnern gleichwohl sauer aufstieß \ldots
	& Duck, track
	&	\\ \cline{2-5}
	& A	
	& Bullizei-Bericht im nächsten JF	
	& Duck, Donald	
	& 2.04.2013 \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{10.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{'Noch ein Bit?' - Liquidität der Falschen}
	& \textbf{Dr. Peulaner}
	& \\
	& I
	& \caps{Dr. Peulaner} wird erst wieder in der KW 15 nüchtern sein.
	& Duck, Donald
	& \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{11.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Termine}
	&
	& \\
	& B
	& Nächster JF
	& alle
	& 2.04.2013 \\
	& B
	& Nächster Workshop ``Tresore öffnen - 101''
	& PK1/Pk2 & 4.04.2013 \\
	& I
	& Nächste Sitzung des Lenkungsausschusses
	&
	& 5.04.2013 \\ \bottomrule 
\end{longtable}
\footnotetext[1]{I: Information | A: Aufgabe | B: Beschluß | N: Nachtrag}
\end{flushleft}
\end{small}
%
\end{document}

Slides for my ‘Sphinx’ presentation in Giessen

Here are the slides for my presentation on ‘Sphinx’, the Python-based publishing tool.

UweZiegenhagen-Sphinx (PDF)

HTML Export example

Slides for the German LaTeX Introductory Course in Gießen

Here are the slides I used in my LaTeX introductory course at University of Gießen.

Intro-Current-Complete (PDF)

Additional materials:

Slides for my “Adventures in LaTeX Land” presentation, Gießen 2013

These are the German slides for my presentation at the 2013 Gießen German TeX Users Conference. It shows examples for the following packages.

PDF, German

  • arara
  • censor
  • menukeys
  • ocgx
  • progressbar
  • pgfgantt
  • romanbar
  • parnotes
  • smartdiagram
  • tikzsymbols

Neue Version der Herleitung der Linearen Regression verfügbar

Nach Hinweisen auf einen kleinen Fehler (danke Axel!) in meiner Herleitung der Gleichung für die lineare Regression habe eben eine neue Version hochgeladen: linreg.pdf.

Zusätzlich zur Fehlerbeseitigung habe ich mehr erläuternde Kommentare und Formeln hinzugefügt. Selbstredend wurde das Dokument in LaTeX gesetzt; es ist auch ein schönes Beispiel, was mit LaTeX & Co geht:

- die Grafik wurde in Metapost erstellt (heute würde ich sicher TikZ nehmen)
- alle Quelldateien sind im PDF-Container hinterlegt und verlinkt.

Wenn ich mal passenden R-Code finde (Hinweise werden gern entgegen genommen) werde ich noch mehr Beispiele für die Auswirkungen von Anstieg und Achsenabschnitt der Regressionsgeraden auf die Quadratsumme einfügen.

BibLaTeX & biber workflow example

Here a simple example to illustrate the workflow with biblatex and biber (on TeX Live 2012). It also prints a second bibliography just for the books (one in this case)

literaturvz.bib contains:

@Article{lit1,
author = {Nabuurs, S.B. and Spronk, C.A.E.M.},
title = {Biomolecular Structure Determination by NMR Spectroscopy Allows for Major Errors},
year ={2006},
volume = {2},
journal = {PLoS Comput. Biology}}

@Article{lit2,
author = {Exner, T. E. and Mezey, P. G.},
title = {The Field-Adapted ADMA Approach: Introducing Point Charges},
year ={2004},
volume ={108},
journal = {J. Phys. Chem. A}}

@Article{lit3,
author = {Exner, T. E. and Mezey, P. G.},
title = {Ab Initio Quality Properties for Macromolecules Using the ADMA Approach},
year ={2003},
volume ={24},
journal = {J. Comp. Chem.}}

@Article{lit4,
author = {Barua, B. and Lin, J.C. and Williams, V.D.},
title = {The Trp-cage: optimizing the stability of a globular miniprotein},
year ={2008},
volume = {21},
journal = {Protein Engineering, Design \& Selection}}

@Article{weinhold,
author = {F. Weinhold and C.R. Landis},
title = {Natural Bond Orbitals and Extensions of Localized Bonding Concept},
year ={2001},
journal = {Chemistry in Europe: Research and Practice in Europe},
volume = {2},
number = {2},
pages = {91-104}}

@Manual{weinhold1,
author = {F. Weinhold},
title ={NBO 5.0 Program Manual; Natural Bond Orbital Analysis Programs}}

@Book{test1,
type = book,
author = {some author},
year = {2012},
title ={Some arbitrary book title},
publisher = {Some publisher}
}

@Misc{strassner,
author = {Th. Stra{\ss}ner},
year = {2007},
howpublished = {http://www.chm.tu-dresden.de/oc3/documents/oc3/populationsanalyse.pdf}}

@Booklet{gaussian03,
author = {{\AE}. Frisch and M.J. Frisch and G.W. Trucks},
title = {\textit{Gaussian 03}, User`s Reference},
year = {2003}}

@Manual{gaussian,
author = {M.J. Frisch and G.W. Trucks and H.B. Schlegel and G.E. Scuseria and M.A. Robb and J.R. Cheeseman and J.A. Montgomery Jr. and T. Vreven and K.N. Kudin and J.C. Burant and J.M. Millam and S.S. Iyengar and J. Tomasi and V. Barone and B. Mennucci and M. Cossi and G. Scalmani and N. Rega and G.A. Petersson and H. Nakatsuji and M. Hada and M. Ehara and K. Toyota and R. Fukuda and J. Hasegawa and M. Ishida and T. Nakajima and Y. Honda and O. Kitao and H. Nakai and M. Klene and X. Li and J.E. Knox and H.P. Hratchian and J.B. Cross and C. Adamo and J. Jaramillo and R. Gomperts and R.E. Stratmann and O. Yazyev and A.J. Austin and R. Cammi and C. Pomelli and J.W. Ochterski and P.Y. Ayala and K. Morokuma and G.A. Voth and P. Salvador and J.J. Dannenberg and V.G. Zakrzewski and S. Dapprich and A.D. Daniels and M.C. Strain and O. Farkas and D.K. Malick and A.D. Rabuck and K. Raghavachari and J.B. Foresman and J.V. Ortiz and Q. Cui and A.G. Baboul and S. Clifford and J. Cioslowski and B.B. Stefanov and G. Liu and A. Liashenko and P. Piskorz and I. Komaromi and R.L. Martin and D.J. Fox and T. Keith and M.A. Al-Laham and C.Y. Peng and A. Nanayakkara and M. Challacombe and P.M.W. Gill and B. Johnson and W. Chen and M.W. Wong and C. Gonzalez and J.A. Pople},
title ={Gaussian 03, Revison C.02},
year = {Gaussian, Inc., Wallingford CT, USA, 2004}}

The TeX document (filename is biblatex-test-biber.tex) contains:

\documentclass[11pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[german]{babel}

%\usepackage[style=authortitle-dw,backend=bibtex8]{biblatex}%authortitle-icomp
\usepackage[style=authortitle-icomp,backend=biber]{biblatex}%
\usepackage[babel,german=quotes]{csquotes}%guillemets

\addbibresource{literaturvz.bib}

\begin{document}

\cite{weinhold}

\clearpage

\parencite{weinhold}

\clearpage

\footcite[12]{weinhold}

\clearpage

\smartcite[12, smart]{weinhold}

\clearpage

\citeauthor{weinhold}

\clearpage

\citetitle{weinhold}

\clearpage

\citeyear{weinhold}

\nocite{*}

\printbibliography 

\printbibliography[title={Book references},type=book]

\end{document}

To create the final PDF run:

  1. pdflatex biblatex-test-biber
  2. biber biblatex-test-biber
  3. pdflatex biblatex-test-biber

Modifying selected text with Autohotkey

Autohotkey is an amazing tool to define hotkeys such as s# that get automatically expanded to \section{}. On earlier occasions I had already written some blog posts on this topic. Today (encouraged by a question on tex.stackexchange) I managed to compile a short script, which takes some selected text, inserts a specific command and pastes the selected text again. Quite helpful if one want’s to define a shortcut to e.g. make the selected text bold.

F4::
Send ^c
Send \command{{}{}}{LEFT}
Send ^v
Return