Posts tagged ‘LaTeX’

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

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.

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

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

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}

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

Schicke Tabellen mit TikZ

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

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

Biblatex unter MikTeX installieren

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.

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

Sicherheit von TeX-Dateien

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.

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

Klausuren erstellen mit eqexam – Teil 1

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.

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

Pocketmod mit LaTeX erstellen

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% 

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

Online-LaTeX Dienst

Bei http://www.verbosus.com kann man online LaTeX Dokumente erstellen. TODO an mich: ausprobieren 😉

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

LaTeX & Friends von Marc von Dongen

Marc van Dongen hat heute eine frühe Version seiner LaTeX-Anleitung „LaTeX & Friends“ veröffentlicht. Zu finden unter http://csweb.ucc.ie/~dongen/LaTeX-and-Friends.pdf.

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website

Subsubsubsection oder wenn die Gliederungsebenen in LaTeX nicht ausreichen

Wenn die vorgegebenen Gliederungsebenen nicht ausreichen in der verwendeten Dokumentenklasse, findet man bei http://www.asselmeyer.com/latex-gliederung-4ter-ordnung eine Lösung, die über das Umdefinieren von \paragraph funktioniert. Weil es mich schon immer mal interessiert hat, wie man eine komplett neue Ebene erstellt, hier ein Beispiel, entstanden mit viel Probieren und Fragen:

\documentclass{article}
 
\usepackage[]{blindtext}
\usepackage[]{forloop}
\usepackage{titlesec}
\usepackage[]{titletoc}
 
\titlecontents{subsubsubsection}[9em]{}{\contentslabel{3.9em}}%
{\hspace*{-1.2em}}{\titlerule*[0.675pc]{.}\contentspage}
 
\makeatletter
\newcounter{subsubsubsection}[subsubsection]
\setcounter{subsubsubsection}{1}
\setcounter{secnumdepth}{4} 
\setcounter{tocdepth}{5} 
\renewcommand{\thesubsubsubsection}{\thesubsubsection.\@arabic\c@subsubsubsection}
 
\titleclass{\subsubsubsection}{straight}[\subsubsection]
\titleformat{\subsubsubsection}{\bf}{\thetitle}{1em}{}[]						
\titlespacing{\subsubsubsection}{0pt}{3.25ex plus 1ex minus 0.2ex}{1.5ex plus 0.2ex} 
 
\makeatother
\newcounter{ct} 
 
\begin{document}
 
\tableofcontents
 
\forloop{ct}{1}{\value{ct} < 100}{%
\section{Das ist eine Section}%
\subsection{Das ist eine Sub-Section}%
\subsubsection{Das ist eine SubSub-Section}%
\blindtext%
\subsubsection{Das ist eine SubSub-Section}%
\subsubsubsection{Hier die neue SubSubSub-Section}%
\blindtext%
\subsubsubsection{Hier die neue SubSubSub-Section}%
\blindtext%
\paragraph{Das ist ein Paragraph}
\blindtext%
\subparagraph{Das ist ein Sub-Paragraph}
\blindtext%
}
\end{document}

Was mir noch nicht gefällt ist das Einrücken der \paragraphs im Inhaltsverzeichnis. Setze ich die tocdepth um eins herunter, verschwinden auch meine subsubsubsections aus dem Inhaltsverzeichnis. Dupliziere ich die \titlecontents Zeile und setze 12em statt 9em ein, verschwindet der Paragraph komplett. Merkwürdig…

Siehe das Update zu diesem Artikel unter http://uweziegenhagen.de/?p=1074

Uwe

Hat Dir dieser Beitrag geholfen und möchtest Du Dich dafür bedanken? Dann unterstütze doch vielleicht die Dingfabrik Köln e.V. mit einem kleinen Beitrag. Details zur Bezahlung findest Du unter Spenden für die Dingfabrik.

More Posts - Website