Mit ‘LaTeX’ getaggte Artikel

LaTeX-Vorlagen für Diplom-, Master- und Doktorarbeiten

Sonntag, 06. Juni 2010

Hier eine Übersicht von LaTeX-Vorlagen für Diplom-, Master- und Doktorarbeiten mit LaTeX.

  • Übersicht über das Thema auf CTAN CTAN
  • Vorlage der Humboldt-Universiät, Link: HU Berlin, Direktlink
  • Classicthesis CTAN
  • York-Thesis CTAN
  • Diplomarbeit mit LaTeX CTAN
  • Bowling Green State University BSGU
  • Vorlage von Matthias Pospiech Homepage
  • University of Wollongong (wo immer das sein mag…) CTAN
  • Vorlage von Schnorchelfabrik.de Link
  • Vorlage von der ETH Zürich Link
  • Vorlage von der ECE IllinoisLink
  • Übersicht über verschiedene Arbeiten
    http://www.thesis-template.de/

Formulare entwerfen mit LaTeX

Sonntag, 06. Juni 2010

Hier ein kleines Beispiel für das Formular Paket.

\documentclass{scrartcl}
\usepackage{formular}
 
\newFRMfield{Name}{65mm}[Name]
\newFRMfield{Datum}{65mm}[Ort, Datum]
 
\setFRMfontfamily{cmr}
\setFRMfontshape{it}
\setFRMfontsize{12}
\setFRMruledstyle
\newFRMfield{Unterschrift}{70mm}[Unterschrift]
 
\begin{document}
 
\useFRMfield{Name}[Max Mustermann]
\useFRMfield{Datum}[Berlin, den 06.06.2010]\vspace{3cm}
 
\useFRMfield{Unterschrift}[]
 
\end{document}

LaTeX-Formulare mit eforms erstellen

Montag, 24. Mai 2010

Hier ein kurzes Beispiel für das eforms-Paket:

\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{hyperref}
\usepackage[pdftex]{eforms}
\begin{document}
\begin{Form}
 
\begin{tabular}{rl}
	\checkBox{a}{12pt}{12pt}{a} & Hallo Welt \\
\end{tabular}
 
\end{Form}
\end{document}

Tastaturkürzel für TeX mit ac’tivaid – Teil 2

Samstag, 22. Mai 2010

Für die Definition von Datumswerten bringt ac’tivaid bereits ein vordefiniertes morgen# mit, das das morgige Datum ausgibt. Ausgehend davon habe ich mir auf ü#, üü#, ä#, ää# und ö# und öö# verschiedene Daten gelegt. So gibt ä# das aktuelle Datum in der Form TT.MM.JJJJ aus, ää# in der ISO-Notation JJJJMMTT.

   Morgen = %A_Now%
   EnvAdd, Morgen, 0, Days
   FormatTime, Morgen, %Morgen%, dd.MM.yyyy
   Send, %Morgen%

Über EnvAdd, Morgen, 0, Days lässt sich steuern, wieviele Tage hinzuaddiert oder abgezogen werden sollen. (Für das aktuelle Datum kann das sicher entfallen, der leichteren Wartbarkeit wegen habe ich es aber stehen lassen).

Mehr Informationen zur Formatierung von Datumswerten findet man unter http://de.autohotkey.com/docs/commands/FormatTime.htm.

Tastaturkürzel für TeX mit ac’tivaid – Teil 1

Sonntag, 09. Mai 2010

Mit der kleinen aber genialen ac’tivaid Software und ihrer Hotstrings-Erweiterung lassen sich verschiedenste Tastaturkürzel definieren, die in allen Windows-Programmen funktionieren. Ich nutze die Software vor allem, um mir TeX-Kürzel zu definieren, die die Arbeit mit TeXniccenter vereinfachen.

Installation

  1. Von http://www.heise.de/ct/projekte/Windows-weitergedacht-ac-tivAid-284115.html herunterladen und installieren.
  2. In den Optionen unter Erweiterungen die Hotstrings-Extension aktivieren

