Ich möchte eine mehrspaltige Nomenklaturliste drucken, die aus mehreren Gruppen besteht. Im Moment verwende ich den Gruppierungsansatz, der imHandbuchund mit einem Code-Schnipsel vonhttp://www.latex-community.org/forum/viewtopic.php?f=51&t=7892, es funktioniert im Prinzip.
Die Liste erstreckt sich jedoch über die gesamte erste Spalte der Seite und wird dann in der zweiten Spalte fortgesetzt, unabhängig von den Gruppen. Mir wäre es lieber, wenn jede Gruppe ihre eigene multicols
Umgebung hätte:
Was ich habe:
Was ich möchte:
Gibt es eine Möglichkeit, dies mit dem nomencl
Paket zu erreichen?
\documentclass{article}
\usepackage{nomencl}
\usepackage{ifthen}
\usepackage{multicol}
\makenomenclature
\renewcommand{\nomgroup}[1]{%
\ifthenelse{\equal{#1}{A}}{%
\medskip\item[\large\textbf{\textsf{Latin}}]\medskip%
}{%
\ifthenelse{\equal{#1}{B}}{%
\medskip\item[\large\textbf{\textsf{Greek}}]\medskip}{%
\medskip}
}
}
\renewcommand*\nompreamble{\begin{multicols}{2}}
\renewcommand*\nompostamble{\end{multicols}}
\begin{document}
\nomenclature[A]{a}{1}%
\nomenclature[A]{b}{2}%
\nomenclature[A]{c}{3}%
\nomenclature[A]{d}{4}%
\nomenclature[A]{e}{5}%
\nomenclature[A]{f}{6}%
\nomenclature[A]{g}{7}%
\nomenclature[A]{h}{8}%
\nomenclature[A]{i}{9}%
\nomenclature[A]{j}{10}%
\nomenclature[A]{k}{11}%
\nomenclature[A]{l}{12}%
\nomenclature[B]{$\alpha$}{1}%
\nomenclature[B]{$\beta$}{2}%
\nomenclature[B]{$\gamma$}{3}%
\printnomenclature
\end{document}
Antwort1
Ich bin nicht sicher, ob das die beste Lösung ist, aber trotzdem ...
% arara: pdflatex
% arara: nomencl
% arara: pdflatex
\documentclass{article}
\usepackage{nomencl}
\usepackage{multicol}
\makenomenclature
\makeatletter
\newif\if@nomlist
\newcommand*\nomlist{%
\@nomlisttrue
\list{}{%
\labelwidth\nom@tempdim
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\itemsep\nomitemsep
\let\makelabel\nomlabel}}
\renewcommand*\thenomenclature{%
\@ifundefined{chapter}%
{\section*{\nomname}\if@intoc\addcontentsline{toc}{section}{\nomname}\fi}%
{\chapter*{\nomname}\if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi}%
\nompreamble
\@nomlistfalse
}
\renewcommand\nomgroup[1]{%
\if@nomlist\endlist\end{multicols}\fi
\ifx#1A\relax
\def\nomgroupname{Latin}%
\else
\ifx#1B\relax
\def\nomgroupname{Greek}%
\else
\def\nomgroupname{Other}%
\fi
\fi
\begin{multicols}{2}[\noindent\large\textbf{\textsf{\nomgroupname}}]
\nomlist
}
\renewcommand*\nompreamble{}
\renewcommand*\nompostamble{\end{multicols}}
\makeatother
\usepackage{lipsum}
\begin{document}
\lipsum[1-2]
\nomenclature[A]{a}{1}%
\nomenclature[A]{b}{2}%
\nomenclature[A]{c}{3}%
\nomenclature[A]{d}{4}%
\nomenclature[A]{e}{5}%
\nomenclature[A]{f}{6}%
\nomenclature[A]{g}{7}%
\nomenclature[A]{h}{8}%
\nomenclature[A]{i}{9}%
\nomenclature[A]{j}{10}%
\nomenclature[A]{k}{11}%
\nomenclature[A]{l}{12}%
\nomenclature[B]{$\alpha$}{1}%
\nomenclature[B]{$\beta$}{2}%
\nomenclature[B]{$\gamma$}{3}%
\printnomenclature
\end{document}
Antwort2
Die Lösung von cgnieder ist nahezu perfekt, da sie bei langen Einträgen, die sich über zwei oder mehr Zeilen erstrecken, gelegentlich abbricht.
Durch Hinzufügen \begin{minipage}[t]{\linewidth}Your nomenclature entry\end{minipage}
wird verhindert, dass es beschädigt wird.
Der Abstand zwischen den Einträgen in der neuen Version ist ziemlich groß, daher sollten Sie die \raggedcolumns
Option hinzufügen. Wenn Sie die Option nicht manuell hinzufügen möchten, minipage
verwenden Sie den folgenden Code, aber diese Umbenennung macht die Gruppe obligatorisch und die Einträge müssen von \nomenclature[B]{$\alpha$}{1}
in geändert werden \nomenclature{B}{$\alpha$}{1}
(beachten Sie, dass die eckigen Klammern jetzt geschweift sind). Es gibt wahrscheinlich eine bessere Möglichkeit, dies zu tun, aber meine Kenntnisse in benutzerdefiniertem Latex-Code sind nicht die besten.
\usepackage{letltxmacro}
\LetLtxMacro\oldnomenclature\nomenclature
\renewcommand{\nomenclature}[3]{\oldnomenclature[{#1}]{#2}{\begin{minipage}[t]{\linewidth}#3\end{minipage}}}
\documentclass{article}
\usepackage{nomencl}
\usepackage{multicol}
\makenomenclature
\makeatletter
\newif\if@nomlist
\newcommand*\nomlist{%
\@nomlisttrue
\list{}{%
\labelwidth\nom@tempdim
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\itemsep\nomitemsep
\let\makelabel\nomlabel}}
\renewcommand*\thenomenclature{%
\@ifundefined{chapter}%
{\section*{\nomname}\if@intoc\addcontentsline{toc}{section}{\nomname}\fi}%
{\chapter*{\nomname}\if@intoc\addcontentsline{toc}{chapter}{\nomname}\fi}%
\nompreamble
\@nomlistfalse
}
\renewcommand\nomgroup[1]{%
\if@nomlist\endlist\end{multicols}\fi
\ifx#1A\relax
\def\nomgroupname{Latin}%
\else
\ifx#1B\relax
\def\nomgroupname{Greek}%
\else
\def\nomgroupname{Other}%
\fi
\fi
\begin{multicols}{2}[\raggedcolumns\noindent\large\textbf{\textsf{\nomgroupname}}]
\nomlist
}
\renewcommand*\nompreamble{}
\renewcommand*\nompostamble{\end{multicols}}
\makeatother
\usepackage{lipsum}
\begin{document}
\nomenclature[A]{a}{1}%
\nomenclature[A]{b}{2}%
\nomenclature[A]{c}{3}%
\nomenclature[A]{d}{4}%
\nomenclature[A]{e}{5}%
% \nomenclature[A]{f}{This is a very long description that won't fit so it gets split on to multiple columns}%
\nomenclature[A]{f}{\begin{minipage}[t]{\linewidth}This is a very long description that won't fit so it gets split on to multiple columns\end{minipage}}%
\nomenclature[A]{g}{7}%
\nomenclature[A]{h}{8}%
\nomenclature[A]{i}{9}%
\nomenclature[A]{j}{10}%
\nomenclature[A]{k}{11}%
\nomenclature[B]{$\alpha$}{1}%
\nomenclature[B]{$\beta$}{2}%
\nomenclature[B]{$\gamma$}{3}%
\printnomenclature
\end{document}