多列術語表樣式,其描述包含在自己的列中

多列術語表樣式,其描述包含在自己的列中

我正在嘗試製作一個glossaries可以處理長描述的多列術語表樣式(帶有 ),但我對如何編寫術語表樣式相當不熟悉,並且不完全知道如何實現它。

我想要的是一個有四個欄位的詞彙表;兩對縮寫和描述。如果描述多於一行,則描述應僅在其自己的列中換行,並且縮寫列應跳過任意多行,以使每個縮寫與其描述的開頭對齊。

我所知道的就是製作兩個總列並手動分隔縮寫和描述;透過這段程式碼(我很確定我不久前從 StackExchange 複製貼上了這段程式碼):

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

這段程式碼的問題在於,當您有很長的描述時,它只會包含在縮寫詞列中,因為 LaTeX 不會將縮寫詞和描述視為單獨的區塊。您可以在這裡看到問題,以紅色突出顯示:

自動換行不良的詞彙表

最終,我想做的就是取出那些包裝好的描述位元(不是小寫字母的位元)並將它們推到一邊,將它們限制在描述列中,並在縮寫列中保留空格。我怎樣才能做到這一點?

MWE 的術語表樣式有問題:

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

答案1

這應該是完整解決方案的良好開端:

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

請注意和minipage周圍添加的環境。這是一種原始的解決方法。glossentrynameglossentrydesc

您應該嘗試根據需要調整環境 - 寬度可以增加(也許,但這看起來可以接受),並且我在將術語表條目的垂直對齊設置為 top 而不是 center 時遇到問題。

我把它留給你的研究;)

相關內容