Author Archive

MS Excel: Werte auf Basis einer Werteliste extrahieren

Hier ein Beispiel, wie man anhand einer einfachen Liste und einer recht komplexen Formel Werte aus einer Spalte ziehen kann.

Gegeben ist eine Liste von Firmennamen, die als letzten Bestandteil (getrennt vom Namen durch ein Leerzeichen) die Rechtsform enthält. Nur durch das Hinzufügen einer neuen Rechtsform zur Liste sollen alle entsprechenden Rechtsformen extrahiert werden.

excel_20131013

Excel_lookup

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

Creating LaTeX environments with Autohotkey the easy way

Here’s a neat little script (bound to Alt-e) which requests an environment name from the user. If the entered string has e.g. the form "itemize3" it creates

\begin{itemize}
\item
\item 
\item 
end{itemize} 

and puts the cursor directly after the first \item.

If the entered string includes no number at the end (e.g. „itemize“), just the environment is created.

!e::
InputBox, UserEnv, Environment, Please enter an environment!, , 240, 120
If ErrorLevel
	return
Else 
if( RegExMatch(UserEnv, "(.*?)(\d+)$", splitted) ) {
	Send \begin{{}%splitted1%{}}{Enter}
		Loop %splitted2% {
			Send \item {Enter}
		}
	Send \end{{}%splitted1%{}}{Up}
	count2 := splitted2 - 1 
	Loop %count2% {
		Send {Up}
	}			
} 
Else 
	Send \begin{{}%UserEnv%{}}{Enter 2}\end{{}%UserEnv%{}}{Up}
return

Thx to MCL for providing help with the regexp!

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

Creating Autohotkey dropdown menus to select a LaTeX itemize list

Today I struggled to create a dropdown that would work in all Windows editors and would allow me to select a certain element from a dropdown list and insert this into the current (TeXworks) document. After googling for hours I have come up with the following:

ddl

!y::
Gui, 1:Destroy
Gui, Add, Text,, Please define the environment:
Gui, Add, DDL, vList, itemize||enumerate|description
Gui, Add, Button, Default, Input
Gui, Show
return

ButtonInput:
Gui, Submit, NoHide
Gui, 1:Destroy
Send %List%
return

What does it do? It creates a dropdown with three items and (after the selection) inserts this value into the last document. I want to use this mechanism to further automate my TeXing process.

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

Deleting complete lines in TeXworks / ganze Zeilen löschen in TeXworks

What I really like in Emacs is the Ctrl+k key combination to delete the rest of the line. As I wanted this feature in TeXworks as well, where I usually set the cursor to the beginning of the line anyway I decided to implement a little Autohotkey script to do this. As I do not want this script to overwrite Emacs‘ own Ctrl-k I check if the window is an instance of the ‚QWidget‘ class (check with Autohotkey’s WindowSpy).

#IfWinActive ahk_class QWidget
^k::
Send {home}
Send {Shift}+{End}
Send {Del 2}
return

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

Equipping TeXworks with a ‚duplicate this line‘ feature / Zeilen duplizieren in TeXworks

I really like TeXworks but miss some of the functions other editors provide. Notepad++ for example has a nice „duplicate this line“ feature available via Ctrl+D that I’d like to use in TeXworks as well. Thanks to Autohotkey this is quite simple (also thanks to the posting from www.autohotkey.com/board/topic/19002-duplicate-line/)

^d::
SetKeyDelay, -1
Temp := ClipboardAll
Clipboard = 
Send {home}
Send {Shift}+{End}^c
ClipWait, 2
Send {End}{Enter}
SendRaw %Clipboard%
Clipboard := Temp
return

PS: I guess TeXworks can do this via the built-in scripting but I never played with that. If one of my readers has a proposal, please send it to me.

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

Fibonacci Zahlen mit Python erzeugen – I

Hier ein kleines und einfaches Beispiel, wie man mit Python rekursiv Fibonacci-Zahlen (Wikipedia-Artikel zum Thema) ausgeben kann.

Die Bildungsvorschrift ist ganz einfach: Für n=0 ist die Fibonacci Zahl 0, für n=1 1. Für alle weiteren positiven ganzzahligen Werte gilt, dass die entsprechende Fibonacci-Zahl als Summe der beiden vorhergehenden Zahlen definiert ist, d.h. Fibo(n) = Fibo(n-1) + Fibo(n-2).

def calcFibo(n):
	if n==0:
		return 0
	if n==1:
		return 1
	else:
		return calcFibo(n-1)+calcFibo(n-2)
 
print(calcFibo(25))

In folgenden Artikeln dazu werde ich entsprechende Unittests vorstellen, die dieses Beispiel erweitern.

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

