![Ошибки при использовании «Списка символов» для диссертации с использованием файлов .bib?](https://rvso.com/image/392354/%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B8%20%D0%BF%D1%80%D0%B8%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%C2%AB%D0%A1%D0%BF%D0%B8%D1%81%D0%BA%D0%B0%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2%C2%BB%20%D0%B4%D0%BB%D1%8F%20%D0%B4%D0%B8%D1%81%D1%81%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D0%B8%20%D1%81%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20.bib%3F.png)
Я хотел бы использовать эффективный метод создания глоссария и иметь возможность классифицировать различные «типы» записей в разных списках (аббревиатуры, аббревиатуры, символы, глоссарий и т. д.).
Я подписался на два поста, которые просто потрясающие и которые я советую:
Theпервый, показывает, как классифицировать различные записи, используя файлы .bib для символов. Я следовал этому, используя метод 4.второй постпоказывает, как следовать этому методу, создавая глоссарий, содержащий символы, аббревиатуры, определения и т. д.
Я новичок в LaTex, но многому научился, следуя этим методам (спасибо большое Николе Тэлбот). Я почти у цели, но в результате все еще есть некоторые ошибки. Я создал тестовые файлы, чтобы проверить, чего я хотел бы добиться.
Вот код, который я тестирую:
\documentclass{report}
\usepackage{amssymb}
\usepackage{siunitx}
\usepackage[record,abbreviations,acronyms,symbols,stylemods={tree},style=treegroup]{glossaries-extra}
% always set the abbreviation style before \GlsXtrLoadResources
\setabbreviationstyle{short-long-desc}
\setabbreviationstyle[acronym]{short-long}
% Assign group titles:
\glsxtrsetgrouptitle{latin}{Latin Symbols}
\glsxtrsetgrouptitle{greek}{Greek Symbols}
\GlsXtrLoadResources[
src={no-interpret-preamble,glossary},% bib files
sort={en-US},% sort according to this locale
set-widest,% needed for 'alttree' styles
% save-locations=false % use this command to pring only the acronyms you are using
selection=all% select all entries in the .bib files
]
\GlsXtrLoadResources[
src={symbols-greek},
sort={letter-case}, % sort according Unicode value
field-aliases={
unitname=name,
unitsymbol=symbol,
measurement=description
},
symbol-sort-fallback=name,
type=symbols,
group=greek,
set-widest,% needed for 'alttree' styles
save-locations=false % pring only used symbols.
]
\GlsXtrLoadResources[
src={symbols-latin},
sort={letter-case},% sort according Unicode value
symbol-sort-fallback=name,
type=symbols,
group=latin,
set-widest,% needed for 'alttree' styles
selection=all% select all entries in the .bib files
]
\begin{document}
\section*{Examples}
In this section, I will use the following greek symbols: \gls{alpha}, \gls{alphalin} and \gls{delta}.
One acronym is for example \glstext{ad} and one abbreviation is given by \glstext{html}.
\printunsrtglossary[type=acronyms,style=alttree,title={List of Acronyms}]
\printunsrtglossary[type=abbreviations,style=alttree,title={List of Abbreviations}]
\printunsrtglossary[style=alttree,title={Glossary}] % By not specifing the type, I pring only the entries
\printunsrtglossary[type=symbols,style=alttreegroup,title={List of Symbols}]
\end{document}
Вы можете найти файлno-interpret-preamble.bib
здесь. Файлы glossary.bib
иsymbols-latin.bib
symbols-greek.bib
выглядят так (вдохновлено работами Николы Тальбот):
глоссарий.bib:
% glossary.bib
% This file is public domain. See the "Examples" chapter
% in the bib2gls user manual for a more detailed description
% of this file.
% Encoding: UTF-8
@preamble{"\providecommand{\abbrvtag}[1]{#1}"}
@string{markuplang="\abbrvtag{m}arkup \abbrvtag{l}anguage"}
@entry{TeX,
name={{}\TeX},
description={a format for describing complex type and page layout
often used for mathematics, technical, and academic publications},
identifier={markuplanguage}
}
@entry{LaTeX,
name={{}\LaTeX},
description={a format of \glstext{TeX} designed to separate
content from style},
identifier={markuplanguage}
}
@entry{markdown,
name={markdown},
description={a lightweight markup language with plain text
formatting syntax},
identifier={markuplanguage}
}
@acronym{ad,
short={AD},
long={Affinity Diagram},
description={Tool that gathers large amounts of language data and organizes them into groupings based on their natural relationships},
identifier={acronym}
}
@acronym{dom,
short={DOM},
long={Document Object Model},
description={Cross-platform and language-independent application programming interface},
identifier={acronym}
}
@acronym{spa,
short={SPA},
long={Single Page Application},
description={Web applicaiton of web site that interacts with the user by dynanically rewriting the current page},
identifier={acronym}
}
@acronym{svp,
short={SVG},
long={Scalable Vector Graphics},
description={{}\glstext{xml}-based vector image format for two-dimensional graphics with support for interactivity and animation},
identifier={acronym}
}
@abbreviation{xml,
short={XML},
long={e\abbrvtag{x}tensible }#markuplang,
description={a markup language that defines a set of rules for
encoding documents},
identifier={markuplanguage}
}
@abbreviation{html,
short={HTML},
long={\abbrvtag{h}yper\abbrvtag{t}ext }#markuplang,
description={the standard markup language for creating web pages},
identifier={markuplanguage}
}
@abbreviation{mathml,
short={MathML},
long={\abbrvtag{m\NoCaseChange{ath}}ematical }#markuplang,
description={markup language for describing mathematical notation},
identifier={markuplanguage}
}
@abbreviation{xhtml,
short={XHTML},
long={e\abbrvtag{x}tensible \abbrvtag{h}yper\abbrvtag{t}ext }
# markuplang,
description={{}\glstext{xml} version of \glstext{html}},
identifier={markuplanguage}
}
символы-греческий.bib:
% symbols-greek.bib
% Put here all greek symbols
% Encoding: UTF-8
@symbol{alpha,
name={\ensuremath{\alpha}},
description={angular acceleration},
indentifier={mathgreek}
}
@symbol{alphalin,
name={\ensuremath{\alpha_{L}}},
description={linear coefficient of thermal expansion},
indentifier={mathgreek}
}
@symbol{delta,
name={\ensuremath{\delta}},
description={Kronecker delta},
indentifier={mathgreek}
}
@symbol{lambda,
name={\ensuremath{\lambda}},
description={Lagrange multiplier},
indentifier={mathgreek}
}
@symbol{chi,
name={\ensuremath{\chi}},
description={chromatic number},
indentifier={mathgreek}
}
@symbol{rho,
name={\ensuremath{\rho}},
description={density},
indentifier={mathgreek}
}
@symbol{zeta,
name={\ensuremath{\zeta}},
description={Riemann zeta function},
indentifier={mathgreek}
}
символы-латинские.bib:
% symbols-latin.bib
% Put here all latin symbols
% Encoding: UTF-8
@symbol{x,
name={\ensuremath{x}},
description={position},
indentifier={mathlatin}
}
@symbol{v,
name={\ensuremath{v}},
description={velocity},
indentifier={mathlatin}
}
@symbol{a,
name={\ensuremath{a}},
description={acceleration},
indentifier={mathlatin}
}
@symbol{t,
name={\ensuremath{t}},
description={time},
indentifier={mathlatin}
}
@symbol{E,
name={\ensuremath{E}},
description={Young's modulus},
indentifier={mathlatin}
}
@symbol{F,
name={\ensuremath{F}},
description={force},
indentifier={mathlatin}
}
@symbol{Tm,
name={\ensuremath{T_{m}}},
description={melting point temperature},
indentifier={mathlatin}
}
@symbol{KIC,
name={\ensuremath{K_{IC}}},
description={stress intensity factor},
indentifier={mathlatin}
}
@symbol{Z,
name={\ensuremath{Z}},
description={atomic number},
indentifier={mathlatin}
}
Однако полученный результат неудовлетворителен.
Что я делаю не так? Почему я не могу получить список сокращений? Как сделать список сокращений читабельным?
Я был бы очень благодарен за вашу помощь. Я почти у цели...
решение1
В стенограмме вы найдете несколько предупреждений:
Package glossaries-extra Warning: Glossary type `acronyms' doesn't exist on input line 65.
Package glossaries-extra Warning: No entries defined in glossary `acronyms' on input line 65.
Название глоссария сокращений acronym
не является acronyms
таким, какое вам нужно:
\printunsrtglossary[type=acronym,style=alttree,title={List of Acronyms}]
или
\printunsrtglossary[type=\acronymtype,style=alttree,title={List of Acronyms}]
Опция set-widest
пытается определить, какая запись имеет самое широкое имя, но bib2gls
не знает name
для сокращений/акронимов (так как у нее нет доступа к информации о стиле, установленной в документе), поэтому она предполагает, что имя является просто краткой формой по умолчанию, поэтому она не учитывает длинную форму при выполнении измерений. Однако стиль не alttree
подходит для сокращений с описаниями, потому что в итоге у вас останется только крошечное количество места для описания. Лучше использовать бегущий стиль (например, tree
) или стиль, который ставит разрыв перед описанием (например, altlist
).
Например:
\printunsrtglossary[type=abbreviations,style=altlist,title={List of Abbreviations}]
Кстати, лучше не использовать \glstext
с аббревиатурами. Если вы хотите, чтобы отображалась только краткая форма (независимо от того, использовалась ли аббревиатура), то используйте \gls
с одним из short-nolong
стилей.¹ (Если вы хотите обеспечить краткую форму для подписей или заголовков, используйте \glsfmtshort
.) Использование \gls
вместо \glstext
помогает обеспечить правильный стиль аббревиатуры.
¹В стиле есть ошибка short-nolong-desc
, которая исправлена в glossaries-extra
версии 1.39.