问题

问题

问题

我将命令定义\glsquotation为:

\newcommand{\glsquotation}[1]{
    \paragraph{\gls{#1}:} \glsdesc*{#1}.
}

该命令获取词汇表条目的标签并打印词汇表条目的名称及其描述。名称应链接到词汇表,而描述则不应。

对于第一个条目,它工作正常,但第一个条目之后的每个条目都没有链接到词汇表。我将链接设为蓝色,以便您可以从此屏幕截图中看到它:

此外,词汇表条目描述中包含的链接也丢失了。例如,“Authentizität”定义中的“Objekts”和“Subjekts”,以及“integer”定义中的“unautorisiert”应该链接到不同的词汇表条目。它们在词汇表本身中链接正确。


示例文档

我尽可能地缩减文档的内容,而不破坏任何引用依赖关系,并删除了所有其他命令定义。

\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage[a4paper, total={6in, 10in}]{geometry}
\usepackage{booktabs}
\usepackage[colorlinks]{hyperref}
\usepackage[acronym,toc]{glossaries}

\title{UTF-8's Example Document}
\author{UTF-8}

\hypersetup{
    colorlinks,
    citecolor=black,
    filecolor=black,
    linkcolor=blue,
    urlcolor=black,
    pdftitle={\@title},
    pdfauthor={\@author},
    bookmarks=true
}

\newcommand{\glsquotation}[1]{
    \paragraph{\gls{#1}:} \glsdesc*{#1}.
}


\makeglossaries

\newglossaryentry{Objekt}
{
    name=Objekt,
    plural=Objekte,
    description={Siehe \gls{Datenobjekt}},
}

\newglossaryentry{Datenobjekt}
{
    name=Datenobjekt,
    plural=Datenobjekte,
    description={Repräsentiert Informationen},
}

\newglossaryentry{Subjekt}
{
    name=Subjekt,
    plural=Subjekte,
    description={Benutzer eines Systems oder Objekt, das im Auftrag von Benutzern im System aktiv sein kann (z.B. Prozess, Server, Prozedur)},
}

\newglossaryentry{Autorisierung}
{
    name=Autorisierung,
    plural=Autorisierungen,
    description={Besitzt ein \gls{Subjekt} die Berechtigung, auf ein \gls{Objekt} zuzugreifen, so nennt man das Subjekt für diesen Datenzugriff autorisiert},
}

\newglossaryentry{Authentizitaet}
{
    name=Authentizität,
    plural=Authentizitäten,
    description={Echtheit und Glaubwürdigkeit eines \glslink{Objekt}{Objekts} bzw. \glslink{Subjekt}{Subjekts}, die anhand seiner Identität und seiner charakteristischen Eigenschaften überprüfbar ist},
}

\newglossaryentry{vertraulich}
{
    name=vertraulich,
    description={System ermöglicht keine \glslink{Autorisierung}{unautorisierte} Informationsgewinnung},
}

\newglossaryentry{integer}
{
    name=integer,
    description={Subjekten ist es nicht möglich, Daten \glslink{Autorisierung}{unautorisiert} und unbemerkt zu manipulieren},
}

\newglossaryentry{verfuegbar}
{
    name=verfügbar,
    description={Authentifizierte und \glslink{Autorisierung}{autorisierte} \glspl{Subjekt} werden in der Wahrnehmung ihrer Berechtigungen nicht \glslink{Autorisierung}{unautorisiert} beeinträchtigt},
}

\begin{document}
\maketitle
\tableofcontents

\chapter{Chapter}
\section{Section}
\glsquotation{Authentizitaet}\\

Das klassische Schutzziel-Trio besteht aus Vertraulichkeit, Integrität, und Verfügbarkeit:

\glsquotation{vertraulich}
\glsquotation{integer}
\glsquotation{verfuegbar}


\glsaddallunused
\printglossaries

\end{document}

我编写了这个脚本来构建它(但如果没有清理脚本,你显然无法使用清理选项):

# Builds the document specified by 'documentname'.
# Call with option '-c' or '--clean' to clean the top-levl directory before building.

#!/bin/bash

# CONFIGURATION
documentname="ENTER WHAT YOU CALLED THE FILE HERE (WITHOUT FILE EXTENSION)"
# END OF CONFUGURATION

if [ $1 == "-c" ] || [ $1 == "--clean" ]; then
    ./clean.sh
fi


pdflatex "$documentname.tex"
makeglossaries "$documentname"
pdflatex "$documentname.tex"
pdflatex "$documentname.tex"
makeindex -s "$documentname.ist" -o "$documentname.gls" "$documentname.glo"
pdflatex "$documentname.tex"
echo finished
sleep 2

答案1

这不是一个错误。它是由嵌套链接引起的,glossaries手册警告了这一点。您的描述包括\gls\glslink,这与相冲突\glsdesc

定义词汇表条目部分:

避免在 、、或键(或它们的复数形式)或您计划通过这些命令访问的任何其他键中使用任何\gls-like 或-like 命令。(例如,如果您打算使用 ,则为 键。)否则,您最终会得到嵌套链接,这会导致复杂情况,并且它们无法与大小写更改命令一起使用。您可以在不会通过这些命令访问的键的值中使用它们。例如,如果您不使用 ,则为 键。\glstexttextfirstshortlongsymbol\glssymboldescription\glsdesc

在这种情况下,没有理由使用\glsdesc*。只需使用\glsentrydesc

\newcommand{\glsquotation}[1]{
        \paragraph{\gls{#1}:} \glsentrydesc{#1}.
}

相关内容