
Я использовал glossaries-extra
для генерации списка символов в своей диссертации, но у меня возникли проблемы с форматированием. А именно, проблема в том, что мои названия глав центрированы, а названия групп глоссария — нет.
Я посмотрел галереюПользовательские групповые блокии также разное форматирование style
s, но мне не удалось найти решение. В идеале список должен выглядеть примерно так style=long
(см. рис. ниже), но с присутствующими заголовками групп, которые центрированы.
Есть ли простой способ центрировать названия групп в глоссарии?
МВЭ:
\documentclass[parskip,12pt,oneside,a4paper]{scrbook}
\usepackage[record,symbols,nomain,stylemods={tree},shortcuts=other]{glossaries-extra}
\renewcommand*{\raggedchapter}{\centering}% Make chapters centred
\addtokomafont{disposition}{\rmfamily}% Roman fonts for Ch
\glsxtrsetgrouptitle{bte}{Neutron transport}
\glsxtrsetgrouptitle{angdisc}{Angular discretisations}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newentry{r}{
name={\ensuremath{\mathbf{r}}},
description={Position},
group={bte},
type={symbols}
}
\newentry{S2}{
name={\ensuremath{\mathit{S_2}}},
description={Angular domain: the unit sphere},
group={bte},
type={symbols}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newentry{SN}{
name={\ensuremath{S_N}},
description={Discrete Ordinates discretisation of \gls{S2}},
group={angdisc},
type={symbols}
}
\newentry{PN}{
name={\ensuremath{P_N}},
description={Spherical Harmonics discretisation of \gls{S2}},
group={angdisc},
type={symbols}
}
% \printunsrtglossary[type=symbols,style=long,title={List of Symbols}]
\printunsrtglossary[type=symbols,style=indexgroup,title={List of Symbols}]
\clearpage
\end{document}
решение1
Чтобы ответить на вопрос, вы можете просто обновить формат, используя
\renewcommand\glstreegroupheaderfmt[1]{\begin{center}\textbf{#1}\end{center}\vspace{-\parskip}}
и переход на alttreegroup
стиль. Поэтому вы также должны использовать
\glsfindwidesttoplevelname
перед вызовом \printunsrtglossary
. В итоге должно получиться так:
решение2
Протестировав несколько альтернатив, включая ответ, опубликованный @Venez, я думаю, что самым простым решением этого вопроса является определение нового стиля глоссария на основе long
. long
Стиль фактически является , longtable
что означает, что простые манипуляции со столбцами могут привести к запрошенному стилю, т. е. центрированные заголовки групп и записи глоссария будут размещены по центру страницы.
Решение:
\documentclass[parskip,12pt,oneside,a4paper]{scrbook}
\usepackage[record,symbols,nomain,stylemods={tree},shortcuts=other]{glossaries-extra}% list of symbols
\renewcommand*{\raggedchapter}{\centering}% Make chapters centred
\addtokomafont{disposition}{\rmfamily}% Roman fonts for Ch
\glsxtrsetgrouptitle{bte}{Neutron transport}
\glsxtrsetgrouptitle{angdisc}{Angular discretisations}
% Define a custom long style for groups; style=long uses longtables
\newglossarystyle{longgroup}{%
\setglossarystyle{long}%
\renewcommand*{\glsgroupheading}[1]{%
&% Add empty column in longtable
\multicolumn{1}{c}{% Change the alignment just for the group title to centre
\glsxtrgetgrouptitle{##1}{\glsxtrgrptitle}%
% \glstreePreHeader{##1}{\glsxtrgrptitle}%
\glstreegroupheaderfmt{\glsxtrgrptitle}%
}%
\cr% newline in table
%\glsgroupskip% Uncomment for additional spacing below group title
}%
}%
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newentry{r}{
name={\ensuremath{\mathbf{r}}},
description={Position},
group={bte},
type={symbols}
}
\newentry{S2}{
name={\ensuremath{\mathit{S_2}}},
description={Angular domain: the unit sphere},
group={bte},
type={symbols}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newentry{SN}{
name={\ensuremath{S_N}},
description={Discrete Ordinates discretisation of \gls{S2}},
group={angdisc},
type={symbols}
}
\newentry{PN}{
name={\ensuremath{P_N}},
description={Spherical Harmonics discretisation of \gls{S2}},
group={angdisc},
type={symbols}
}
% \printunsrtglossary[type=symbols,style=long,title={List of Symbols}]
\printunsrtglossary[type=symbols,style=longgroup,title={List of Symbols}]
\clearpage
\end{document}