Logo

Ralf Dragon

Inhalt


Kontakt

Valid HTML 4.01!

Unix für Fortgeschrittene

Einleitung

Viele Leute fragen immer: "kann man das in Linux auch?" und sehen Unix-Systeme als eine Alternative zu Windows, falls MS pleite geht oder wollen es mal ausprobieren, merken aber schnell, dass viele Sachen auf den ersten Blick unbequem, weil anders, sind. Dabei merken sie dann nicht, dass Unix mehr ist als nur ein Windows-Klon. Dieser kurze Artikel soll mal eine Darstellung der Möglichkeiten sein, die in Windows mit Maus und Startmenü undenkbar sind. Wer jemals mathematische Formeln in Word oder mit dem teuren Math-Type-Addon setzen wollte wird von der Einfachheit und dem guten Aussehen der Formeln begeistert sein. Ich will am Beispiel meiner Studienarbeit demonstrieren, wie praktisch Konsole und typische Unix-Werkzeuge sind, und was meine Gründe sind, von Windows fernzubleiben.

Dies soll keine Anleitung sein, es ist eine Demonstration der typischen Arbeitsweise unter Linux

Installation nützlicher Programme

Ich verwende die Distribution Debian Sarge, es ist allerdings in allen anderen Installationen ebenso einfach, die nützlichen Programmpakete zu installieren. Als nützlich empfinde ich:

  • tetex - eine LaTex-Distribution für Linux
  • aspell - ein Rechtschreibfprüfer für Textdateien
  • emacs - ein sehr flexibler Editor für Unix, leider muss man die Bedienung erst lernen
  • make - Prüfen von Abhängigkeiten bei der Erstellung von Dateien
  • svn - Versionskontrolle

Die Installation geht mit apt-get auf modernen Rechnern in ca. 1 Minute von DVD, natürlich ohne Neustart des Rechners.

LaTex

Latex ist ein Textsatzsystem. Dabei wird sowohl der Schriftsatz nach als auch vor einer veränderten Stelle optimiert. Soetwas ist in Word undenkbar. Eine pdf-Datei ist ebenfalls einfach zu erstellen. Mit BibTex beinhaltet LaTex eine sehr leistungsfähige Literaturangabenverwaltung, in der man Literaturangaben aller seiner Dokumente in einer Datei verwalten kann. Bibtex bestimmt dann, welche Literatureingaben mit welchem Stil eingebunden werden.

Nach dem Motto "wenn schon, dann richtig", ist hier eine Vorlage einer typischen Hauptdatei. In LaTex kann man praktischerweise seine Texte einfach auf mehrere Dateien aufteilen, um die Übersicht zu behalten.

\documentclass[11pt,a4paper]{scrreprt}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{multicol}
\usepackage{ae}
\usepackage{tabularx}
%\usepackage[breaklinks=true]{hyperref}
%\usepackage{listings}
%\lstset{basicstyle=\tiny, tabsize=5, breaklines=true, extendedchars=true}
\usepackage{pstricks, pst-plot}
\usepackage{graphicx}
\usepackage{xspace}
\usepackage{multirow}
\usepackage{rotating}
%\usepackage{lmodern}
\usepackage{ngerman}
\usepackage{url}
\usepackage{verbatim}
\usepackage{showlabels}
\usepackage[autooneside,automark,headsepline,nouppercase]{scrpage2}
\usepackage[nofancy]{svninfo}
%\usepackage{typearea} \areaset[1cm]{14cm}{24cm}


