我发现,如果我在删除线命令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}