为了在 pdflatex 以及LuaTeX,在我的文档序言中我有:
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\usepackage{newunicodechar}
\newunicodechar{ρ}{\rho}
\newunicodechar{∈}{\in}
\newunicodechar{μ}{\mu}
\newunicodechar{≠}{\neq}
% ... and more of these \newunicodechar
%
\else % if luatex or xetex
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
这样就可以拥有一个可在 arxiv.org 上提交的文档(arxiv.org 不支持 LuaTeX)。
不过,我想知道是否实际上有一个我可以使用且不必手动写出所有这些的包\newunicodechar{...}{...}
,因为它对我来说看起来非常标准。
答案1
我不会这么做。如果你使用命令形式(即使使用unicode-math
LuaTeX),源代码会更清晰。
但是,您可以输入 的unicode-math
,unicode-math-table.tex
反转其正常定义,以便它定义要扩展为命令的字符,而不是相反。
它与主要问题无关,但显示的大多数自动生成的前言都是不必要的复杂或冗余。pdfTeX 默认为 UTF-8,因此inputenc
不需要。TeX 连字是默认的,因此不需要指定。ifxetex 和 ifluatex 是旧版软件包,现在它们执行相同的操作,并且都只加载 iftex。
\documentclass{article}
\usepackage{iftex,amsmath}
\iftutex
\usepackage{unicode-math}
\else
\usepackage{amssymb}
\def\z"{}
\def\UnicodeMathSymbol#1#2#3#4{%
\ifnum#1>"A0
\DeclareUnicodeCharacter{\z#1}{#2}%
\fi}
\input{unicode-math-table}
\let\muprho\rho
\def\BbbR{\mathbb{R}}
\fi
\begin{document}
$ρ ∈ ℝ$
\end{document}
请注意,即使是这个小例子也凸显了使用字符的一些问题。我从你的问题中取出了 rho,但你使用了 U+03C1,这是标准的 ρ,unicode-math
设置为\muprho
(数学直立 rho),数学斜体 rho 是 U+1D70C