我使用这里提供的样式回答由 @NicolaTalbot 强调缩写的长形式,并结合额外的受保护空格和对外来缩写的支持(请参阅这里)最近我发现命令\glsenableentrycount
和\cgls
非常有用。
但是,当我使用只使用一次的首字母缩略词时,它的长形式就不会被强调。对于外语首字母缩略词来说,这是一个问题,因为我强调外语文本。因此,我希望在 MWE 中实现的是:
Application Management
应该强调Support Vector Machine
,因为它是外语Deutsches Institut für Normung
不需要强调,因为它不是外语并且只使用过一次。Zum Beispiel
即使不是外语也应该强调,因为它是首字母缩略词的长形式,并且使用多次。
我怎样才能实现这个目标?
梅威瑟:
\documentclass[a4paper]{article}
\usepackage[english,ngerman]{babel}
\usepackage{glossaries}
\newacronymstyle{emfirst-long-sp-short}
{%
\GlsUseAcrEntryDispStyle{long-sp-short}%
}%
{%
\GlsUseAcrStyleDefs{long-sp-short}%
\renewcommand*{\genacrfullformat}[2]{%
\emph{\glsentrylong{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshort{##1}})%
}%
\renewcommand*{\Genacrfullformat}[2]{%
\emph{\Glsentrylong{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshort{##1}})%
}%
\renewcommand*{\genplacrfullformat}[2]{%
\emph{\glsentrylongpl{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshortpl{##1}})%
}%
\renewcommand*{\Genplacrfullformat}[2]{%
\emph{\Glsentrylongpl{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshortpl{##1}})%
}%
}
\renewcommand*{\glsacspace}[1]{~}
\setacronymstyle{emfirst-long-sp-short}
\newcommand\newforeignacronym[5][]{\newacronym[#1]{#2}{#3}{\foreignlanguage{#5}{#4}}}
\makeglossaries
\glsenableentrycount
\newforeignacronym{am}{AM}{Application Management}{english}
\newforeignacronym{svm}{SVM}{Support Vector Machine}{english}
\newacronym{din}{DIN}{Deutsches Institut für Normung}
\newacronym{zb}{z.\,B.}{Zum Beispiel}
\begin{document}
\rule{0.82\textwidth}{1pt} \cgls{am}.
\rule{0.82\textwidth}{1pt} \gls{svm}.
\rule{0.82\textwidth}{1pt} \cgls{din}.
\rule{0.82\textwidth}{1pt} \cgls{zb} \cgls{zb}.
\printglossaries
\end{document}
答案1
你可以使用类似这样的东西
\newcommand\newforeignacronym[5][]{\newacronym[#1]{#2}{#3}{\foreignlanguage{#5}{\upshape\myemph{#4}}}}
\newcommand*\myemph[1]{\emph{#1}}
然后使用
\renewcommand*\myemph[1]{#1}
前
\printglossaries
如果在强调周围文本的上下文中使用外语缩略词,则这样做不会产生正确的效果,尽管在这种情况下您不会得到直立的强调形状。
在普通情况下,它似乎做了一些正确的事情,尽管我确信有更好的方法来做到这一点。
完整代码:
\documentclass[a4paper,british,ngerman]{article}% use the specific variant of English: british, american, etc. etc.
\usepackage{babel}
\usepackage{glossaries}
\newacronymstyle{emfirst-long-sp-short}
{%
\GlsUseAcrEntryDispStyle{long-sp-short}%
}%
{%
\GlsUseAcrStyleDefs{long-sp-short}%
\renewcommand*{\genacrfullformat}[2]{%
\emph{\glsentrylong{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshort{##1}})%
}%
\renewcommand*{\Genacrfullformat}[2]{%
\emph{\Glsentrylong{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshort{##1}})%
}%
\renewcommand*{\genplacrfullformat}[2]{%
\emph{\glsentrylongpl{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshortpl{##1}})%
}%
\renewcommand*{\Genplacrfullformat}[2]{%
\emph{\Glsentrylongpl{##1}}##2\glsacspace{##1}%
(\protect\firstacronymfont{\glsentryshortpl{##1}})%
}%
}
\renewcommand*{\glsacspace}[1]{~}
\setacronymstyle{emfirst-long-sp-short}
\newcommand\newforeignacronym[5][]{\newacronym[#1]{#2}{#3}{\foreignlanguage{#5}{\upshape\myemph{#4}}}}
\makeglossaries
\glsenableentrycount
\newcommand*\myemph[1]{\emph{#1}}
\newforeignacronym{am}{AM}{Application Management}{british}
\newforeignacronym{svm}{SVM}{Support Vector Machine}{british}
\newacronym{din}{DIN}{Deutsches Institut für Normung}
\newacronym{zb}{z.\,B.}{Zum Beispiel}
\begin{document}
\cgls{am}
\gls{svm}
\cgls{din}
\cgls{zb} \cgls{zb}
\renewcommand*\myemph[1]{#1}
\printglossaries
\end{document}