灵魂包的删除命令中无法识别 acro 首字母缩略词

灵魂包的删除命令中无法识别 acro 首字母缩略词

我发现,如果我在删除线命令acro中使用首字母缩略词soul,则会收到有关未定义首字母缩略词的错误。这是我的最小工作示例:

\documentclass{article}
\usepackage{acro} % Handling of acronyms
\usepackage{soul} % Strikeout font
%\soulfont{\ac}{1} % Protect's \ac command from soul
\DeclareAcronym{abc}{ short = ABC, long =AbBraCadabra }
\begin{document}

Try strikeout \st{abc}

Try acronym \ac{abc}

% This causes error about undefined acronym '{abc}'
Try strikeout acronym \st{\ac{abc}}

\end{document}

注释掉的 \soulfont 命令是为了保护 \ac 命令,正如 soul packagecage 文档(“添加字体命令”部分)所述。它会导致以下错误

! TeX capacity exceeded, sorry [input stack size=5000].
\SOUL@do #1->\SOUL@scan 
                        #1\SOUL@stop 

有没有办法在不放弃 acro 包的情况下解决这个问题?

答案1

以下示例修改了 egreg 的回答并 放在\ac一个框内(防止换行)并使用 内的框\st。这也适用于首次使用首字母缩略词的情况:

\documentclass{article}

\usepackage{acro} % Handling of acronyms
\usepackage{soul} % Strikeout font

\DeclareAcronym{abc}{ short = ABC, long =AbBraCadabra }

\newsavebox\tmpbox

\begin{document}

Try strikeout \st{abc}

Try strikeout acronym \sbox\tmpbox{\ac{abc}}\st{foo {\usebox\tmpbox} bar}

\end{document}

结果

答案2

\ac您可以在 内部使用 括号\st。但是,它不适用于尚未使用的首字母缩略词。

\documentclass{article}

\usepackage{acro} % Handling of acronyms
\usepackage{soul} % Strikeout font

\DeclareAcronym{abc}{ short = ABC, long =AbBraCadabra }

\begin{document}

Try strikeout \st{abc}

Try acronym \ac{abc}

Try strikeout acronym \st{abc {\ac{abc}} abc}

\end{document}

在此处输入图片描述

相关内容