如何避免 \qty 与物理和 siunitx 发生冲突

如何避免 \qty 与物理和 siunitx 发生冲突

我正在尝试使用physicssiunitx包,它们都对命令有定义\qty。我想忽略来自的一个physics并仅使用来自的那个siunitx。这是我的最小非工作示例,我希望看到的不是“{10}”,而是“10 m”。

\documentclass{article}

\usepackage{siunitx}
\usepackage{physics}

\begin{document}

I want to express a quantity: \qty{10}{\meter}.

\end{document}

答案1

由于最初接受的答案似乎已经过时,约瑟夫建议采用这种替代方案:

\documentclass{article}
\usepackage{siunitx}
\usepackage{physics}
\AtBeginDocument{\RenewCommandCopy\qty\SI}
\begin{document}

I want to express a quantity: \qty{10}{\meter}.

\end{document}

原始答案

您需要siunitx先加载,保存定义的副本\qty,然后在加载后physics恢复赋予的原始含义。\qtysiunitx

开发人员siunitx@Joseph Wright 在答案下方添加了有用的评论。

\documentclass{article}
\usepackage{siunitx,letltxmacro}
\LetLtxMacro{\svqty}{\qty}
\usepackage{physics}
\LetLtxMacro{\qty}{\svqty}

\begin{document}

I want to express a quantity: \qty{10}{\meter}.

\end{document}

或者更简单来说

\documentclass{article}
\usepackage{siunitx}
\let\svqty\qty
\usepackage{physics}
\let\qty\svqty

\begin{document}

I want to express a quantity: \qty{10}{\meter}.

\end{document}

相关内容