\newcommand\PBS[1]{\let\temp=\\#1\let\\=\temp}
\newcommand\mt[1]{\mathbf #1}
\newcommand\vc[1]{\bar #1}
\newcommand\vr[1]{\hat #1}
\newcommand\MSE{\textrm{MSE}}
\newcommand\about[1]{\textit{#1}}
\newcommand\cmatrix[1]{\begin{bmatrix}#1\end{bmatrix}}
\newcommand\eqlabel[1]{\stepcounter{equation}\tag{\theequation}\label{#1}}

\rohead{\pagemark} \cfoot[]{\svnInfoFile, version \svnInfoRevision, \svnInfoDate} \chead[]{} \lohead[]{\headmark}
\automark{section}
\pagestyle{scrheadings}
\author{Cand. El. Ralf Dragon}
\title{Appearance-Based Facial Motion Analysis for Model-Based-Coding}
\bibliographystyle{unsrt}

\hyphenation{}

\begin{document}
\svnInfo $Id: report.tex 9 2005-07-04 19:35:45Z dragon $
%LANG=en
\originalTeX
\maketitle


\include{ack}
\tableofcontents
\include{introduction}
\include{methods}
\include{evaluation}
\include{recognizing}
\include{results}
\bibliography{bibliography}
\include{appendix}
\include{formal}

\end{document}

Ich verwende die Koma-Skripte, da dadurch bereits für einen gutes Aussehen alles erledigt ist. Zusätzlich die AMS-Pakete für hübschere Formeln und die align-Umgebung. Die Kapitel sind in einzelnen Dateien ausgelagert und als besonderes Gimmick verwende ich die automatisch erstellten svn-Labels, die unten auf jeder Seite erscheinen und angeben, welcher Version diese Datei ist. Für oft verwendete Befehle macht man sich am Besten zentrale Definitionen, damit man bei Bedarf alle Stellen auf einen Schlag ändern kann.

Die Literaturangaben werden wie gesagt automatisch von Bibtex eingefügt. Ein \cite{label}-Befehl in der Tex-Datei sorgt dafür, dass an dieser Stelle eine Bezeichnung gemäß des gewünschten Zitierstils erscheint und dieselbe Angabe ins Literaturverzeichnis aufgenommen wird.

SVN

Subversion (svn) ist eines der neusten Versionierungssysteme für Linux mit einer Reihe praktischer Eigenschaften. Unter anderem lassen sich sehr schnell lokale Archive auf dem eigenen Rechner erzeugen und es können definierte Tags beim Übernehmen der Änderungen der Dateien in die Dateien geschrieben werden, so dass man innerhalb der Tex-Datei stehen hat, welche svn-Version die Datei hat. Die nutzt das svninfo-Paket aus.

Mit "svn commit" übernimmt man abends seine Änderungen, bei der man jederzeit später alle Versionsdifferenzen bequem ansehen kann.

make

Um sich nicht immer Gedanken machen zu müssen, welche Datei wann erstellt wird, ist make sehr praktisch. Ein typisches Makefile sieht folgendermaßen aus:

all : report.dvi

report.ps : report.dvi
  dvips -f < report.dvi > report.ps2
  mv -f report.ps2 report.ps

report.pdf : report.ps
  ps2pdf report.ps

clean :
  rm -f *.log *.aux *.dvi *.toc *.out *~ *.tex.bak

report.dvi : *.tex report.bbl images
  latex2 report.tex

report.bbl : bibliography.bib
  latex report
  bibtex report

images : images/*.jpg images/*.eps

aspell

Mit "aspell" kann man eine Sprachüberprüfung machen, auch in TeX-Dateien mit Befehlen. Mit einem einfachen Skript kann man die Sprache in dem zu prüfenden Dokument festlegen:

#!/bin/bash

for datei
do
  sprache=`sed -n '/%LANG=/ s/%LANG=// p' $datei`
  [[ $sprache ]] || sprache=de
  aspell -c --lang=$sprache --mode=tex $datei
done

Fazit

Meiner Meinung nach ist der unschlagbare Vorteil von Linux die dichte Verknüpfung aller Kommandozeilenprogramme. Es ist sehr einfach für Programm A die Ausgabe von B zu übernehmen, oder ein anderes Programm über die Kommandozeile zu steuern. "Normale Anwender" werden sagen, dass sie das nicht brauchen, aber sobald man beruflich effizient mit Rechnern arbeiten will, ist Linux unschlagbar. Die Lernphase ist zwar da, jedoch erspart man sich die typischen Windows-Erfahrungen mit "neu booten" und "neu installieren", die auch massig Zeit kosten.


Diese Datei wurde zuletzt am 31.07.08 bearbeitet. Du bist der 25500. Besucher. Für den Inhalt von verlinkten Seiten bin ich nicht verantwortlich.© Ralf Dragon