LaTeX forum ⇒ MakeIndex, Nomenclature, Glossaries and AcronymsGlossary package and russian GOST Topic is solved

Information and discussion about MakeIndex - the tool to generate subject indices for LaTeX documents.
Eternal_student
Posts: 4
Joined: Mon Nov 22, 2021 12:35 pm

Glossary package and russian GOST

Postby Eternal_student » Mon Nov 22, 2021 12:51 pm

Hi all, sorry for the bad English. I am using the glossary package in my master's thesis . However, I need to customize the output according to the GOST requirement. I am asking for help.

Here is a sample output.

Image

Recommended reading 2021:

LaTeXguide.org • LaTeX-Cookbook.net
LaTeX Beginner's Guide LaTeX Cookbook
Bartman
Posts: 248
Joined: Fri Jan 03, 2020 2:39 pm

Glossary package and russian GOST

Postby Bartman » Tue Nov 23, 2021 10:05 am

As you have probably already read in other topics, the helpers like to see a Infominimal working example given.

In addition to my idea of the vertical space between the glossary entries, I also left a different approach to the solution as a comment.

The reason for my approach is that the optional argument of the first \tabularnewline command doesn't give me even spaces.

\documentclass{article}
\usepackage{array}% makes >{decl.} available
\usepackage[automake, nogroupskip]{glossaries}

% source: styles/glossary-long.sty
\newglossarystyle{longwithseparator}{%
  \setglossarystyle{long}%
%  \renewcommand{\arraystretch}{2}%
  \renewenvironment{theglossary}%
     {\begin{longtable}[l]{
       >{\raggedright}p{.2\textwidth}
       c%@{\quad---\quad}
       >{\raggedright}p{\glsdescwidth}}
     }%
     {\end{longtable}}%
  \renewcommand{\glossentry}[2]{%
    \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & --- &
    \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
    & \tabularnewline
  }%
}

\makeglossaries

% source: test-entries
\loadglsentries{example-glossaries-long}

\renewcommand{\glsnumberformat}[1]{[\glshypernumber{#1}]}

\glsaddall

\begin{document}
\printglossary[style=longwithseparator]
\end{document}

User avatar
Ijon Tichy
Posts: 590
Joined: Mon Dec 24, 2018 10:12 am

Glossary package and russian GOST  Topic is solved

Postby Ijon Tichy » Tue Nov 23, 2021 11:01 am

@Bartman Why not the somehow more simple \arraystretch variant?
\documentclass{article}
\usepackage{array}% makes >{decl.} available
\usepackage[automake, nogroupskip]{glossaries}

% source: styles/glossary-long.sty
\newglossarystyle{longwithseparator}{%
  \setglossarystyle{long}%
  \renewcommand{\arraystretch}{2}%
  \renewenvironment{theglossary}%
     {\begin{longtable}[l]{
       @{}% no extra indent before the entries
       >{\raggedright}p{.2\textwidth}
       @{\quad---\quad}
       >{\raggedright}p{\glsdescwidth}
       @{}% no extra horizontal space after the entries
       }
     }%
     {\end{longtable}}%
}

\makeglossaries

% source: test-entries
\loadglsentries{example-glossaries-long}

\renewcommand{\glsnumberformat}[1]{[\glshypernumber{#1}]}

\glsaddall

\begin{document}
\printglossary[style=longwithseparator]
\end{document}

You even could use package xltabular to automatically stretch the table to the whole text width. But this is a little bit tricky, because \end{xltabular} in the <end code> of a \newenvironment does usually result in an error. So you have to use the (somehow internal) \xltabular, \endxltabular:
\documentclass{article}
\usepackage{array}% makes >{decl.} available
\usepackage[automake, nogroupskip]{glossaries}
\usepackage{xltabular}

% source: styles/glossary-long.sty
\newglossarystyle{xlongwithseparator}{%
  \setglossarystyle{long}%
  \renewcommand{\arraystretch}{2}%
  \renewenvironment{theglossary}%
     {\xltabular{\linewidth}{% Note: You cannot use \begin{xltabular} here.
       @{}% no extra indent before the entries
       >{\raggedright}p{.2\textwidth}
       @{\quad---\quad}
       %>{\raggedright}% optional ragged right for last column
       X
       @{}% no extra horizontal space after the entries
       }%
     }%
     {\endxltabular}% Note: You cannot use \end{xltabular} here.
}

\makeglossaries

% source: test-entries
\loadglsentries{example-glossaries-long}

\renewcommand{\glsnumberformat}[1]{[\glshypernumber{#1}]}

\glsaddall

\begin{document}
\printglossary[style=xlongwithseparator]
\end{document}

This is the same trick, that is also documented for tabularx.

Eternal_student
Posts: 4
Joined: Mon Nov 22, 2021 12:35 pm

Glossary package and russian GOST

Postby Eternal_student » Tue Nov 23, 2021 3:23 pm

Ijon Tichy wrote:
\begin{document}
\printglossary[style=longwithseparator]
\end{document}

You even could use package xltabular to automatically stretch the table to the whole text width. But this is a little bit tricky, because \end{xltabular} in the <end code> of a \newenvironment does usually result in an error. So you have to use the (somehow internal) \xltabular, \endxltabular:
\documentclass{article}
\usepackage{array}% makes >{decl.} available
\usepackage[automake, nogroupskip]{glossaries}
\usepackage{xltabular}

% source: styles/glossary-long.sty
\newglossarystyle{xlongwithseparator}{%
  \setglossarystyle{long}%
  \renewcommand{\arraystretch}{2}%
  \renewenvironment{theglossary}%
     {\xltabular{\linewidth}{% Note: You cannot use \begin{xltabular} here.
       @{}% no extra indent before the entries
       >{\raggedright}p{.2\textwidth}
       @{\quad---\quad}
       %>{\raggedright}% optional ragged right for last column
       X
       @{}% no extra horizontal space after the entries
       }%
     }%
     {\endxltabular}% Note: You cannot use \end{xltabular} here.
}

\makeglossaries

% source: test-entries
\loadglsentries{example-glossaries-long}

\renewcommand{\glsnumberformat}[1]{[\glshypernumber{#1}]}

\glsaddall

\begin{document}
\printglossary[style=xlongwithseparator]
\end{document}

This is the same trick, that is also documented for tabularx.




Thank you so much!

Bartman
Posts: 248
Joined: Fri Jan 03, 2020 2:39 pm

Glossary package and russian GOST

Postby Bartman » Tue Nov 23, 2021 10:04 pm

Ijon Tichy wrote:@Bartman Why not the somehow more simple \arraystretch variant?

The command increases the space between the heading and the first entry. Since I didn't know whether this would bother the topic starter, I decided against it.

User avatar
Ijon Tichy
Posts: 590
Joined: Mon Dec 24, 2018 10:12 am

Glossary package and russian GOST

Postby Ijon Tichy » Wed Nov 24, 2021 8:54 am

Bartman wrote:
Ijon Tichy wrote:@Bartman Why not the somehow more simple \arraystretch variant?

The command increases the space between the heading and the first entry. Since I didn't know whether this would bother the topic starter, I decided against it.

You can simply change \LTpre to compensate this, e.g. add
  \setlength{\LTpre}{0pt}% No initial vertical skip.

or
  \setlength{\LTpre}{\smallskipamount}% Only a small initial vertical skip.

before \begin{longtable} resp. \xltabular.


Return to “MakeIndex, Nomenclature, Glossaries and Acronyms”

Who is online

Users browsing this forum: No registered users and 3 guests