使用 TexStudio 从单独的文件加载词汇表

使用 TexStudio 从单独的文件加载词汇表

我正在尝试将许多定义从单独的文件加载到我的主文件中。我试过:

\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[doublespacing]{setspace}
\usepackage[nopostdot,style=super,nonumberlist,toc]{glossaries}

\makeglossaries
\setacronymstyle{long-short}
\loadglsentries{glossary.tex}
\begin{document}

    \tableofcontents
    \listoffigures

    \singlespacing
    \printglossary[type=acronym,style=long]
    \doublespacing
    \input{Introduction/intro.tex} % Introduction

\end{document}

我甚至尝试过:

\printglossary[title={List of Abbreviations}]

哪里glossary.tex

\newacronym[type=\glsdefaulttype]{lid}{LID}{lorem ipsum dolor}
\newacronym[type=\glsdefaulttype]{stc}{STC}{sit amet consectetuer}

每次我尝试编译并运行它时都会出现以下错误:

Package glossaries Error: Glossary type `acronym' has not been defined. }

这真是令人沮丧。我做错了什么?

编辑1 由于我有许多其他可能导致冲突的包,因此我将实际使用的包粘贴到我的 main.tex 中

\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{parskip}
\usepackage{amsthm}
\usepackage{chngcntr}
\usepackage{caption}
\usepackage{bm}
\usepackage[doublespacing]{setspace}
\usepackage[nopostdot,style=super,nonumberlist,toc]{glossaries}
\usepackage{pdfpages}
\usepackage{subcaption}
\usepackage{color}   %May be necessary if you want to color links
\usepackage{hyperref}
\hypersetup{
    colorlinks=true, %set true if you want colored links
    linktoc=all,     %set to all if you want both sections and subsections linked
    linkcolor=black,  %choose some color if you want links to stand out
    citecolor=black,    
}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\usepackage{lmodern,textcomp}
\usepackage{fancyhdr}
\usepackage{listings}
\usepackage{placeins}
\usepackage{float}
\usepackage[ruled,vlined]{algorithm2e}
\usepackage[subnum]{cases}
\setcounter{chapter}{0}
\theoremstyle{definition}
\newtheorem{exmp}{Example}[section]
%-------------------- Assumptions -----------------------%
\newtheorem{assumption}{Assumption}

% Glossaries
\makeglossaries
\setacronymstyle{long-short}
\loadglsentries{glossary.tex}

    \begin{document}
        \lstset{frame=tb,
            language=Matlab,
            aboveskip=1mm,
            belowskip=1mm,
            showstringspaces=false,
            columns=flexible,
            basicstyle={\small\ttfamily},
            numbers=none,
            numberstyle=\tiny\color{gray},
            keywordstyle=\color{blue},
            commentstyle=\color{dkgreen},
            stringstyle=\color{mauve},
            breaklines=true,
            breakatwhitespace=true,
            tabsize=3
        }
        \includepdf [pages={1}]{title/kth-cover1680268267433659770.pdf}
        \input{abstract/abstract.tex} % Abstract
        \input{acknowledgments/acknowledgments.tex} % Acknowledgments
        \newpage
        \input{Thankyou/xaxa.tex}
        \cleardoublepage
        \pagenumbering{roman} 
        \tableofcontents
        \listoffigures


        \printglossary[title={List of Abbreviations}]


        \cleardoublepage
        \pagenumbering{arabic}
        \newpage 
%--------------------PAGE DESIGN-------------------------%        
        \pagestyle{fancy}
        \fancyhf{}
        \fancyhead[ER]{\nouppercase\leftmark}
        \fancyhead[OL]{\nouppercase\rightmark}
        \fancyhead[EL,OR]{\thepage}
%--------------------PAGE DESIGN END-------------------------%        
        \input{Introduction/intro.tex} % Introduction
\end{document}

编辑2 我将\usepackage命令编辑为:

\usepackage[acronym,toc,style=super,nonumberlist]{glossaries}

错误消失了,但页面上没有显示任何内容

编辑3 编辑了一行如下:

 \glsaddall
 \printglossary[type=acronym,style=long]

仍然没有任何反应

答案1

随着修订glossaries包裹调用,您只需\glsaddall在命令之前发出即可\printglossary

type=acronym请注意,在您的命令中指定\printglossary将阻止显示首字母缩略词,因为它们是用 定义的type=\glsdefaulttype。您不应该type=acronym\printglossary命令中使用。style=long选项在这里也是不必要的。您也可以type=\glsdefaulttype从定义中删除,因为它似乎没有任何用处。

因此,您应该只发出以下命令,而不是当前\printglossary[type=acronym, style=long]命令:

\glsaddall

\printglossary

acronym最后,请注意,使用当前设置,加载时无法使用包选项glossaries包选项。包用户手册状态

acronym这将创建一个带有标签缩写的新词汇表。

由于您目前没有以这种方式使用该包,因此您应该省略此选项。

或者,根据词汇表文件的命名和编译过程,您可能希望同时使用acronymnomain选项。

答案2

至少存在一个、可能两个、甚至可能三个问题:

  1. 作为科迪·维纳 说,如果您使用type=\glsdefaulttype来表示条目,则需要确保在打印首字母缩略词列表时打印相同的类型。默认情况下,这是main

  2. 您需要makeglossaries编译该文档后运行,然后再次编译该文档。

  3. 您需要在文档中使用至少一个首字母缩略词或强制添加所有条目。

以下是 MWE:

\begin{filecontents}{glossary.tex}
\newacronym[type=\glsdefaulttype]{lid}{LID}{lorem ipsum dolor}
\newacronym[type=\glsdefaulttype]{stc}{STC}{sit amet consectetuer}  
\end{filecontents}

\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[doublespacing]{setspace}
\usepackage[nopostdot,style=super,nonumberlist,toc]{glossaries}

\makeglossaries
\setacronymstyle{long-short}
\loadglsentries{glossary.tex}
\begin{document}

\tableofcontents
\listoffigures

\singlespacing
\printglossary[type=\glsdefaulttype,style=long]% note that the type here matches the type of the entries, regardless of what \glsdefaulttype expands to
\doublespacing

\chapter*{Introduction}% note that we now use some of the entries defined
\gls{lid}
\gls{stc}


\end{document}

要创建文档,您需要运行

pdflatex <filename>
makeglossaries <filename>
pdflatex <filename>
pdflatex <filename>

其中 是您的文档名称.tex(不带扩展名)。pdflatex在此示例中使用了 ,但如果您需要,您可以使用其他引擎。

list of acronyms

显然,如果您这样做,您可能想要更改标题,但您已经知道如何做到这一点。

答案3

好吧,解决方案是,如果您想从单独的文件创建词汇表,您必须执行以下操作:

\documentclass[a4paper,11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[doublespacing]{setspace}
\usepackage[acronym,nomain]{glossaries} % nomain is needed

\makeglossaries
\loadglsentries{glossary.tex} % name of the glosary file
\begin{document}

    \tableofcontents
    \listoffigures

    \glsaddall
    \printglossary[title={my list}]



\end{document}

glossary.tex 是:

\newacronym{MS}{MS}{Microsoft}
\newacronym{CD}{CD}{Compact Disc}
\newacronym{Mac}{Mac}{Short form of Apple Mac}

然后使用TexStudio进行编译。

我之前遇到的错误和不显示行为是因为我没有输入任何nomain内容\usepackage[acronym,nomain]{glossaries},也没有任何\glsaddall 感谢@CobyViner 的指导。

相关内容