PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : list-Umgebung definieren



cantoni
26-04-2013, 17:08
Hallo,

ich versuche mit selbst definierten sty-Dateien eine list-Umgebung zu erzeugen. Leider bekomme ich vom Texniccenter unter Windows stets die Fehlermeldung:

! missing \endcsname inserted.
<to be read again>
\global
1.4 \begin{Zeile 3}

und:

! Extra \else.
\@ifundefined ... \expandafter \@firstoftwo \else
\expandafter \@secondoftwo...
1.4 \begin{zeilen}{Zeile 3}

So sehen meine Codes aus (alle Dateien sind im gleichen Ordner):

1. zeilenart.sty:


\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{marvosym}
\DeclareInputText{128}{\EUR}
\usepackage{array}
\usepackage{ifthen, calc}
\usepackage{pifont, mathptmx, charter, courier}
\usepackage[scaled]{helvet}
\usepackage{parskip}
\tolerance=2000
\setlength{\emergencystretch}{20pt}


2. zeilen.sty:


\newenvironment{zeilen}[1]{\begin{\list}{}%
{\renewcommand{\makelabel}[1]{\sffamily##1:}%
\settowidth{\labelwidth}{\sffamily#1:}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\setlength{\itemsep}{0mm}%
}
}{
\end{list}
}%


3. test1.tex:


\documentclass[a4paper, 12pt]{article}
\usepackage{zeilenart, zeilen}
\begin{document}
\begin{zeilen}{Zeile 3}
\item[Zeile 1] Text1 Text1 Text1
\item[Zeile 2] Text2 Text2 Text2
\item[Zeile 3] Text3 Text3 Text3
\end{zeilen}
\end{document}

ctansearch
26-04-2013, 17:32
\begin{\list}{}%

der backslash bei list ist das problem,weglassen, dann gehts.

cantoni
26-04-2013, 17:58
alles klar - vielen Dank :)

klops
26-04-2013, 20:30
BTW: In sty-Dateien sollte man \RequirePackage statt \usepackage verwenden (siehe clsguide (http://www.ctan.org/pkg/clsguide)). Außerdem ist es keine gute Idee die Eingabecodierung in einem Paket fest einzustellen. Schließlich ist es nicht die Eigenschaft eines Pakets nur mit einer bestimmten Eingabecodierung umgehen zu können, sondern eine Frage der Editoreinstellungen für das jeweilige Dokument. Also gehört das ins Dokument oder man sollte im Paket selbst Optionen zum Zwecke der Umschaltung vorsehen.

Desweiteren sind Pakete, die fest fontenc verwenden, insofern ungünstig, als das bei Verwendung von XeLaTeX oder LuaLaTeX nicht sehr günstig ist. Bei diesen ist es besser mit fontspec zu arbeiten. Also sollte man auch das nach Möglichkeit dem Dokument überlassen.

Und letztlich ist auch die feste Vorgabe einer Sprache nicht ideal. Gründe dafür muss ich wohl nicht extra nennen. Meist ist es sogar günstiger die Sprache bei \documentclass anzugeben, also global zu setzen, damit andere Pakete auch etwas davon mit bekommen.

cantoni
27-04-2013, 11:27
Hi,

danke für die Hinweise. Ich habe meinen Code mal angepasst. Was mich jetzt noch bei der Ausgabe stört ist folgendes:

Zwischen "Zeile" und "1:" sowie "Zeile" und "2:" entsteht eine große Lücke.

Wie kann ich diese vermeiden? Ich möchte also "Zeile x:" quasi linksbündig und nicht im blocksatz haben.

zeilen.sty:


\newenvironment{zeilen}[1]{
\begin{list}{}{
\renewcommand{\makelabel}[1]{##1:}
\settowidth{\labelwidth}{#1:}
\setlength{\leftmargin}{\labelwidth+\labelsep}
\setlength{\itemsep}{0mm}
}
}{
\end{list}
}


test.tex:


\documentclass[a4paper, 12pt]{article}
\usepackage{zeilenart, zeilen}
\begin{document}
\begin{zeilen}{Zeile 3-10}
\item[Zeile 1] Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1 Text1
\item[Zeile 2] Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2 Text2
\item[Zeile 3-10] Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3 Text3
\end{zeilen}
\end{document}


Viele Grüße

ctansearch
27-04-2013, 11:37
\renewcommand{\makelabel}[1]{##1:\hfill}

Nur an Deinem Beispiel getestet.

cantoni
27-04-2013, 11:41
Hi, super - funktioniert!

Viele Grüße