我怎样才能替换一个字符(零)?

我怎样才能替换一个字符(零)?

是否可以替换 pdflatex 中的字符?我使用 Minion Pro 和 Myriad Pro 字体,零看起来像一个小的“O”。我想用中间有一个点或斜线的零替换零(在不支持 OpenType 的 LaTeX 中插入斜线零)。是否可以全局替换字符(我只想写 0 而不是 \zero 之类的东西)?

在 pdflatex 中可行吗?还是我应该切换到 lualatex(我没有使用过 Lualatex,但我听说它有更好的字体处理)?

答案1

如果你正在考虑切换到 LuaLaTeX,那么你会发现使用“斜线零”非常简单:它是命令\setmainfont(和\setsansfont)提供的一个简单选项字体规格包裹。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Numbers=SlashedZero]{Minion Pro}
\setsansfont[Numbers=SlashedZero]{Myriad Pro}
\begin{document}
Minion Pro: 1001 007

\sffamily 
Myriad Pro: 1001 007
\end{document}

此程序也可以在 XeLaTeX 下运行。顺便说一句,请注意,上例中的斜线零是在文本模式。在数学模式中显然不存在符合 Unicode 的斜线零。

在旁边luaotfload:该软件包的最新版本(由 加载)在过去几天内发布,fontspec其中至少有一个严重的错误,导致其崩溃并显示一个神秘且相当无用的错误消息。如果您的系统上有 TeXLive2013(抱歉,我没有 MikTeX,因此不知道 MikTeX 用户应该怎么做),并且您最近运行了 TeXLive Manager 程序来更新您的发行版软件包,您可以luaotfload通过执行以下命令恢复到以前的版本

sudo tlmgr restore luaotfload 31286

在命令提示符下。希望这个重要软件包的错误修复能很快推送到 CTAN。

答案2

pdflatex对于小块简单文本(不使用任何 LaTeX 命令),带有(和不带有 Minion 字体,抱歉,我没有安装这种字体)的一个选项可以是以下包xstring

\documentclass{article}
\usepackage{xstring}
\usepackage{mathtools}
\newcommand\zero{\rlap{0}/}
\begin{document}
\StrSubstitute{%

102030 is a big number

But 1020030004000 is bigger

}{0}{\zero}
\end{document}

编辑

正如 Mico 所评论的,\rlap{0}/不是一个很漂亮的斜线零,但在字符串替换中调整斜线位置并不容易。一个简单的替代方案可能是$\emptyset$但不幸的是显然比正常的更大0。但可以选择一个更相似的字符:

\documentclass{article}
\usepackage{xstring}
\font\zerofont = cmsy7 at 9.3pt
\newcommand\zero{{\zerofont \char 59}}
\begin{document}
\StrSubstitute{%

102030 is a big number

But 1020030004000 is bigger

}{0}{\zero}

Zeroes comparison:
$\emptyset${\zerofont \char 59}0$\rlap{0}/$
\end{document}

微波辐射计

相关内容