数学公式中的 Unicode 度数符号 °:\textdegree 在数学模式下无效

数学公式中的 Unicode 度数符号 °:\textdegree 在数学模式下无效

我希望能够简单地在源代码中输入度数符号 °。德语键盘有一个这样的键,它使源代码更具可读性。我使用的是pdflatexTeXLive 2012,以及这个最小的重现示例:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\begin{document}
Degree symbol in plain text works: 90° is a right angle.
Degree in math won't work: $\cos(90°) = 0$.
\end{document}

编译此文档时,我收到消息

LaTeX Warning: Command \textdegree invalid in math mode on input line 11.

打印了两次。查看此运行的日志,我看到了一条额外的错误消息

Missing character: There is no <B0> in font cmr10!

实际上<B0>指的是不形成有效 UTF-8 序列的单个字节,因此无法在我的控制台上正确打印。

我大致知道这一切的来源,但对如何解决这个问题却知之甚少。我想让符号\textdegree在数学模式下也能工作,或者让引擎用一些不同的命令代替我的 unicode 代码点。理想情况下,该命令将根据当前模式是否为数学模式来选择正确的形式,但我不知道如何检查(目前)。对于最终结果,如果符号在文本和数学模式下看起来相同就好了,所以我可能会寻找一种解决方案,即切换到文本模式来输出该符号。

但也许有一种更简单的方法可以完成所有这些。也许甚至有一个包可以做到这一点。通过搜索这里以前的帖子,我发现有一个包unicode-math,但它不适用于 pdfLaTeX,并且切换引擎似乎不是我大多数应用程序的合理要求。

答案1

下面的代码应该可以工作:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{gensymb}
\begin{document}
Degree symbol in plain text works: 90° is a right angle.
Degree in math now work: $\cos(90\degree) = 0$.
\end{document}

答案2

这就是为什么你拥有这个siunitx包:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{siunitx}
\begin{document}
Degree symbol in plain text works: 90\si{\degree} (or \SI{90}{\degree}) is a right angle.
Degree in math would work: $\cos(90\si{\degree}) = 0$.
\end{document}

在此处输入图片描述

正如 cgnieder 所指出的,\ang也可以用于此目的:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{siunitx}
\begin{document}
Degree symbol in plain text works: \ang{90} is a right angle.
Degree in math would work: $\cos(\ang{90}) = 0$.
\end{document}

答案3

我使用^{\circ}数学模式来获取度数符号。每次都有效。我遇到了与其他一些代码/包组合的兼容性问题。

答案4

我最终使用gensymbPapiro 的回答获取\degree命令,并结合一行将其绑定到°受该答案的评论启发的符号:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{gensymb}
\DeclareUnicodeCharacter{00B0}{\degree}
\begin{document}
Degree symbol in plain text still works: 90° is a right angle.
Degree in math now works as well: $\cos(90°) = 0$.
\end{document}

相关内容