由于我需要法语、阿拉伯语和数学符号,所以我的文章中有以下结构:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{arabtex}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage[arabic,french]{babel}
\usepackage{utf8}
\usepackage[T1]{fontenc} % pour l'utilisation de 'french'
\title{Zéro}
\begin{document}
\maketitle
\setcode{utf8}
zéro :
\<صفر >
\fg{} (\d{s}\u{\i}fr)
\[ 0 \times 0 \]
\end{document}
答案1
我使用了用户@egreg 的答案
\DeclareRobustCommand{\timesr}{\fontfamily{artimes}\selectfont}
\let\times\relax
\DeclareMathSymbol{\times}{\mathbin}{symbols}{"02}
(见链接使用 arabi 包时插入符号 \times 和 \omega 的问题)
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{arabtex}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage[arabic,french]{babel}
\usepackage{utf8}
\usepackage[T1]{fontenc} % pour l'utilisation de 'french'
\DeclareRobustCommand{\timesr}{\fontfamily{artimes}\selectfont}
\let\times\relax
\DeclareMathSymbol{\times}{\mathbin}{symbols}{"02}
\title{Zéro}
\begin{document}
\maketitle
\setcode{utf8}
zéro :
\<صفر >
\fg{} (\d{s}\u{\i}fr)
\[ 0 \times 0 \]
\end{document}
答案2
我建议您在 LuaTeX 中尽可能使用 Unicode 字体,在必要时使用旧版 8 位字体。这是一个适用于 2020 年或更高版本的 LuaLaTeX 的解决方案,也可能适用于早期发行版中的 luahbtex。它可以修改为适用于 XeLaTeX。
它会检测您输入的语言,并相应地更改字体和连字符模式。输出的 PDF 将支持两种语言以及数学符号的搜索和复制。
\documentclass[12pt]{article}
\tracinglostchars=2 % Warn if the current font does not have a character!
\usepackage{tikz}
\usepackage[french, bidi=basic, layout=tabular]{babel}
\usepackage{unicode-math}
\usepackage{microtype} % Font expansion and protrusion.
\usetikzlibrary{babel} % Turn off Babel shorthands inside TikZ nodes.
\babelprovide[import=ar, onchar=ids fonts]{arabic} % Or import=ar-DZ, etc.
\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX, Renderer=HarfBuzz }
% You can substitute your fonts of choice here. Any OpenType or TrueType
% font should work.
\babelfont{rm}
[Ligatures=Common, Scale=1.0]{Libertinus Serif}
\babelfont[arabic]{rm}
[Ligatures=Common]{Amiri}
\babelfont{sf}
[Ligatures=Common]{Libertinus Sans}
% Specify \babelfont[arabic]{sf} here, if needed.
\babelfont{tt}
{Libertinus Mono}
\babelfont[arabic]{tt}
{ALM Fixed}
\setmathfont{Libertinus Math}
\title{Zéro}
\begin{document}
\maketitle
zéro :
«صفر»
(\d{s}\u{\i}fr)
\[ 0 \times 0 \]
\end{document}
在这个例子中,我使用了 Khaled Hosny 的 Libertinus 和 Amiri 字体,它们很吸引人、兼容性强、功能全面而且免费,但您可以用任何您可以在文字处理器中使用的字体来代替。
我添加了一些其他最佳实践,例如layout=tabular
使阿拉伯表格从右到左显示,\usetikzpackage(babel)
以便 TikZ 绘图命令仍然有效,等等。
这假设您在以法语为主的文档中使用阿拉伯语单词或短语。如果您需要在法语和阿拉伯语的整个段落之间切换,或者在使用相同脚本的两种语言之间切换,则自动onchar=
检测将无法满足您的需求。您需要使用语言标签,例如\begin{otherlanguage}{arabic}
或\foreignlanguage{arabic}
。
关于字体中拉丁文脚本未定义法语语言的警告是无害的,但你可以通过添加选项来抑制它们Language=Default
,例如
\babelfont{sf}
[Ligatures=Common, Language=Default]{Libertinus Sans}