词汇表样式‘长’

词汇表样式‘长’

我用 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文档

相关内容