Me gustaría imprimir una lista de nomenclatura de varias columnas que consta de varios grupos. Por el momento, utilizando el enfoque de agrupación descrito en elmanualy con un fragmento de código dehttp://www.latex-community.org/forum/viewtopic.php?f=51&t=7892, funciona en principio.
Sin embargo, la lista recorre toda la primera columna de la página y luego continúa en la segunda, independientemente de los grupos. Lo que preferiría es que cada grupo esté en su propio multicols
entorno:
Lo que tengo:
Lo que me gustaría:
¿Hay alguna manera de lograr esto con el nomencl
paquete?
\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}
Respuesta1
No estoy seguro de que esta sea la mejor solución, pero aún así...
% 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}
Respuesta2
La solución de cgnieder es casi perfecta ya que ocasionalmente se interrumpe en entradas largas que abarcan 2 o más filas.
Agregar \begin{minipage}[t]{\linewidth}Your nomenclature entry\end{minipage}
evitará que se rompa.
El espacio entre las entradas en la nueva versión es bastante grande, por lo que debes agregar la \raggedcolumns
opción. Si no desea agregarlo manualmente, minipage
use el siguiente código, pero este cambio de nombre hará que el grupo sea obligatorio y las entradas deberán cambiarse de \nomenclature[B]{$\alpha$}{1}
a \nomenclature{B}{$\alpha$}{1}
(tenga en cuenta que las llaves cuadradas ahora están rizadas). Probablemente exista una mejor manera de hacer esto, pero mi conocimiento del código látex personalizado no es el mejor.
\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}