使用 cgls 命令时词汇表会强调文本

使用 cgls 命令时词汇表会强调文本

我使用这里提供的样式回答由 @NicolaTalbot 强调缩写的长形式,并结合额外的受保护空格和对外来缩写的支持(请参阅这里)最近我发现命令\glsenableentrycount\cgls非常有用。

但是,当我使用只使用一次的首字母缩略词时,它的长形式就不会被强调。对于外语首字母缩略词来说,这是一个问题,因为我强调外语文本。因此,我希望在 MWE 中实现的是:

  1. Application Management应该强调Support Vector Machine,因为它是外语
  2. Deutsches Institut für Normung不需要强调,因为它不是外语并且只使用过一次。
  3. 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}

相关内容