Dann kann man sich aufmachen, entsprechende Kürzel zu definieren. Folgender Schnipsel (abgelegt unter “doc#” mit gewählter Option “direkt ersetzen”) schafft zum Beispiel ein minimales LaTeX-Dokument:

\documentclass{{}scrartcl{}}
\begin{{}document{}}

Geschweifte Klammern müssen auch geklammert werden, da Hotstrings diesen eine besondere Bedeutung zuweist. In geschweiften Klammern lassen sich nämlich Hotstrings-Befehle ablegen, die den Cursor steuern oder Text markieren. So setzt folgender Schnipsel ein \end{} und bewegt den Cursor um eine Stelle nach links, damit der Nutzer direkt den Namen der Umgebung eingeben kann.

\end{{}{}}{LEFT}

Eine Erweiterung dessen ist die zusätzliche Angabe, wieviele Schritte nach links gegangen werden soll, folgender Schnipsel setzt eine braune quote-Umgebung

\begin{{}quote{}}\textcolor{{}brown{}}{{}{}}\end{{}quote{}}{LEFT 12}

Markieren lassen sich Texte auch sehr einfach, so setzt folgende Zeile “Sehr geehrte Damen und Herren” und markiert Damen und Herren, damit dies sofort überschrieben werden kann, falls notwendig.

Sehr geehrte Damen und Herren{Left 17}+{Right 17}

Schicke Tabellen mit TikZ

Dienstag, 27. April 2010

Hier ein schönes Beispiel, wie man sehr bunte Tabellen mit LaTeX und TikZ erstellen kann: http://texblog.net/latex-archive/graphics/tikz-table/

Biblatex unter MikTeX installieren

Samstag, 24. April 2010

Da MikTeX noch kein BibLaTeX mitbringt, muss es manuell installiert werden. Hier eine kurze Anleitung, wie es bei mir funktioniert hat.

  1. Ein localtexmf Verzeichnis auf der Festplatte anlegen (falls man es eh nicht schon einmal getan hat), bei mir c:\localtexmf
  2. Die biblatex.zip Datei enthält einen Ordner mit drei Unterordnern (bibtex, doc, latex). In c:\localtexmf legt man jetzt folgende Ordner an: bibtex, doc\biblatex, und tex\latex.
  3. Jetzt kopiert man einfach die entsprechenden Unterordner aus der Zip-Datei in die Unterordner des localtexmf
  4. In den MikTeX Einstellungen noch das neue Root hinzufügen (MikTeX durchsucht das automatisch, wenn ich es richtig sehe, ein extra “Refresh Filename DB” kann wohl unterbleiben)
  5. Die Beispiele aus dem examples Ordner in doc sollten jetzt funktionieren.

Sicherheit von TeX-Dateien

Samstag, 24. April 2010

Ausgehend von einem MikTeX Bug hat Chr. Schenk auf einen Vortrag hingewiesen, in dem einige Sicherheitlücken von TeX-Dateien gezeigt werden:

http://www.usenix.org/event/leet10/tech/techAbstracts.html#Checkoway.

We show that malicious TEX, BIBTEX, and METAPOST files can lead to arbitrary code execution, viral infection, denial of service, and data exfiltration, through the file I/O capabilities exposed by TEX’s Turing-complete macro language. This calls into doubt the conventional wisdom view that text-only data formats that do not access the network are likely safe. We build a TEX virus that spreads between documents on the MiKTEX distribution onWindows XP; we demonstrate data exfiltration attacks on web-based LATEX previewer services.

Nachtrag: Hier ist der Link zum entsprechenden Paper: http://cseweb.ucsd.edu/~hovav/dist/texhack.pdf.

Klausuren erstellen mit eqexam – Teil 1

Sonntag, 18. April 2010

Mit dem eqexam Paket von D.P. Story, dem Entwickler von AcroTeX, kann man recht einfach Klausuren und Tests in LaTeX entwerfen. Hier mal ein Beispiel, entstanden aus einem Artikel in der DTK, Ausgabe 1/2010, und freundlicher Hilfe aus d.c.t.t:

\documentclass{article}
\usepackage{eqexam}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
 
\begin{exam}[Part I.]{Part1}
\begin{problem}
Hallo Welt!
\begin{solution}
Hello World!
\end{solution}
\end{problem}
\end{exam}
\end{document}

Ausgehend von diesem Beispiel werd ich mich mal daran machen, a) einen meiner alten Klausurtexte aus Humboldt-Zeiten umzusetzen b) die Möglichkeiten abschätzen, ob sich auch benutzer-spezifische Klausuren generieren lassen.

Pocketmod mit LaTeX erstellen

Donnerstag, 15. April 2010

Momentan bin ich dabei, mit LaTeX ein Pocketmod zu erstellen, einen Papier-Organizer der durch geschicktes Schneiden und Falten einer DIN A4 Seite entsteht: http://repocketmod.com/.

Da die Ausrichtung und Anordung der acht Seiten auf dem Blatt sehr individuell ist, verspricht dies recht interessant zu werden. Hier mein bisheriges Ergebnis:

Das Dokument zur Ausgabe eines 8-Seiten PDFs auf einer Seite:

\documentclass{scrartcl}
\usepackage[screen,paperheight=21cm,paperwidth=29.7cm,
 left=0mm,right=0mm,top=0mm,bottom=0mm]{geometry}
\usepackage[]{pdfpages}
\begin{document}
 