Rolling dice with Python / Würfeln mit Python

Als kleines Projekt, um etwas mehr in Python einzusteigen, habe ich mir eine Simulation von „Mensch ärgere dich nicht“ überlegt.

Dazu hier ein kleines Skript, das würfelt und dabei auch beachtet, dass bei einer ‚6‘ mehrfach gewürfelt wird. Eine Test-Funktion ist auch dabei, die relativen Häufigkeiten stimmen mit meinen gedachten Werten überein, es scheint also zu funktionieren.

# for the random selection
from random import choice
# to create the sorted dictionary
import collections
 
 
# if throwDice() is called without param, assume that summed equals 0 
# used when player rolls a '6'
def throwDice(*args):
	if not args: 
		summed = 0
	else:
		summed = args[0]
	# roll the dice
	x = choice(range(1,7))
	# if '6' was rolled, we roll again until x <> 6 is rolled
	if x == 6:
		return throwDice(summed+6)	
	else:
	# if no '6' was rolled in *this* run, we just return the aggregated number	
		return summed+x
 
# little test function to get the absolute frequencies
def TestDice(n):
	# create a dictionary
	d = {}
	for x in range(0, n):
		# roll the dice
		wurf = throwDice()	
 
		# if key is found, just increase its frequency by 1 
		if wurf in d:
			d.update({wurf:d[wurf]+1})
		else:
			# else create new key with initiL frequency 1 
			d.update({wurf:1})
	od = collections.OrderedDict(sorted(d.items()))
	for k, v in od.iteritems(): 
		print k, v
 
TestDice(6000)

English summary: some code to roll dice with Python. The frequencies are consistent with the expected values so it seems to be correct.

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 prüfe ich eine Mietwohnung?

In den letzten Jahren habe ich einige Mietwohnungen gesehen oder bewohnt. Hier ein paar Punkte aus meinem Erfahrungsschatz, die man aus meiner Sicht vor der Unterschrift des Mietvertrags beachten sollte. Die Liste ist nicht vollständig und wird in unregelmäßigen Abständen aktualisiert und erweitert.

  • Stimmt die tatsächliche Größe der Wohnung mit den Angaben des Vermieters überein? Am einfachsten prüft man das mit einem Laser-Entfernungsmessgerät wie dem von Bosch. Innerhalb weniger Minuten kann man eine Wohnung damit ausmessen, das Gerät kann auch Flächen und Volumen bestimmen. Eine Abweichung von bis zu 10% rechtfertigt wohl keine Mietminderung. Was überhaupt in die Fläche der Wohnung einzurechnen ist, ist auch nicht eindeutig.
  • Wie groß ist der Keller? Ist er trocken? (Berechtigt auch bei Alt-Bauten zur Mietminderung). Sind die Türen ausreichend gesichert? Bietet er genug Platz für Fahrräder, falls es keinen Fahrradkeller gibt oder dieser unbenutzbar ist?
  • Gibt es einen Fahrradkeller? Möchte man dort sein gegebenenfalls hochwertiges (teures) Rad einstellen?
  • Schlüssel Gibt es eine zentrale Schließanlage? Wenn ja, dann sollte man auch eine Schlüsselverlust-Versicherung abschließen, der Austausch aller Schlüssel kann leicht einige mehrere tausend Euro kosten.
  • Stichwort Tiere: Dürfen Tiere gehalten werden, wenn ja welche? Hält der Nachbar über, neben oder unter euch 50 Katzen in seiner Küche? Gibt es Anhaltspunkte für Insektenbefall?
  • Internet und Kabelfernsehen? Gibt es schnelles Internet mit mehr als 10 MBit? Liegt ein Kabel-Anschluss (für Multi-Kabel) in der Wohnung? Besteht die Möglichkeit, eine SAT-Schüssel anzubauen?
  • Wie ist das geografische Umfeld? Wo ist der nächste Bäcker, wo der nächste Supermarkt? Wo befindet sich der nächste U-Bahnhof, wo die nächste Bushaltestelle? Wichtig finde persönlich ich auch eine gewisse Redundanz beim Nahverkehr. Was nutzt mir die Bus-Haltestelle vor der Tür, wenn aufgrund von Bauarbeiten ein Jahr lang kein Bus fährt…
  • Wie ist das soziale Umfeld? Wohnt im Stockwerk oben drüber eine Großfamilie, die jeden Tag 2 bis 3 Stunden Holzschuhtanz übt? Kommt der bildungsferne, drogensüchtige Nachbar regelmäßig morgens um 2 Uhr heim und schreit das ganze Haus zusammen?
  • Falls man Kinder hat? Wo ist der nächste Spielplatz, in welchem Zustand ist dieser? Muss man sein Kind an einer bestimmten Schule anmelden (Schulsprengel)? Wie ist der Schulweg?
  • Gibt es einen extra Keller für Waschmaschine und Trockner? Finde ich persönlich sinnvoll, denn a) kann man jederzeit Wäsche waschen ohne einen Nachbarn zu stören und die Waschmaschine nimmt keinen Platz in der Wohnung weg. Wo kann man die Wäsche trocknen, in einem geeigneten Keller oder im Hof, den mehrere Taubenfamilien bewohnen?
  • Steckdosen Wieviele Steckdosen gibt es pro Zimmer, liegen diese strategisch günstig oder eher da, wo die Schrankwand aufstellen wird? Für die Ausstattung von Wohnungen mit Steckdosen gibt es übrigens Richtlinien
  • Fliesen Sind alle Fliesen in Ordnung? Wenn nein, sollten diese Fliesen bei der Übergabe angesprochen und im Übergabeprotokoll vermerkt werden.
  • Heizkörper Sind alle Heizkörperventile leichtgängig? Können die Heizkörper leicht entlüftet werden?
  • Fenster Sind alle Fenster leicht zu schließen und zu schließen? Wie ist der Zustand der Dichtungsgummis? Zieht es durch die Fenster? (Kann mit einer Kerze geprüft werden). Wenn es Rolladen gibt: Sind sie leicht zu bedienen, wie ist der Zustand der Zugbänder?
  • Schimmel Wie ist der Zustand der Silikonabdichtungen in Bad und Küche? Sind sie schimmelig? Gibt es Wände, die feucht wirken? Kann man das Bad ordentlich lüften?
  • Wasserhähne Wie ist der Zustand der Wasserhähne? Tropfen sie, lassen sich sich leicht bedienen? Es empfiehlt sich – gerade bei Altbauten- mal nach der Befestigung der Wasserhähne unter dem Waschbecken zu schauen. Selbst wenn der Wasserhahn noch einen ordentlichen Eindruck macht, kann die Befestigung komplett verrottet sein.
  • Lampenaufhängungen Wie ist der Zustand der Deckenhaken für Lampen?
  • Funktionieren alle Lichtschalter?
  • Lassen sich alle Türen leicht öffnen und schließen? Gibt es Türen, die auf dem Boden schleifen?
  • Wo sind die Zähler für Gas, Wasser und Elektro? Hat jede Wohnung eigene Zähler oder wird der Gesamtverbrauch auf alle Miete anhand der Wohnungsfläche umgelegt (sehr schlecht, K.O. Kriterium)?

