我正在处理缩写。我的大多数缩写都是英文的,但我的文本是德文的。由于没有必要在文本中写出较长的英文单词,我只希望它列在缩写列表中,这样德文单词和英文缩写就会出现在文本中,而德文和英文单词应该出现在缩写列表中。我知道缩写包不是最好的选择,但我在工作中用过它。希望有人能帮忙。我发现这,但文本内也显示了英文单词。
以下是简短的 MWE:
\documentclass[a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[printonlyused]{acronym}
\begin{document}
\begin{acronym}[eng]
\acro{eng}{German word}
\end{acronym}
\newpage
\ac{eng}
\end{document}
答案1
如果我正确理解了您的问题,您想禁用\foreignlanguage
文本中链接答案的输出。 以下内容可实现此目的:
\documentclass[a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[printonlyused]{acronym}
\usepackage{etoolbox}
\makeatletter
\newcommand{\acroforeign}[1]{}
% patch the environment to print the foreign definition:
\AtBeginEnvironment{acronym}{%
\def\acroforeign#1{ (#1)}%
}
% patch the acronym definition to safe the foreign definition:
\patchcmd\AC@@acro
{\begingroup}
{\begingroup\def\acroforeign##1{\csdef{ac@#1@foreign}{##1, }}}
{}
{}
% renew the first output to include the foreign definition if given:
\renewcommand*{\@acf}[1]{%
\ifAC@footnote
\acsfont
{%
%\csname ac@#1@foreign\endcsname
\AC@acs{#1}%
}%
\footnote{\AC@placelabel{#1}\hskip\z@\AC@acl{#1}{}}%
\else
\acffont{%
\AC@placelabel{#1}\hskip\z@\AC@acl{#1}%
\nolinebreak[3] %
\acfsfont{(\acsfont
{%
%\csname ac@#1@foreign\endcsname
\AC@acs{#1}%
})}%
}%
\fi
\ifAC@starred\else\AC@logged{#1}\fi
}
\makeatother
\begin{document}
\begin{acronym}[eng]
\acro{eng}{\acroforeign{German word}}
\end{acronym}
\ac{eng}
\end{document}