我希望能够简单地在源代码中输入度数符号 °。德语键盘有一个这样的键,它使源代码更具可读性。我使用的是pdflatex
TeXLive 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
我最终使用gensymb
了Papiro 的回答获取\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}