Wenn bei den oben genannten Punkten keine K.O. Kriterien auftauchen und man den Mietvertrag abschließt, sollten im Übergabeprotokoll folgende Dinge vermerkt sein:

  • Datum der Wohnungsübergabe
  • alle Zählernummern und aktueller Zählerstand, am besten auch diese auch per Foto dokumentieren.
  • Die Bestätigung, dass der Mieter alle Schlüssel übergeben bekommt. Ein Vermieter hat kein Recht, einen Schlüssel zu einzubehalten. Es ist jedoch sehr ratsam, dem Vermieter den Aufbewahrungsort eines Ersatzschlüssels schriftlich mitzuteilen.
  • Sämtliche Mängel, die bei der Übergabe bekannt waren bzw. festgestellt wurden. Am besten diese auch per Foto dokumentieren, die man dann auch ausbelichten lassen und wiederauffindbar abgelegen sollte. Idealerweise hält man auch fest, bis wann die Mängel beseitigt werden.

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

Using boolean switches in LaTeX

Here’s a small example how to typeset conditional text. There may be other solutions available (see etoolbox or use LuaTeX), however I like ifthen.sty

\documentclass{minimal}
 
\usepackage{ifthen}
\newboolean{somevariable}
\setboolean{somevariable}{false}
 
\begin{document}
 
\ifthenelse{\boolean{somevariable}}{Text if somevariable is true.}{Text if somevariable is false.}
 
\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

Managing multi-language LaTeX documents

I’d like to maintain one of my presentation in German as well as in English without having to deal with multiple documents. As I use babel anyway, I of course want to use the language defined for it.

I asked in TSX and egreg came up with the perfect solution, Heiko Oberdiek’s iflang package.

\documentclass[ngerman]{scrartcl}
\usepackage{babel,iflang}
\newcommand{\tr}[2]{\IfLanguageName{ngerman}{#1}{#2}}
 
\begin{document}
 
\tr{Deutscher Text}{English text}
 
\end{document}

This solution works well, in the case of five or ten languages I’d probably use a template engine.

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