LaTeX-Vorlage für die Diplomarbeit an der FHWT

ACHTUNG: Bitte nutzt die neue Version meiner Vorlage: LaTeX-Vorlage für meine Masterarbeit an der Ohm-Hochschule Nürnberg. Mit wenigen Anpassungen sieht sie genauso aus wie die FHWT-Vorlage, enthält aber viele zusätzliche Funktionen. An der Vorlage für meine Diplomarbeit an der FHWT habe ich einige Zeit gesessen… Bis Kopf- und Fußzeilen und weitere Details wie Tabellen und Listings (meiner Meinung nach) optimal eingestellt waren, musste ich viele LaTeX-Foren und -Webseiten durchschauen. Nun denn, damit andere nicht ganz so lange brauchen, gibt’s hier auf jeden Fall meine Vorlage zum Download. Bei Einsatz von MikTeX dürften die meisten der benötigten Packages schon vorhanden sein, oder automatisch installiert werden. Bei mir gab es nur immer Probleme mit chngcntr (zum fortlaufenden Nummerieren der Fußnoten). Aber die entsprechende STY-Datei kann man einfach aus dem CTAN herunterladen und dann in das MikTeX-Verzeichnis (oder das der eingesetzten LaTeX-Distribution) kopieren. Bei mir war das %PROGRAMFILES%\MiKTeX 2.6\tex\latex\chngcntr. Meine Vorlage enthält logischerweise die Logos der FHWT. Die können aber recht einfach durch die gewünschten ausgetauscht bzw. komplett entfernt werden. Wenn dir diese Vorlage geholfen und gefallen hat, flattre sie doch einfach hier:

Eingebaute Features

  • Grundlegende Struktur der Diplomarbeit (Abstract, Einleitung, Kapitel, Eidesstattliche Erklärung etc.)
  • Zitate und Literaturverzeichnis nach DIN 1505
  • Abkürzungsverzeichnis/Glossar
  • Farbige Programmlistings
  • Einige vordefinierte Befehle (ToDo, z.B., u.a. etc.)
  • Unterstützung für lange Tabellen
  • Projekt-Datei (LPR) für LaTeXEditor

Download der LaTeX-Vorlage

Wenn du mich beim Betreiben dieser Seite und der Weiterentwicklung der Vorlage unterstützen willst, kannst du mir gerne über PayPal etwas spenden.

Spende mir einen Betrag deiner Wahl per PayPal

Vorschau der Diplomarbeit mit LaTeX

Call to undefined function wfQuery()

Eine meiner MediaWiki-Extensions hat heute nach dem Update der MediaWiki-Software auf die aktuellste Version einen nicht so netten Fehler verursacht: Fatal error: Call to undefined function wfquery() in [...]

Seit irgendeiner neuen Version gibt es die Funktion wfQuery wohl nicht mehr. Naja, ich konnte den Fehler recht einfach beheben, indem ich die entsprechende Zeile im Quelltext korrigiert habe: #$result = wfQuery($query, DB_LAST, "listUserArticlesDate"); $result = mysql_query($query);

Benutzer mit PHP gegen ein Active Directory authentifizieren

Mit den LDAP Funktionen von PHP kann man wie folgt recht einfach Benutzer gegen ein Active Directory authentifizieren (LDAP_SERVER ist durch die Adresse des AD-Servers zu ersetzen):
/** * Authenticates a user against Active Directory. * * @param string The user's Windows username. * @param string The user's Windows password. * @return bool Whether the user could be authenticated. */ public function Authenticate($username, $password) { $ds = ldap_connect(LDAP_SERVER); if ($ds) { $authenticated = false; $bind = ldap_bind($ds, $username, $password); if ($bind) { $authenticated = true; } ldap_close($ds); return $authenticated; } else { $err = 'Verbindung zum LDAP-Server nicht möglich: ' . LDAP_SERVER; throw new Exception($err); } }

Dateirechte rotierender Logfiles unter SUSE ändern

