我一直在努力解决一些较长的词汇表描述,但这些描述没有正确分解。我发现关于连字符的问题链接,但它只解决了我的问题的一部分。在大多数情况下,带连字符的首字母缩略词都没有问题(参见第 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
。如果您手动输入名称,也会得到相同的结果。这是因为包含破折号的单词不允许在破折号以外的任何地方断开。在此网站上搜索连字符复合词,您会找到您的问题和答案几次。
由于您可能正在使用该
babel
包,因此您可以使用\babelhyphen{hard}
以下方法代替破折号:poly(hydroxybutyrate\babelhyphen{hard}\textit{co}\babelhyphen{hard}hydroxyvalerate)
根据您文档的语言,可能已经为此定义了简写(例如,对于硬 babelhyphen
ngerman
有)或者您可以自己定义一个:"=
\useshorthands*{"} \defineshorthand{"-}{\babelhyphen{hard}} ... poly(hydroxybutyrate"-\textit{co}"-hydroxyvalerate)
另一种可能性是使用似乎非常适合您的情况的
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}