Estilo de glosario de varias columnas con descripciones dentro de su propia columna

Estilo de glosario de varias columnas con descripciones dentro de su propia columna

Estoy intentando crear un estilo de glosario de varias columnas (con glossaries) que pueda manejar descripciones largas, pero no estoy familiarizado con cómo escribir un estilo de glosario y no sé exactamente cómo lograrlo.

Lo que me gustaría tener es un glosario con cuatro columnas; dos pares de abreviatura y descripción. Si una descripción tiene más de una línea, la descripción solo debe envolverse dentro de su propia columna, y la columna de abreviatura debe omitir tantas líneas como sea necesario para mantener cada abreviatura alineada con el inicio de su descripción.

Lo único que sé hacer es hacer dos columnas en total y separar manualmente la abreviatura y la descripción; a través de este código (que estoy seguro de que copié y pegué de StackExchange hace algún tiempo):

\newglossarystyle{glossabbr}{%
\renewenvironment{theglossary}%
{\begin{multicols}{2}\raggedright}
    {\end{multicols}}

\renewcommand*{\glossaryheader}{}
\renewcommand*{\glsgroupheading}[1]{}
\renewcommand*{\glsgroupskip}{}
\renewcommand*{\glsclearpage}{} 

% set how each entry should appear:
\renewcommand*{\glossentry}[2]{
    \noindent\makebox[7em][l]{\glstarget{##1}{\textsc{\glossentryname{##1}}}}
    \glossentrydesc{##1}\\
}
\renewcommand*{\subglossentry}[3]{%
    \glossentry{##2}{##3}
}
}

El problema con este código es que cuando tienes una descripción larga, simplemente se incluye en la columna de abreviaturas, porque LaTeX no trata la abreviatura y la descripción como bloques separados. Puedes ver el problema aquí, resaltado en rojo:

Glosario con malas palabras

En última instancia, todo lo que me gustaría hacer es tomar esos bits de descripción envueltos (los bits que no están en versalitas) y colocarlos, confinándolos en la columna de descripciones y dejando espacios en blanco en la columna de abreviaturas donde están ahora. ¿Cómo hago para que eso suceda?

MWE con el estilo de glosario problemático:

\documentclass{article}

\usepackage[acronym,nomain]{glossaries}
\setacronymstyle{long-sc-short}
\makeglossaries

\newacronym
{inform}{inform}{informative illocutionary force}
\newacronym
{point}{point}{demonstrative illocutionary force}

\usepackage{multicol}
\newglossarystyle{glossabbr}{%
    \renewenvironment{theglossary}%
    {\begin{multicols}{2}\raggedright}
        {\end{multicols}}
    
    \renewcommand*{\glossaryheader}{}
    \renewcommand*{\glsgroupheading}[1]{}
    \renewcommand*{\glsgroupskip}{}
    \renewcommand*{\glsclearpage}{} 
    
    % set how each entry should appear:
    \renewcommand*{\glossentry}[2]{
        \noindent\makebox[7em][l]{\glstarget{##1}{\textsc{\glossentryname{##1}}}}
        \glossentrydesc{##1}\\
    }
    \renewcommand*{\subglossentry}[3]{%
        \glossentry{##2}{##3}
    }
}

\begin{document}

\glsunsetall

\gls{point}

\gls{inform}

\printglossary[style=glossabbr]

\end{document}

Respuesta1

Este debería ser un buen comienzo para una solución completa:

\documentclass{article}

\usepackage[acronym,nomain]{glossaries}
\setacronymstyle{long-sc-short}
\makeglossaries

\newacronym
{inform}{inform}{informative illocutionary force}
\newacronym
{point}{point}{demonstrative illocutionary force}

\usepackage{multicol}
\newglossarystyle{glossabbr}{%
    \renewenvironment{theglossary}%
    {\begin{multicols}{2}\raggedright}
        {\end{multicols}}
    
    \renewcommand*{\glossaryheader}{}
    \renewcommand*{\glsgroupheading}[1]{}
    \renewcommand*{\glsgroupskip}{}
    \renewcommand*{\glsclearpage}{} 
    
    % set how each entry should appear:
    \renewcommand*{\glossentry}[2]{
        \noindent\makebox[7em][l]{\glstarget{##1}%
            {\begin{minipage}[t]{0.2\textwidth}
                \textsc{\glossentryname{##1}}
            \end{minipage}
        }}
        \begin{minipage}{0.2\textwidth}
        \glossentrydesc{##1}
        \end{minipage}\\
    }
    \renewcommand*{\subglossentry}[3]{%
        \glossentry{##2}{##3}
    }
}

\begin{document}

\glsunsetall

\gls{point}

\gls{inform}

\printglossary[style=glossabbr]

\end{document}

Tenga en cuenta los minipageentornos añadidos alrededor glossentrynamey glossentrydesc. Esta es una especie de solución alternativa.

Debería intentar ajustar el entorno según sus necesidades: se podría aumentar el ancho (tal vez, pero parece aceptable) y tengo problemas para configurar la alineación vertical de la entrada del glosario en la parte superior, no en el centro.

Eso lo dejo a tu investigación ;)

información relacionada