是否可以替换 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}