![自动将 \º 替换为 $^\circ$](https://linux22.com/image/320821/%E8%87%AA%E5%8A%A8%E5%B0%86%20%5C%C2%BA%20%E6%9B%BF%E6%8D%A2%E4%B8%BA%20%24%5E%5Ccirc%24.png)
我不喜欢 LateX 排版的 º 符号,因为它有奇怪的下划线。
所以我想创建一个新命令,用它来替换\º
,$^\circ$
并试图在序言中像这样定义它:
\newcommand{\º}{$^\circ$}
不幸的是,发生的事情与我预期的不一样:
我的文档被扩展了,第一页显示了符号$^\circ$
和标题,但没有其他内容。而我实际使用命令的位置完全忽略了它,只输出 30 而不是 30º。我做错了什么?编辑:MWE
\documentclass[12pt, a4paper, twoside, %openright,
toc=listof, BCOR=5mm, bibliography=totoc, parskip=half]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\newcommand{\º}{$^\circ$}
\begin{document}
30º this will give me the output shown in the image.
30\ºthis is supposed to output 30$^\circ$, but doesn't. Instead it produces a new first page showing the symbol $^\circ$.
\end{document}
答案1
你可以直接使用\protected\def
而不是\newcommand
:
\documentclass[
12pt,
paper=a4,
twoside,
%openright,
toc=listof,
BCOR=5mm,
bibliography=totoc,
%parskip=half,
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\protected\def\º{\ensuremath{^\circ}}
\begin{document}
30º this will give me the output shown in the image.
30\º this is supposed to output 30$^\circ$, and it does.
\end{document}
但是,您使用的度数符号是错误的,因为它º
是 U+00BA 阳性序数指示符。
这是一个更好的方法来做你想做的事情:
\documentclass[
12pt,
paper=a4,
twoside,
%openright,
toc=listof,
BCOR=5mm,
bibliography=totoc,
%parskip=half,
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{°}{\ensuremath{^\circ}}
\begin{document}
30° is the right way to go.
\end{document}
答案2
使用xelatex
以下命令定义即可立即使用。当然,siunitx
方法不限于此。xelatex
\documentclass{article}
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\newcommand{\°}{\si{\degree}}
\begin{document}
30\° or \SI{30}{\degree}
\end{document}
答案3
您无法定义\º
为 º 在 utf8 中不是单个符号。但您可以重新定义 º 的输出
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{º}{XXXX}
\begin{document}
30º
\end{document}
编辑
并证明它也适用于 siunitx:
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\usepackage{siunitx}
\newunicodechar{º}{\si{\degree}}
\begin{document}
30º
\end{document}
答案4
使用不同的方法,我发现
\usepackage{gensymb}
生成一个很好的度数符号,您只需在文件中输入
\degree