问题

问题

问题

我有以下词汇表条目:

我刚刚创建了该文档,除了测试文本和一些定义外,它是空的。词汇表在第 3 页。如您所见,页码前有一个逗号,链接到引用Datenobjekt和的条目的位置Objekt。您还可以看到Objekt引用Datenobjekt

在寻找解决方案的过程中,我遇到了这个问题.\glsaddallunused已经在文档末尾,当我创建引用的测试文本passives Objekt(未被其他词汇表条目引用)时,页码前没有出现逗号。因此,这似乎是由于在词汇表条目中引用词汇表条目并\glsaddallunused在文档中调用而导致的。

如何删除逗号?


示例文档

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

\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

实际上你不必使用\glsaddallunused。据我所知你也不需要。

您发现某些术语Datenobjekt未出现在您的词汇表中,因为它没有被明确使用,仅用于另一个术语的初始化。

这里唯一的问题是这makeindex不是一个无限递归/迭代过程。

如果你只是添加makeindex对使用递归术语的任何词汇表的调用,你可以继续使用\gls{Datenobjekt}\glslink{Datenobjekt}{Datenobjekt}在你的\newglossaryentry

例如,我可以编译您的文档(仅注释掉)并使用我自己的小编译脚本%\glsaddallunused进行编译(在我的计算机上):MikTeX

:CheckOS
IF "%PROCESSOR_ARCHITECTURE%"=="x86" (GOTO 32BIT) ELSE (GOTO 64BIT)

:64BIT
ECHO 64-bit compiling
SET MikTexPath=C:\Program Files\MiKTeX 2.9\miktex\bin\x64\
GOTO END

:32BIT
ECHO 32-bit compiling
SET MikTexPath=C:\Program Files\MiKTeX 2.9\miktex\bin\
GOTO END

:END

SET TeXCompilier=xelatex.exe

FOR %%A IN (*.tex) DO (
"%MikTexPath%%TeXCompilier%" "%%~nxA" &_
call BibTeXBuild.bat &_
"%MikTexPath%makeindex.exe" -s "%%~nA.ist" -t "%%~nA.glg" -o "%%~nA.gls" "%%~nA.glo" &_
"%MikTexPath%makeindex.exe" -s "%%~nA.ist" -t "%%~nA.alg" -o "%%~nA.acr" "%%~nA.acn" &_
"%MikTexPath%%TeXCompilier%" "%%~nxA" &_
"%MikTexPath%makeindex.exe" -s "%%~nA.ist" -t "%%~nA.glg" -o "%%~nA.gls" "%%~nA.glo" &_
"%MikTexPath%makeindex.exe" -s "%%~nA.ist" -t "%%~nA.alg" -o "%%~nA.acr" "%%~nA.acn" &_
"%MikTexPath%%TeXCompilier%" "%%~nxA" &_
"%MikTexPath%%TeXCompilier%" "%%~nxA" &_
"%MikTexPath%%TeXCompilier%" "%%~nxA" &_
)

我对运行我的脚本的页面引用没有任何问题,因此将您的脚本更改为以下内容(未经测试)可能会起作用:

# 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"
makeindex -s "$documentname.ist" -o "$documentname.gls" "$documentname.glo"
pdflatex "$documentname.tex"
makeglossaries "$documentname"
makeindex -s "$documentname.ist" -o "$documentname.gls" "$documentname.glo"
pdflatex "$documentname.tex"
pdflatex "$documentname.tex"
pdflatex "$documentname.tex"
echo finished
sleep 2

相关内容