
Я хотел бы иметь "подразделы" в моем глоссарии или просто два глоссария один за другим. Однако я всегда получаю пустую страницу (или, поскольку я использую twoside & openright, даже две!) между глоссариями.
Я нашел следующую тему
Удалить разрыв страницы перед глоссарием
где короткая версия (я думаю) заключается в том, что любой класс, основанный на «главе», введет clearpage, которую я должен иметь возможность удалить с помощью
\renewcommand*{\glsclearpage}{}
Но у меня это не работает, или я неправильно это называю.
Я создал следующий мини-пример:
\documentclass[11pt,a4paper,twoside,openright]{scrreprt}
% Include Glossary Package
\usepackage[style=alttree,nonumberlist,acronym]{glossaries}
\glssetwidest{ABCD}% widest name
\renewcommand*{\glsclearpage}{}
% Create Glossaries
\newglossary{type1}{gls1}{glo1}{Glossary 1}
\newglossary{type2}{gls2}{glo2}{Glossary 2}
% Generate Glossary Entries
\newglossaryentry{Entry1}{type = type1, name = $aaaa$, description = Position}
\newglossaryentry{Entry2}{type = type1, name = $bbbb$, description = Velocity}
\newglossaryentry{Entry3}{type = type2, name = $cccc$, description = Position}
\newglossaryentry{Entry4}{type = type2, name = $dddd$, description = Velocity}
% Generate Glossaries
\makeglossaries
\begin{document}
% Print Glossaries
\glsaddall
\printglossary[type=type1]
\printglossary[type=type2]
\end{document}
Что я делаю не так?
Спасибо большое! Ура!
РЕДАКТИРОВАТЬ, РЕШЕНИЕ: Используя приведенные ниже предложения, я добился того, что основная глава глоссария содержала несколько конкретных «разделов» глоссария.
\documentclass[11pt,a4paper]{scrreprt}
% Include Glossary Package
\usepackage[toc,style=alttree,nonumberlist,acronym,section=section]{glossaries}
\glssetwidest{ABCD}% widest name[![enter image description here][2]][2]
% Create Glossaries
\newglossary{type1}{gls1}{glo1}{Accronyms}
\newglossary{type2}{gls2}{glo2}{Nomenclature}
% Generate Glossary Entries
\newglossaryentry{Entry1}{type = type1, name = $aaaa$, description = Position}
\newglossaryentry{Entry2}{type = type1, name = $bbbb$, description = Velocity}
\newglossaryentry{Entry3}{type = type2, name = $cccc$, description = Position}
\newglossaryentry{Entry4}{type = type2, name = $dddd$, description = Velocity}
% Generate Glossaries
\makeglossaries
\glsaddall
\begin{document}
\tableofcontents
% First, start main glossary chapter
\addchap{My Glossaries}
Some introductory text if desired.
% Now print actual glossaries
\printglossary[type=type1]
\printglossary[type=type2]
\bigskip\noindent
Some concluding text if desired.
\end{document}
(Я удалил только опции «twoside,openright», чтобы сократить вывод для форума, это ни на что не влияет)
решение1
Вы можете использовать опцию section
или section=section
для пакета глоссариев. Тогда глоссарии получат заголовки на уровне section
.
\documentclass[11pt,a4paper,twoside,openright]{scrreprt}
% Include Glossary Package
\usepackage[style=alttree,nonumberlist,acronym,
section=section% <- added
]{glossaries}
\glssetwidest{ABCD}% widest name
% Create Glossaries
\newglossary{type1}{gls1}{glo1}{Glossary 1}
\newglossary{type2}{gls2}{glo2}{Glossary 2}
% Generate Glossary Entries
\newglossaryentry{Entry1}{type = type1, name = $aaaa$, description = Position}
\newglossaryentry{Entry2}{type = type1, name = $bbbb$, description = Velocity}
\newglossaryentry{Entry3}{type = type2, name = $cccc$, description = Position}
\newglossaryentry{Entry4}{type = type2, name = $dddd$, description = Velocity}
% Generate Glossaries
\makeglossaries
\begin{document}
% Print Glossaries
\glsaddall
\printglossary[type=type1]
\printglossary[type=type2]
\end{document}
Если заголовок глоссария должен быть на chapter
одном уровне, вы можете использовать команду KOMA-Script, \RedeclareSectionCommand
чтобы изменить style
for chapter
локально на section
. Тогда не будет разрыва страницы, а заголовок глоссария все еще будет на одном уровне, chapter
используя элемент шрифта chapter
и имея те же пробелы до и после заголовка. Для этого обходного пути требуется как минимум версия KOMA-Script 3.18 (текущая версия 3.19a).
\documentclass[11pt,a4paper,twoside,openright]{scrreprt}
% Include Glossary Package
\usepackage[style=alttree,nonumberlist]{glossaries}
\glssetwidest{ABCD}% widest name
% Create Glossaries
\newglossary{type1}{gls1}{glo1}{Glossary 1}
\newglossary{type2}{gls2}{glo2}{Glossary 2}
% Generate Glossary Entries
\newglossaryentry{Entry1}{type = type1, name = $aaaa$, description = Position}
\newglossaryentry{Entry2}{type = type1, name = $bbbb$, description = Velocity}
\newglossaryentry{Entry3}{type = type2, name = $cccc$, description = Position}
\newglossaryentry{Entry4}{type = type2, name = $dddd$, description = Velocity}
% Generate Glossaries
\makeglossaries
\begin{document}
% Print Glossaries
\glsaddall
\begingroup
\RedeclareSectionCommand[style=section,indent=0pt]{chapter}
\printglossary[type=type1]
\printglossary[type=type2]
\endgroup
\chapter{Chapter}
\end{document}
Обратите внимание, что команда\glsaddall
вставляет в обоих примерах дополнительный горизонтальный пробел перед заголовком первого глоссария. Поэтому см. такжеответ cfr.
Если вы удалите пустые страницы перед первым глоссарием, используяответ cfrтакже можно удалить пустую страницу между глоссариями: использовать \KOMAoptions{open=any}
локально.
\documentclass[11pt,a4paper,twoside,openright]{scrreprt}
\usepackage{showframe}
% Include Glossary Package
\usepackage[style=alttree,nonumberlist]{glossaries}
\glssetwidest{ABCD}% widest name
% Create Glossaries
\newglossary{type1}{gls1}{glo1}{Glossary 1}
\newglossary{type2}{gls2}{glo2}{Glossary 2}
% Generate Glossary Entries
\newglossaryentry{Entry1}{type = type1, name = $aaaa$, description = Position}
\newglossaryentry{Entry2}{type = type1, name = $bbbb$, description = Velocity}
\newglossaryentry{Entry3}{type = type2, name = $cccc$, description = Position}
\newglossaryentry{Entry4}{type = type2, name = $dddd$, description = Velocity}
% Generate Glossaries
\makeglossaries\glsaddall% < see https://tex.stackexchange.com/a/300060/43317
\begin{document}
% Print Glossaries
\begingroup
\KOMAoptions{open=any}
\printglossary[type=type1]
\printglossary[type=type2]
\endgroup
\chapter{First Chapter}
\chapter{Second Chapter}
\end{document}
решение2
Здесь вам может понадобиться несколько вещей:
- глоссарии должны быть разделами, а не главами;
- глоссарии должны быть главами, но иметь индивидуальный формат, который не вставляет пустые страницы, как это делают другие главы;
- глоссарии должны быть главами, но не иметь дополнительных пустых страниц перед первым глоссарием, когда глоссарии являются единственным содержанием документа.
ответ esddрассматривает первые две возможности.
В третьем случае проблема в том, что это, \glsaddall
кажется, считается контентом, хотя на самом деле ничего не набрано. Я бы посчитал это ошибкой: это не должно вызывать такое поведение, насколько я могу судить.
Однако я не стал углубляться в этот вопрос, поскольку есть простое решение: использовать команду в преамбуле, а не в документе, и все будет хорошо.
\documentclass[11pt,a4paper,twoside,openright]{scrreprt}
\usepackage[style=alttree,nonumberlist,acronym]{glossaries}
\glssetwidest{ABCD}% widest name
\renewcommand*{\glsclearpage}{}
\newglossary{type1}{gls1}{glo1}{Glossary 1}
\newglossary{type2}{gls2}{glo2}{Glossary 2}
\newglossaryentry{Entry1}{type = type1, name = $aaaa$, description = Position}
\newglossaryentry{Entry2}{type = type1, name = $bbbb$, description = Velocity}
\newglossaryentry{Entry3}{type = type2, name = $cccc$, description = Position}
\newglossaryentry{Entry4}{type = type2, name = $dddd$, description = Velocity}
\makeglossaries
\glsaddall
\begin{document}
\printglossary[type=type1]
\printglossary[type=type2]
\end{document}