Ручной перенос строки в названии глоссария

Ручной перенос строки в названии глоссария

Где-то здесь я нашел способ определить свой собственный стиль глоссария:

\newglossarystyle{superglossarystyle}
{
    \setglossarystyle{super}
    \renewenvironment{theglossary}
    {
        \tablehead{}
        \tabletail{}
        \begin{supertabular}{rp{\glsdescwidth}}
    }
    {
        \end{supertabular}
    }
}
%
\setglossarystyle{superglossarystyle}

Как вручную перенести строку в nameполе в \newglossaryentry?

Как это выглядит сейчас:

ParameterA,ParameterB  This is the description of ParameterA and ParameterB,
                       that is long and automatically wraps.

           ParameterC  This is the description of ParameterC, that is long
                       and automatically wraps.

Как это должно выглядеть:

ParameterA,
ParameterB   This is the description of ParameterA and ParameterB,
             that is long and automatically wraps.

ParameterC   This is the description of ParameterC, that is long
             and automatically wraps.

Я пытался добавить \\,\linebreak,\tabbreakи т. д. в качестве переноса строки, но безуспешно.

\documentclass[pdftex,a4paper,oneside,12pt,halfparskip]{scrbook}
\usepackage[]{amsmath,amssymb}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,top=3.6cm,bottom=3.6cm,left=3.6cm,right=3.6cm]{geometry}
\usepackage[]{glossaries}

\newglossarystyle{superglossarystyle}
{
    \setglossarystyle{super}
    \renewenvironment{theglossary}
    {
        \tablehead{}
        \tabletail{}
        \begin{supertabular}{cp{\glsdescwidth}}
    }
    {
        \end{supertabular}
    }
}

\setglossarystyle{superglossarystyle}
\makeglossaries

\newglossaryentry{pab}
{
    name        = {$\boldsymbol{ParameterA},\boldsymbol{ParameterB}$} ,
    description = {This is the description of ParameterA and ParameterB, that is long and automatically wraps} ,
}

\newglossaryentry{pc}
{
    name        = {$\boldsymbol{ParameterC}$} ,
    description = {This is the description of ParameterC, that is long and automatically wraps.} ,
}

\begin{document}

\glsaddallunused\printglossaries

\end{document}

решение1

Стандартные спецификаторы столбцов: l, r, cиp{длина}. Вы можете определить новые типы столбцов, используяarraypackage, но я не думаю, что это необходимо в данном случае, поскольку вы можете настроить выравнивание абзаца с помощью \raggedleft. При определении нового стиля глоссария полезно рассмотреть упрощенную версию того, что делает этот стиль. На базовом уровне стиль должен иметь вид:

\documentclass{article}

\begin{document}
\begin{tabular}{p{2cm}p{4cm}}
\raggedleft A. & some text\\
\raggedleft AA. & some more text\\
\raggedleft AAA. & some more text
\end{tabular}

\end{document}

первый столбец которого выровнен по правому краю в стиле абзаца.

Изображение, где первый столбец выровнен по правому краю

Теперь проверьте, что произойдет, если ParameterA,ParameterBдобавить:

\documentclass{article}

\begin{document}
\begin{tabular}{p{2cm}p{4cm}}
\raggedleft A. & some text\\
\raggedleft AA. & some more text\\
\raggedleft AAA. & some more text\\
\raggedleft ParameterA,ParameterB & some text
\end{tabular}

\end{document}

Здесь нет переноса строки, поскольку TeX не умеет вставлять разрыв строки, поэтому результат довольно уродливый.

Изображение с переполненной линией

Вместо этого вам нужно предоставить TeX некоторую область действия, чтобы он мог разбить строку на запятой:

\documentclass{article}

\newcommand{\comma}{,\penalty \exhyphenpenalty}

\begin{document}

\begin{tabular}{p{2cm}p{4cm}}
\raggedleft A. & some text\\
\raggedleft AA. & some more text\\
\raggedleft ParameterA\comma ParameterB & some text
\end{tabular}

\end{document}

TeX теперь может разрывать строку:

Изображение с переносом строки после запятой

Здесь я жестко закодировал ширину столбцов с помощью 2cmи 4cm, но glossariesпакет определяет длину для второго столбца, называемого \glsdescwidth. Вы можете определить другую длину для использования для первого столбца:

\newlength\glsnamewidth

Вам нужно будет установить это значение в соответствии с вашим документом. Например:

\setlength{\glsnamewidth}{3cm}

или

\setlength{\glsnamewidth}{0.3\hsize}

Новый стиль глоссария можно определить следующим образом:

\newglossarystyle{superglossarystyle}
{%
  \setglossarystyle{super}%
  \renewenvironment{theglossary}%
  {%
      \tablehead{}%
      \tabletail{}%
      \begin{supertabular}{p{\glsnamewidth}p{\glsdescwidth}}%
  }%
  {%
      \end{supertabular}%
  }%
  \renewcommand{\glossentry}[2]{%
    \raggedleft
    \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
    \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
  }%
}

Полный пример:

\documentclass[pdftex,a4paper,oneside,12pt,halfparskip]{scrbook}
\usepackage[]{amsmath,amssymb}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,top=3.6cm,bottom=3.6cm,left=3.6cm,right=3.6cm]{geometry}
\usepackage[]{glossaries}

\newcommand{\comma}{,\penalty \exhyphenpenalty}
\newlength\glsnamewidth
\setlength{\glsnamewidth}{0.3\hsize}

\newglossarystyle{superglossarystyle}
{%
  \setglossarystyle{super}%
  \renewenvironment{theglossary}%
  {%
      \tablehead{}%
      \tabletail{}%
      \begin{supertabular}{p{\glsnamewidth}p{\glsdescwidth}}%
  }%
  {%
      \end{supertabular}%
  }%
  \renewcommand{\glossentry}[2]{%
    \raggedleft
    \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
    \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
  }%
}

\setglossarystyle{superglossarystyle}
\makeglossaries

\newglossaryentry{pab}
{
    name        =
{$\boldsymbol{ParameterA}\comma\boldsymbol{ParameterB}$} ,
    description = {This is the description of ParameterA and
ParameterB, that is long and automatically wraps} ,
}

\newglossaryentry{pc}
{
    name        = {$\boldsymbol{ParameterC}$} ,
    description = {This is the description of ParameterC, that is
long and automatically wraps.} ,
}

\begin{document}

\glsaddallunused\printglossaries

\end{document}

который производит:

Изображение глоссария

Связанный контент