Seite 1 von 1

enumitem: Parameter per command übergeben schlägt fehl.

Verfasst: Mo 2. Mär 2015, 12:40
von godi
Hallo,

ich möchte gerne dem Befehl \setlist aus dem Paket enumitem die Parameter per command übergeben. Dies schlägt jedoch fehl.

Bsp:
\documentclass[]{scrartcl}

\usepackage{enumitem}

% Einstellungen für itemize
% Siehe Handbuch enumitem: https://www.ctan.org/pkg/enumitem
\newcommand*{\settings}{%
	  topsep = 0pt%
	, itemsep = 0pt%
	, parsep = 0pt%
	, partopsep = 0pt%
}

\setlist[itemize]{\settings}

\begin{document}
Hier kommt ein Itemize:
\begin{itemize}
	\item Item 1
	\item Item 2
	\item Item 3
	\item Item 4
\end{itemize}
Ende des ersten Itemize.
\end{document}
Grund warum ich dies so machen will:
Ich möchte alle Einstellungen in ein eigene tex Datei auslagern.
Im Dokument selbst sollte dann nur mehr der \setlist Befehl stehen. Somit kann ich auch mehrere Einstellungen für die Itemize Umgebung speichern.

godi

Verfasst: Mo 2. Mär 2015, 13:59
von u_fischer
Nein, das geht nicht. Die Schlüssel-Wert-Liste kannst du nicht in einem Befehl verstecken.

Der Standardweg für sowas ist es, neue Schlüssel oder style zu definieren, die mehrere "primitive" Schlüssel zusammenfassen (z.B. wie das tikz macht). Mit enumitem ist das was mühseliger, weil es eine eigene Variante von keyval-Code benutzt. Man musste erstmal in den Code schauen, ob man dort einen "style"-Key aufpropfen kann.

Du kannst aber auch sowas machen:
\documentclass[]{scrartcl}

\usepackage{enumitem}

% Einstellungen für itemize
% Siehe Handbuch enumitem: https://www.ctan.org/pkg/enumitem
\newcommand*{\settings}{%
     topsep = 0pt%
   , itemsep = 0pt%
   , parsep = 0pt%
   , partopsep = 0pt%
}

 
\newcommand\mysetlist[2][]{%
 \edef\next{\noexpand\setlist[#1]{\unexpanded\expandafter{#2}}}%
 \next}
 
\mysetlist[itemize]{\settings}

\begin{document}
Hier kommt ein Itemize:
\begin{itemize}
   \item Item 1
   \item Item 2
   \item Item 3
   \item Item 4
\end{itemize}
Ende des ersten Itemize.
\end{document}

Verfasst: Di 3. Mär 2015, 07:32
von godi
Danke für deine hilfreichen Antworten!

Funktioniert super. :)

Manchmal sind so Lösungen ganz schön kompliziert... ;)