我正在尝试将许多定义从单独的文件加载到我的主文件中。我试过:
\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
这将创建一个带有标签缩写的新词汇表。
由于您目前没有以这种方式使用该包,因此您应该省略此选项。
答案2
至少存在一个、可能两个、甚至可能三个问题:
作为科迪·维纳 说,如果您使用
type=\glsdefaulttype
来表示条目,则需要确保在打印首字母缩略词列表时打印相同的类型。默认情况下,这是main
。您需要
makeglossaries
编译该文档后运行,然后再次编译该文档。您需要在文档中使用至少一个首字母缩略词或强制添加所有条目。
以下是 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
在此示例中使用了 ,但如果您需要,您可以使用其他引擎。
显然,如果您这样做,您可能想要更改标题,但您已经知道如何做到这一点。
答案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 的指导。