Dirtytalk 的 \say 引用功能在字幕中不起作用

Dirtytalk 的 \say 引用功能在字幕中不起作用

\say来自的报价命令脏话软件包似乎无法在图片标题中工作。有人知道为什么会出现这种情况以及如何修复它吗?

\documentclass{article}
\usepackage{dirtytalk}
\begin{document}

    Say is working \say{fine} here.
    
\begin{figure}
    \caption{But it \say{doesn't} work here.}
\end{figure}

\end{document}

手动插入正确的引号虽然可以正常工作。但不应该\say产生相同的结果吗? 在此处输入图片描述

答案1

该包确实

\providecommand{\say}[1]{...}

并且所使用的代码无法在移动参数中存活。

我不确定的用途是什么\providecommand,但无论如何你需要使命令变得健壮。

\protect\say{text}可以在标题或章节标题中使用,也可以添加

\MakeRobust{\say}

在序言中(dirtytalk当然是在加载之后)。

答案2

解决这个问题的另一个方法是使用csquotes按照建议 用包代替dirtytalk并替换所有\say命令\enquote这里

\enquote命令默认在字幕中起作用。

csquotes具有更多功能,并且还包含在密克泰克斯不像。我因为这个而dirtytalk停止使用。dirtytalk

相关内容