\includepdf[pages=-,nup=4x2,scale=1,frame=true]%
{8seitentext2.pdf}
 
\end{document}

Ein erstes Beispiel (ohne rotierte Seiten) für den umzuarrangierenden Text:

\documentclass{scrartcl}
\usepackage{forloop}
\usepackage{graphicx}
\pagestyle{empty}
\newcounter{ct} 
\begin{document}
 
\forloop{ct}{1}{\value{ct} < 9}{%
\begin{center}
\scalebox{80}{\thepage}
\end{center}
\clearpage
}
\end{document}

Der Text mit richtiger Ausrichtung und Anordnung der Seiten:

\documentclass{scrartcl}
\usepackage[]{graphicx}
\pagestyle{empty}
\newcounter{ct} 
\begin{document}
\begin{center}
\scalebox{40}{6}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{7}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{8}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{1}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{5}}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{4}}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{3}}
\end{center}
\clearpage
\begin{center}
\scalebox{40}{\rotatebox{180}{2}}
\end{center}
\clearpage
\end{document}

Da mich meine LaTeX-Kenntnisse verlassen, hab ich mal in de.comp.text.tex gepostet.

Nachtrag: Der Hinweis aus d.c.t.t auf pdfjamund pdfjam-pocketmod,ein in pdfjam verfügbares Skript hat mich an pdftk erinnert, das auch unter Windows läuft. Hier die Lösung:

% Zerlegen der PDF Datei
pdftk 8seitentext.pdf burst

% Rotieren der vier Seiten um 180 Grad
pdftk pg_0005.pdf cat 1-endS output out5.pdf

pdftk pg_0004.pdf cat 1-endS output out4.pdf

pdftk pg_0003.pdf cat 1-endS output out3.pdf

pdftk pg_0002.pdf cat 1-endS output out2.pdf

% Mergen in der richtigen Reihenfolge
pdftk pg_0006.pdf pg_0007.pdf pg_0008.pdf pg_0001.pdf out5.pdf ou
t4.pdf out3.pdf out2.pdf cat output fertig.pdf

Dieses Dokument wird dann über das pdfpages Paket zu 8 auf 1 Seite eingebunden

\documentclass{scrartcl}
\usepackage[screen,paperheight=21cm,paperwidth=29.7cm, left=0mm,right=0mm,top=0mm,bottom=0mm]{geometry}
\usepackage[]{pdfpages}
\begin{document}
 
\includepdf[pages=-,nup=4x2,scale=1,frame=true]{fertig.pdf}
 
\end{document}

Eine aufwändigere, aber elegantere Lösung, die innerhalb eines LaTeX-Laufs erledigt werden kann, ist die folgende. Sie nutzt das pgfpagesPaket von Till Tantau, das in den Ausgabeprozess der einzelnen Seiten eingreift:

\documentclass[21pt]{scrartcl}
\usepackage[]{forloop}
\usepackage[]{blindtext}
\setlength{\parindent}{0pt}
\usepackage[]{lmodern}
\newcounter{ct} 
\usepackage{pgfpages}
 
  \edef\pgfpageoptionheight{\the\paperwidth} % landscaped by default
  \edef\pgfpageoptionwidth{\the\paperheight}
  \def\pgfpageoptionborder{0pt}
  \def\pgfpageoptionfirstshipout{1}
 
  \pgfpagesphysicalpageoptions
  {%
    logical pages=8,%
    physical height=\pgfpageoptionheight,%
    physical width=\pgfpageoptionwidth,%
    current logical shipout=\pgfpageoptionfirstshipout%
  }
 
    \pgfpageslogicalpageoptions{1}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.875\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{2}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.875\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{3}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.625\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{4}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%      
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.375\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{5}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      rotation=180,%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.125\pgfphysicalwidth}{.25\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{6}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.125\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
 
    \pgfpageslogicalpageoptions{7}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.375\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{8}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.25\pgfphysicalwidth,%
      border code=\pgfusepath{stroke},%
      resized height=0.5\pgfphysicalheight,%
      center=\pgfpoint{.625\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
 
 
\begin{document}
 
\forloop{ct}{1}{\value{ct} < 9}{%
\blindtext
\clearpage
 
}
\end{document}

Nachtrag 2: Meine pgfpages-Version weist einen Fehler beim Rotieren von Seiten auf, der durch folgenden Patch der pgfpages.sty behoben werden kann.

        % alt, geht nicht
        %\expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname\relax%
         % \pgfscope%
        %\else%
         % \pgflowlevel{\pgftransformrotate{\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname}}%
        %\fi%

        \pgfscope% geht
				\expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname\relax%
        	\else%
          \pgflowlevel{\pgftransformrotate{\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname}}%
        \fi%