Глоссарии — подавление сокращений при первом использовании для выбранных аббревиатур

Глоссарии — подавление сокращений при первом использовании для выбранных аббревиатур

Это мой первый пост, так что извините, если я нарушу какие-либо соглашения! Я решил написать свою докторскую диссертацию в 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}

Пакет глоссариев великолепен, но в нем так много функций, что для такого новичка, как я, может быть сложно оценить все возможности.

Связанный контент