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

Schriftbild, Absätze und Auflistungen einstellen


godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

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

Beitrag 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

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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}

godi
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 75
Registriert: Mi 11. Feb 2015, 13:49

Beitrag von godi »

Danke für deine hilfreichen Antworten!

Funktioniert super. :)

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

Antworten