PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : alltt will nicht gefügig sein



syzygy
20-02-2010, 18:21
Hi all,

Ich versuche gerade, mittels des alltt-Packerls Sourcecode darzustellen. Wenn ich die Umgebung "direkt" aufrufe, funktioniert alles; wenn ich sie allerdings in einem selbstdefinierten Befehl verwende, wird das Argument gedruckt wie normaler Text (keine Einrückung, kein Zeilenumbruch, allerdings Darstellung in TT-Font).

Inzwischen hab ich so ziemlich alles ausprobiert, was mir eingefallen ist, und das Ergebnis ist verblüffend stabil: Innerhalb eines \newcommand() hat alltt keinen Effekt.

Mein Minimalbeispiel sieht so aus:


%**********************************************

\documentclass[a4paper, oneside, 11pt]{scrbook}

\usepackage{alltt}

\newcommand{\Yab}[1]{\begin{alltt} #1 \end{alltt}}

%**********************************************

\begin{document}

% Versuch 1:
\begin{alltt} This line is indented
This one is not. \end{alltt}

% Versuch 2:
\Yab{ This line is indented
This one is not.}

\end{document}



Bei Versuch 1 wird die erste Zeile eingerückt und ein Zeilenumbruch findet statt, bei Versuch 2 nicht.

a) Kann man einem mäßig erfahrenen LaTeXer klar machen, warum das so ist? (Aka "Was mach ich falsch?")

b) Gibt's einen Workaround dafür? (Aka "Wie mach ich's richtig?")

(MikTeX 2.8, pdflatex, Win XP.)

Danke im Voraus,

Elmar/syzygy

u_fischer
20-02-2010, 18:33
alltt ist ein Verbatim-Umgebung, die catcodes ändert. Du kannst sie nicht im Argument anderer Befehle verwenden oder so einfach damit eigene Umgebungen definieren.

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=verbwithin

Schau dir ev. auch listings an. Das bietet auch Befehle zu Definition eigener Umgebungen.

syzygy
22-02-2010, 09:37
Ah, "It's not a bug, it's a feature."

Danke für die Information, hat mir sehr geholfen! Ich werd mir dann nen Workaround basteln...

syzygy