Um bestimmte Logfiles (in meinem Fall /var/log/mail auf der Weboberfläche einer Software anzeigen lassen zu können, musste ich heute sicherstellen, dass die Dateizugriffsrechte korrekt gesetzt werden, wenn die Dateien rotiert werden. Normalerweise stellt man sowas ja in der /etc/logrotate.conf bzw. der entsprechenden Datei (bei mir /etc/logrotate.d/syslog) ein, doch nicht so unter SUSE… 😉

Dort gibt es nämlich noch den Daemon syslog-ng, der seine eigene Konfiguration unter /etc/syslog-ng/syslog-ng.conf nutzt und einfach die Einstellungen von logrotate ignoriert. Letztlich konnte ich die Dateirechte mit den folgenden Schritten auf den benötigten Wert 0644 ändern:

  1. Anpassen der Rechte in /etc/syslog-ng/syslog-ng.conf: destination mail { file("/var/log/mail" perm(0644)); };
  2. Neustart von syslog-ng: syslog-ng stop syslog-ng start

XML-Verarbeitung mit Excel

Heute stand ich vor der Aufgabe, aus einer XML-Datei mit Excel (bzw. VBA) gezielt den Inhalt eines bestimmten XML-Elements auszulesen. Am einfachsten macht man sowas natürlich mit XPath, was aber von Excel per se nicht angeboten wird. Mit Excel ist zunächt einmal nur die Verarbeitung von XML im Zusammenhang mit XML-Datenquellen in Form von XML-Schemas möglich. Diese Datenquellen können auch recht einfach angelegt und die entsprechenden Daten im- und exportiert werden: ActiveWorkbook.XmlMaps("Name_der_Zuordnung")

Aber wie gesagt, wollte ich aus einer beliebigen XML-Datei bzw. einem XML-String mittels XPath Elemente auslesen. Hierzu ist zunächst ein Verweis auf die Microsoft XML-Bibliothek zu setzen, die die benötigten Funktionen bereitstellt. Hierzu einfach im VBA-Editor unter Extras -> Verweise einen Verweis auf Microsoft XML, v6.0 (oder welche Version sonst verfügbar/gewünscht ist) setzen.

Danach können XML-Daten wie folgt verarbeitet werden (in meinem Beispiel lese ich den XML-String des Schemas der verknüpften Datenquelle aus):

Sub GetXMLElementExample() Dim doc As MSXML2.DOMDocument Dim xmlLoaded As Boolean Dim kws As IXMLDOMNodeList Dim kw As IXMLDOMNode Dim kwIndex As Integer Set doc = New DOMDocument xmlLoaded = doc.loadXML(ActiveWorkbook.XmlMaps("XML_Source").Schemas.Item(0).XML) If Not xmlLoaded Then ' Fehlerbehandlung Exit Sub End If Set kws = doc.selectNodes("/xsd:schema/xsd:simpleType[@name='KWBezeichner']/xsd:restriction/xsd:enumeration/@value") For kwIndex = 0 To kws.Length - 1 Range("A" & (kwIndex + 1)).Value = kws.Item(kwIndex).Text Next kwIndex End Sub

MediaWiki-Artikel automatisch in LaTeX konvertieren

Ich würde unsere Wiki-Artikel gerne automatisiert in LaTeX-Dokumente umwandeln, wenn man mal hübsche Ausdrucke braucht. Gerade bei längeren Artikeln wäre das sehr nützlich…

Dazu habe ich die MediaWiki-Extension Wiki2LaTeX gefunden, die schon eine ganze Menge leistet und sehr variabel erweiterbar ist. Was mir aber noch gefehlt hat, ist die Verarbeitung von Bildern. Die Extension bearbeitet diese nämlich nicht.

Daher habe ich mich einmal rangesetzt und eine kleine Klasse entwickelt, die diese Aufgabe übernimmt. Habe es schon auf der Diskussionsseite der Extension veröffentlicht, aber zur Sicherheit kommt’s hier nochmal hin 😉

Image Processing

I have implemented a simple solution for processing of internal images. It searches for the filename in the images/ directory and copies it to an image directory under the tmp/tmp-123... directory. You can add my little helper class with the following steps:

First of all you need to add a few lines to function internalLinkHelper in w2lParser.php before the line // First, check for |:
if ( (stripos($link, "Bild:") === 0) or (stripos($link, "Image:") === 0) ) { $link = str_replace('Bild:', '', $link); $link = str_replace('Image:', '', $link); return "<IMAGE>" . $link . "</IMAGE>"; }
Then you need to include my class file at the top of w2lExporter.php:
require_once('w2lImages.php');
In w2lExporter.php you need to edit function w2l_unknown_action to process the images. I added the following line
$parsed = w2lImages::processImages($parsed, $mytemp);
to the sections where $action is w2lpdf or w2ltex right behind these lines:
$parsed = $parser-&gt;parse($to_parse); $mytemp = $helper-&gt;path;
And this is my little class file w2lImages.php:
define('W2L_ImageDir', "Bilder"); define('W2L_ImageTitle', "Abbildung"); class w2lImages { public static function processImages($parsed, $mytemp) { $matches = array(); $matchCount = preg_match_all('/<IMAGE>(.*)</IMAGE>/', $parsed, $matches); if ($matchCount &gt; 0) { $cntr = 0; foreach ($matches[1] as $link) { $imgTag = $matches[0][$cntr]; $links = explode("|", $link); $imgFileName = $links[0]; if (strpos($imgFileName, 'jpg') != false) { $imgFile = shell_exec("find ./images -name " . $imgFileName); if ($imgFile) { $imgFiles = explode("n", $imgFile); foreach ($imgFiles as $if) { if (strlen($if) &gt; 0 &amp;&amp; strpos($if, "thumb") == false) $imgFile = $if; } if (!file_exists($mytemp . "/" . W2L_ImageDir)) { mkdir($mytemp . "/" . W2L_ImageDir, 0777); } $copied = copy($imgFile, $mytemp . "/" . W2L_ImageDir . "/" . $imgFileName); if ($copied) { $imgCaption = (isset($links[1])) ? $links[1] : W2L_ImageTitle . " " . $cntr; $imgLatex = 'begin{figure}[htb]' . "n"; $imgLatex .= 'centering' . "n"; $imgLatex .= 'includegraphics[width=textwidth]{'. $imgFileName . '}' . "n"; $imgLatex .= 'caption{' . $imgCaption . '}' . "n"; $imgLatex .= 'label{fig:' . W2L_ImageTitle . $cntr . '}' . "n"; $imgLatex .= 'end{figure}' . "n"; $parsed = str_replace($imgTag, $imgLatex, $parsed); } else { $parsed = str_replace($imgTag, "Image could not be copied: " . $imgFileName, $parsed); } } } else { $parsed = str_replace($imgTag, "Image is not a JPG: " . $imgFileName, $parsed); } $cntr++; } return $parsed; } else { return $parsed; } } }

This will result in images included like this:
\\begin{figure}[htb] \\centering \\includegraphics[width=\\textwidth]{ImageName.jpg} \\caption{Abbildung 1} \\label{fig:Abbildung1} \\end{figure}
Any comments are welcome 😉

Bad Religion – New Maps Of Hell

Das neue Album von Bad Religion ist auf der MySpace-Seite der Band komplett als Stream verfügbar…

Und ganz in alter Tradition besteht das Album überwiegend aus schnellen, melodischen 2-Minuten-Songs. Krass, wie Greg und Brett es einfach immer noch drauf haben 😀

Im Gegensatz dazu finde ich vom neuen Strung Out-Album nur die Hälfte der Songs gut 🙁 Die haben stark nachgelassen. Aber die neue Silverstein-Scheibe ist der Hammer! Unbedingt mal reinhören 😉

MediaWiki mit LaTeX unter SUSE 10.1 (texvc)

Meine Anleitung zur Installation der LaTeX-Unterstützung im MediaWiki klappt unter SUSE 10.1 leider nicht. Das Kompilieren von texvc bricht mit folgender Meldung ab: ocamlopt -o texvc unix.cmxa util.cmx parser.cmx html.cmx mathml.cmx texutil.cmx render.cmx lexer.cmx texvc.cmx /usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/libm.so: file not recognized: File format not recognized collect2: ld returned 1 exit status Error during linking make: *** [texvc] Fehler 2
Es gibt aber eine recht einfache Lösung für dieses Problem: Die Binärdatei texvc von der MediaWiki-Seite bei Sourceforge herunterladen und in das Verzeichnis math des Wikis kopieren und evtl. ausführbar machen.

Die benötigten Pakete können mittels yast installiert werden: te_latex ocaml tetex (inkl. aller Abhängigkeiten, insb. Ghostscript).

UPDATE: Die Lösung für den obigen Kompilierungsfehler gibt es hier: ‘C compiler cannot create executables’ und ‘/lib64/libc.so.6: file not recognized’

Diplomarbeit abgegeben

Sooo… meine schlaflosen Nächte haben endlich ein Ende: Meine Diplomarbeit liegt in dreifacher Ausführung in der FHWT.

Endlich kann ich mich wieder den wichtigen Dingen im Leben widmen, wie z.B. den letzten beiden Folgen von Heroes Staffel 1 😉 Und natürlich auch der Arbeit…

Während der letzten drei Monate haben sich auch noch so einige Dinge angesammelt, die ich bald erledigen will. Mal schauen, welche davon sich für Blog-Beiträge eignen 🙂