Это мой первый пост, так что извините, если я нарушу какие-либо соглашения! Я решил написать свою докторскую диссертацию в LaTeX и у меня возникли некоторые проблемы с форматированием сокращений/глоссариев, как мне бы хотелось. Я использую пакет glossaries
и хочу использовать его для двух различных вариантов использования, один из которых (стандартное использование) у меня работает хорошо.
Проблема связана с попыткой использовать глоссарии для работы с производителями/компаниями при ссылках, например, на химикаты. Традиционно, когда вы впервые перечисляете химикаты, они должны быть упомянуты в виде «Химическое вещество X (Компания Y, город, США)». Если вы используете несколько продуктов одной компании, последующие ссылки на компанию могут просто упоминать название компании без указания местоположения. Эти ссылки на компании не должны появляться в списке сокращений.
С помощью предыдущих ответов на этом сайте мне удалось убрать название компании из списка сокращений, определив новый «поддельный» глоссарий, который не печатается. Я пробовал использовать, \newignoredglossary
но это также, похоже, скрыло аббревиатуру в тексте, не уверен, почему, но я доволен решением с поддельным глоссарием.
Однако первое использование этих аббревиатур компаний \gls{}
приводит к появлению, например, "Company, Sometown, USA (Company)". Я бы хотел, чтобы это отображалось без повторения названия компании в скобках в конце.
Я понимаю, что мне может пригодиться:
\glsdesc{company}
с последующим
\glsunset{company} \gls{company}
чтобы добиться именно того эффекта, который мне нужен, но это означало бы необходимость вручную находить и отмечать первое упоминание каждого названия компании тегом « \glsdesc{}
последующий \glsunset{}
», а учитывая, что порядок абзацев может измениться во время написания диссертации, я бы предпочел, чтобы это делалось автоматически.
Вот минимальный рабочий пример:
\documentclass{article}
\usepackage[acronym]{glossaries}
\newglossary[flg]{fake}{fls}{flo}{Fake Entries}
\newacronym[type=fake]{bio}{Biohazard Inc}{Biohazard Inc, MA, USA}
\newacronym{pbs}{PBS}{Phosphate Buffered Saline}
\makeglossaries
\begin{document}
First use - \gls{bio}. Second use - \gls{bio}. Not displayed in glossary, but first use repeats company name in parentheses.
\gls{pbs} should appear in the glossary. Second use \gls{pbs}.
\printglossary[type=\acronymtype]
\end{document}
Есть ли простой способ сделать это в glossaries
? Я задавался вопросом, glossaries-extra
можно ли справиться с этим лучше, но документация не на 100% понятна мне, и я обеспокоен тем, что попытка конвертации может нарушить то, что в настоящее время является в целом эффективным списком сокращений в и без того сложном, многофайловом документе, и не обязательно решит мою проблему!
решение1
Вот альтернативный подход:
\documentclass{article}
\usepackage[acronym]{glossaries}
\newignoredglossary{ignored}
% syntax: \newcompany[extra options]{label}{name}{location}
\newcommand*{\newcompany}[4][]{%
\newglossaryentry{#2}{type=ignored,%
name={#3},%
first={#3 (#4)},%
description={#4},%
#1}%
}
\glssetnoexpandfield{first}
% syntax: \newchemical[extra options]{company}{label}{short}{long}
\newcommand{\newchemical}[5][]{%
\newglossaryentry{#3}{type=\acronymtype,%
name={#4},%
first={#5 (\ifglsused{#2}{\glsentryname{#2}}{\glsentryname{#2},
\glsentrydesc{#2}\protect\glsunset{#2}})},%
description={#5},%
#1}%
}
\makeglossaries
\newcompany{bio}{Biohazard Inc}{MA, USA}
\newchemical{bio}{pbs}{PBS}{Phosphate Buffered Saline}
\begin{document}
First use - \gls{bio}. Second use - \gls{bio}.
\gls{pbs} should appear in the glossary. Second use \gls{pbs}.
Reset\glsresetall[ignored,\acronymtype] and try the other way.
\gls{pbs} should appear in the glossary. Second use \gls{pbs}.
First use - \gls{bio}. Second use - \gls{bio}.
\printglossary[type=\acronymtype]
\end{document}
Это производит:
решение2
Использование first=
варианта, когда аббревиатура каждой компании определена, дает именно тот результат, который мне нужен:
\newacronym[type=fake, first=\glsdesc{bio}]{bio}{Biohazard Inc}{Biohazard Inc, MA, USA}
Пакет глоссариев великолепен, но в нем так много функций, что для такого новичка, как я, может быть сложно оценить все возможности.