我用 glossary 包制作了一个符号列表。代码如下:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc} %Inputencoding: Umlaute richtig eingeben
\usepackage[T1]{fontenc} %Fontencoding: Worte mit Umlauten richtig trennen
\usepackage[ngerman]{babel}
\usepackage{acronym}
\usepackage{hyperref}
\usepackage[
nonumberlist, %keine Seitenzahlen anzeigen
nogroupskip, %kein Abstand
acronym, %ein Abkürzungsverzeichnis erstellen
toc, %Einträge im Inhaltsverzeichnis
section] %im Inhaltsverzeichnis auf section-Ebene erscheinen
{glossaries}
%Ein eigenes Symbolverzeichnis erstellen
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
\newglossary[slg]{acronyms}{syi}{syg}{Abkürzungsverzeichnis}
%Den Punkt am Ende jeder Beschreibung deaktivieren
\renewcommand*{\glspostdescription}{}
%eigenen glossaries style für symbolverzeichnis definieren
\newglossarystyle{superAB}{%
\glossarystyle{long}%
\newcommand*{\myglossaryindent}{0cm}% linker Seitenabstand symbolverzeichnis %symbolverzeichnis nach links einrücken --------------------
\renewenvironment{theglossary}
{%
\begin{longtable}[l]{@{\hspace{\myglossaryindent}}lp{\glsdescwidth}}%
}%
%
{\end{longtable}%
}
\renewcommand*{\glossarysubentryfield}[6]{%
##3 & \glssubentryitem{##2}\glstarget{##2}{\strut}##4\glspostdescription\\}
}%
%symbolverzeichnis nach links einrücken
%Glossar-Befehle anschalten
\makeglossaries
%%%%%%%%%%%%%%%%%%%%%%%%%%Settings%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\setlength{\glslistdottedwidth}{.25\hsize} %Punktlänge einstellen
\newglossaryentry{romanletter}{name={\textbf{\large Lateinische Symbole}},description={}}
\newglossaryentry{greekletter}{name={\textbf{\large Griechische Symbole}},description={}}
\newglossaryentry{symb:omega}{
name=$\Omega$,
description={Giergeschwindigkeit},
parent=greekletter,
sort=symbolomega,
type=symbolslist
}
\newglossaryentry{symb:M0}{
name=$M_{\mathrm{0}}$,
description={gemessenes Biegemoment mittels Vollmessbrücken DMS Schaltung},
parent=romanletter,
sort=symbolM0,
type=symbolslist
}
\glsaddall[types=symbolslist]
\begin{document}
\printglossary[type=symbolslist, style=superAB]
\end{document}
但我想改变一些东西:1.)增加最后一个希腊符号和罗马符号标题之间的距离2.)符号和描述之间的距离应该更小3.)符号和描述之间的距离应该是虚线。
先感谢您!
答案1
这里的主要问题是顶级条目(表示希腊文和拉丁文条目)位于表格的第一列,因此该列必须至少与这些标题一样宽。有多种方法可以解决这个问题。
第一种方法是调整样式,使顶级条目跨越两列。将字体更改命令移出字段name
并放入样式中更有效。这假设所有顶级条目实际上都是标题。
请注意,从 4.0 版开始,样式命令\glossarystyle
、\glossaryentryfield
和\glossarysubentryfield
均已弃用。您仍然可以使用它们,但会收到警告。要更新到较新的命令,您需要进行以下替换:
\glossarystyle{
样式名称}
->\setglossarystyle{
样式名称}
\glossaryentryfield{
标签}{
姓名}{
描述}{
象征}{
地点}
用。。。来代替:\glossentry{
标签}{
地点}
- 可以使用以下方式访问名称
\glossentryname{
标签}
。 - 可以通过以下方式访问描述
\glossentrydesc{
标签}
。 - 可以使用以下方式访问该符号
\glossentrysymbol{
标签}
。 - 可以使用以下命令访问其他字段
\glsentryuseri{
标签}
描述于第 9 节:使用不带链接的词汇表术语用户手册。
- 可以使用以下方式访问名称
\glossarysubentryfield{
等级}{
标签}{
姓名}{
描述}{
象征}{
地点}
用。。。来代替:\subglossentry{
等级}{
标签}{
地点}
可以按上述方式访问字段。
这是一个修改后的版本,它使用了较新的命令并使顶级条目跨越两列:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{hyperref}
\usepackage[
nonumberlist,
nogroupskip,
nopostdot,
toc,
section]
{glossaries}
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}
\newglossarystyle{superAB}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}
{%
\begin{longtable}[l]{@{}lp{\glsdescwidth}}%
}%
{%
\end{longtable}%
}%
\renewcommand{\glossentry}[2]{%
\tabularnewline
\multicolumn{2}{@{}l}%
{%
\glsentryitem{##1}%
\glstarget{##1}{\textbf{\large\glossentryname{##1}}}%
}%
\tabularnewline
}%
\renewcommand{\subglossentry}[3]{%
\glssubentryitem{##2}%
\glstarget{##2}{\glossentryname{##2}}%
&
\glossentrydesc{##2}\glspostdescription\space
##3\tabularnewline
}%
}%
\makeglossaries
\newglossaryentry{romanletter}{name={Lateinische Symbole},description={}}
\newglossaryentry{greekletter}{name={Griechische Symbole},description={}}
\newglossaryentry{symb:omega}{
name=$\Omega$,
description={Giergeschwindigkeit},
parent=greekletter,
sort=symbolomega,
type=symbolslist
}
\newglossaryentry{symb:M0}{
name=$M_{\mathrm{0}}$,
description={gemessenes Biegemoment mittels Vollmessbrücken DMS Schaltung},
parent=romanletter,
sort=symbolM0,
type=symbolslist
}
\glsaddall[types=symbolslist]
\begin{document}
\printglossary[type=symbolslist, style=superAB]
\end{document}
结果是:
第一列现在刚好够宽,可以容纳最宽的子条目。可以使用 为样式添加虚线引线,\dotfill
但较窄的符号 (omega) 只有一个点,几乎看不出来。
以下变体使左栏宽度为 2cm,并添加了引线:
\newglossarystyle{superAB}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}
{%
\begin{longtable}[l]{@{}p{2cm}p{\glsdescwidth}}%
}%
{%
\end{longtable}%
}%
\renewcommand{\glossentry}[2]{%
\tabularnewline
\multicolumn{2}{@{}l}%
{%
\glsentryitem{##1}%
\glstarget{##1}{\textbf{\large\glossentryname{##1}}}%
}%
\tabularnewline
}%
\renewcommand{\subglossentry}[3]{%
\glssubentryitem{##2}%
\glstarget{##2}{\glossentryname{##2}}%
\dotfill
&
\glossentrydesc{##2}\glspostdescription\space
##3\tabularnewline
}%
}%
得出的结果为:
可以通过减小 的值来缩小列之间的间隙\tabcolsep
。例如:
\newglossarystyle{superAB}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}
{%
\setlength{\tabcolsep}{2pt}%
\begin{longtable}[l]{@{}p{2cm}p{\glsdescwidth}}%
}%
{%
\end{longtable}%
}%
\renewcommand{\glossentry}[2]{%
\tabularnewline
\multicolumn{2}{@{}l}%
{%
\glsentryitem{##1}%
\glstarget{##1}{\textbf{\large\glossentryname{##1}}}%
}%
\tabularnewline
}%
\renewcommand{\subglossentry}[3]{%
\glssubentryitem{##2}%
\glstarget{##2}{\glossentryname{##2}}%
\dotfill
&
\glossentrydesc{##2}\glspostdescription\space
##3\tabularnewline
}%
}%
得出的结果为:
或者,您可以@{}
使用列说明符将其完全删除:
\begin{longtable}[l]{@{}p{2cm}@{}p{\glsdescwidth}}%
或者用尽整个线宽:
\begin{longtable}[l]{@{}p{2cm}@{}p{\dimexpr\linewidth-2cm}@{}}%
第二种方法是删除层次结构,为每种类型的符号设置单独的词汇表并使用样式alttree
。例如:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{hyperref}
\usepackage[
nonumberlist,
nogroupskip,
nopostdot,
toc,
section]
{glossaries}
\newglossary*{greeklist}{Griechische Symbole}
\newglossary*{romanlist}{Lateinische Symbole}
\makeglossaries
\newglossaryentry{symb:omega}{
name=$\Omega$,
description={Giergeschwindigkeit},
sort=symbolomega,
type=greeklist
}
\newglossaryentry{symb:M0}{
name=$M_{\mathrm{0}}$,
description={gemessenes Biegemoment mittels Vollmessbrücken DMS Schaltung},
sort=symbolM0,
type=romanlist
}
\glsaddall[types={greeklist,romanlist}]
\begin{document}
\section*{Symbolverzeichnis}
\setupglossaries{section=subsection}
\setglossarystyle{alttree}
% Set up the way the name is displayed in the alttree style and how
% much space it takes up.
\glssetwidest{MMMM}
\renewcommand*{\glstreenamebox}[2]{% requires v4.19+
\makebox[#1][l]{#2\dotfill}%
}
\printglossary[type=greeklist]
\printglossary[type=romanlist]
\end{document}
得出的结果为:
此方法意味着您手动对两个符号列表进行排序,如果您愿意的话,这样可以更容易地将拉丁列表放在希腊列表之前。
第三种方法仅适用于glossaries-extra
扩展包使用group
字段和\printunsrtglossary
。您可以手动排列符号,以便它们按定义顺序列出(无需外部工具):
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{hyperref}
\usepackage[record,% make group field available
symbols,
style=alttreegroup,
nonumberlist]{glossaries-extra}
% Requires glossaries-extra.sty v1.14+
\glsxtrsetgrouptitle{greek}{Griechische Symbole}
\glsxtrsetgrouptitle{roman}{Lateinische Symbole}
\newglossaryentry{symb:omega}{
name=$\Omega$,
description={Giergeschwindigkeit},
type=symbols,
group=greek
}
\newglossaryentry{symb:M0}{
name=$M_{\mathrm{0}}$,
description={gemessenes Biegemoment mittels Vollmessbrücken DMS Schaltung},
type=symbols,
group=roman
}
% Set up the way the name is displayed in the alttree style and how
% much space it takes up.
\glssetwidest{MMMM}
\renewcommand*{\glstreenamebox}[2]{% requires v4.19+
\makebox[#1][l]{#2\dotfill}%
}
\begin{document}
% Requires glossaries-extra.sty v1.08+
\printunsrtglossary[type=symbols,title={Symbolverzeichnis}]
\end{document}
得出的结果为:
如果您希望由外部工具执行排序,则可以将此方法与bib2gls
但目前 Overleaf 尚不支持此功能。(有关类似示例,请sample-textsymbols.tex
参阅bib2gls
文档。