Estilo de glossário de várias colunas com descrições agrupadas em sua própria coluna

Estilo de glossário de várias colunas com descrições agrupadas em sua própria coluna

Estou tentando criar um estilo de glossário com várias colunas (com glossaries) que possa lidar com descrições longas, mas não estou familiarizado com como escrever um estilo de glossário e não sei exatamente como fazê-lo.

O que eu gostaria de ter é um glossário com quatro colunas; dois pares de abreviatura e descrição. Se uma descrição tiver mais de uma linha, a descrição deverá ser agrupada apenas em sua própria coluna, e a coluna de abreviação deverá pular quantas linhas for necessária para manter cada abreviação alinhada com o início de sua descrição.

Tudo o que sei fazer é formar duas colunas de total e separar manualmente a abreviatura e a descrição; por meio deste código (que tenho certeza que copiei do StackExchange há algum tempo):

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

O problema com esse código é que quando você tem uma descrição longa, ela simplesmente passa para a coluna de abreviações, porque o LaTeX não trata a abreviatura e a descrição como blocos separados. Você pode ver o problema aqui, destacado em vermelho:

Glossário com quebra de palavrão

Em última análise, tudo o que eu gostaria de fazer é pegar esses bits de descrição agrupados (os bits que não estão em versalete) e empurrá-los, confinando-os na coluna para descrições e deixando espaços em branco na coluna de abreviações onde estão agora. Como faço para que isso aconteça?

MWE com o estilo problemático de glossário:

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

Responder1

Este deve ser um bom começo para uma solução 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}

Observe os minipageambientes adicionados ao redor glossentrynamee glossentrydesc. Esta é uma espécie de solução alternativa.

Você deve tentar ajustar o ambiente de acordo com suas necessidades - a largura pode ser aumentada (talvez, mas isso parece aceitável) e estou tendo problemas para definir o alinhamento vertical da entrada do glossário para top , não para o centro.

Deixo isso para sua pesquisa ;)

informação relacionada