长词汇表描述和缩写的简短形式的换行符

长词汇表描述和缩写的简短形式的换行符

我一直在努力解决一些较长的词汇表描述,但这些描述没有正确分解。我发现关于连字符的问题链接,但它只解决了我的问题的一部分。在大多数情况下,带连字符的首字母缩略词都没有问题(参见第 1 行并修复第 10/11 行),但是我还没能弄清楚该如何处理第 12 行。我希望能够在首字母缩略词的长形式和短形式之间有一个分隔符,但我不知道如何实现这一点。我正在使用 PDFLaTex 进行编译,这也是我看到提到的内容这里,但这似乎对这个特定问题没有帮助。

\documentclass[smallextended]{article}
\usepackage{glossaries}
\usepackage{lipsum}
\usepackage{lineno}
\linenumbers

\newacronym{PHBV}{PHBV}{poly(hydroxybutyrate-\textit{co}-hydroxyvalerate)}
%Same acronym, just with a hyphen added
\newacronym{PHBVh}{PHBV}{poly(hydroxybutyrate-\textit{co}-hydroxy\-valerate)}

\begin{document}
%What happens most of the time and so you can see paragraphs
Lorem ipsum dolor sit amet, consectetuer adipiscing \gls{PHBV}.
\lipsum[57]
\glsresetall

%Without the hyphen
Cras tincidunt turpis ligula, ut abcdefghijkl \gls{PHBV}.

%Using the manually inputted hyphen
Cras tincidunt turpis ligula, ut abcdefghijkl \gls{PHBVh}. 
\glsresetall \Gls{PHBV}.
\glsresetall

%This is the problem:
Cras tincidunt turpis ligulala, \gls{PHBVh}.
\end{document}

答案1

这个问题与 无关glossaries。如果您手动输入名称,也会得到相同的结果。这是因为包含破折号的单词不允许在破折号以外的任何地方断开。在此网站上搜索连字符复合词,您会找到您的问题和答案几次。

  1. 由于您可能正在使用该babel包,因此您可以使用\babelhyphen{hard}以下方法代替破折号:

    poly(hydroxybutyrate\babelhyphen{hard}\textit{co}\babelhyphen{hard}hydroxyvalerate)
    

    根据您文档的语言,可能已经为此定义了简写(例如,对于硬 babelhyphenngerman有)或者您可以自己定义一个:"=

    \useshorthands*{"}
    \defineshorthand{"-}{\babelhyphen{hard}}
    ...
    poly(hydroxybutyrate"-\textit{co}"-hydroxyvalerate)
    
  2. 另一种可能性是使用似乎非常适合您的情况的chemmacros包及其命令:\iupac

    \iupac{poly(hydroxybutyrate-\textit{co}-hydroxyvalerate)}
    

完整示例:

\documentclass{article}
\usepackage[english]{babel}

% depending on the language of your document this may or may not be necessary:
\useshorthands*{"}
\defineshorthand{"-}{\babelhyphen{hard}}

\usepackage{glossaries}

\usepackage{chemmacros}
\NewChemIUPAC\co{\textit{co}}

% \iupac-commands are only defined within \iupac so we need to prevent
% glossaries from expanding its fields (this may or may not have
% unexpected effects…)
\glsnoexpandfields
\newacronym{PHBVa}{PHBV}{\iupac{poly(hydroxybutyrate-\co-hydroxyvalerate)}}

% depending on the language of your document this may or may not be necessary:
% \shorthandon{"}
\newacronym{PHBVb}{PHBV}{poly(hydroxybutyrate"-\textit{co}"-hydroxyvalerate)}

\usepackage{showframe}

\begin{document}

% 
Cras tincidunt turpis ligula, ut abcdefghijkl
poly(hydroxybutyrate-\textit{co}-hydroxyvalerate)

% with \iupac
Cras tincidunt turpis ligula, ut abcdefghijkl
\iupac{poly(hydroxybutyrate-\co-hydroxyvalerate)}

% with babel
Cras tincidunt turpis ligula, ut abcdefghijkl
poly(hydroxybutyrate"-\textit{co}"-hydroxyvalerate)

% with glossaries and \iupac
Cras tincidunt turpis ligula, ut abcdefghijkl \gls{PHBVa}

% with glossaries and babel
Cras tincidunt turpis ligula, ut abcdefghijkl \gls{PHBVb}

\end{document}

在此处输入图片描述

答案2

好吧,这有点像 hack,但这就是我正在做的事情。如果有更好的方法,请告诉我!

\acrlong{PHBV} \linebreak (\acrshort{PHBV}) \glsunset{PHBV}

相关内容