无需命令即可更改排版语言

无需命令即可更改排版语言

我在使用希腊语和英语字符排版 LaTeX 时遇到了问题。一直以来,我都在使用polyglossia+fontspec软件包,这样我只需在键盘上更改语言即可在希腊语和英语之间切换。

这种组合允许我选择要使用的字体,但是当数学模式中的字母与数学模式之外的字母混合时,结果就不那么美观了。 解决这个问题的方法是将所有数学模式字母替换为\textrm,但我希望能找到一些不那么累人的方法。

我实际上想将我正在使用的字体更改为 Kerkis。我在网上找到的是,我必须添加以下两个包

\usepackage{kmath,kerkis}
\usepackage[T1]{fontenc}

添加这两个包(同时删除fontspec)会导致文件甚至无法编译。

所以,我的问题是:如何在数学模式内外更改排版字体(比如说 Kerkis),同时保持无需使用 TeX 命令即可更改语言的能力?

编辑:我使用了mathspec包而不是fontspec,下载了 Kerkis 字体并使用以下命令手动添加它们:

\usepackage[MnSymbol]{mathspec}
\setmainfont{KerkisSans}
\setmathsfont(Digits,Latin)[Scale=MatchLowercase]{Kerkis}
\setmathsfont(Greek)[Scale=MatchLowercase]{Kerkis}
\usepackage{polyglossia}

不过,这感觉像是半途而废,因为我觉得我应该加载一个“Kerkis”包或一些可以为我完成工作的东西,不是吗?

答案1

这是我在上面的评论中建议的解决方案:

\documentclass[11pt,oneside]{article}    
\usepackage{amsmath}
\usepackage{mathspec}%[MnSymbol]{mathspec} %<-No need for this in this example
%\usepackage{MnSymbol}
\defaultfontfeatures{Ligatures=TeX}
\setallmainfonts{Linux Libertine O}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setotherlanguage{english}
\setmainfont{Linux Libertine O}
%\newfontfamily\greekfont{Linux Libertine O}

% Definitions of Greek (in math mode)
\def\alpha{α}
\def\beta{β}
\let\oldgamma\gamma %<-see the difference below
\def\gamma{γ}
\def\delta{δ}
\def\epsilon{ε}
\def\zeta{ζ}
\def\eta{η}
\def\theta{θ}
\def\iota{ι}
\def\kappa{κ}
\def\lambda{λ}
\def\mu{μ}
\def\nu{ν}
\def\xi{ξ}
%\def\ο{o}
\def\pi{π}
\def\rho{ρ}
\def\sigma{σ}
\def\tau{τ}
\def\upsilon{υ}
\def\phi{φ}
\def\varphi{ϕ}
\def\chi{χ}
\def\psi{ψ}
\def\omega{ω}
\def\varsigma{ς}
\def\varrho{ϱ}
\def\vartheta{ϑ}

\def\Alpha{Α}
\def\Beta{Β}
\def\Gamma{Γ}
\def\Delta{Δ}
\def\Epsilon{Ε}
\def\Zeta{Ζ}
\def\Eta{Η}
\def\Theta{Θ}
\def\Iota{Ι}
\def\Kappa{Κ}
\def\Lambda{Λ}
\def\Mu{Μ}
\def\Nu{Ν}
\def\Xi{Ξ}
%\def\Ο{O}
\def\Pi{Π}
\def\Rho{Ρ}
\def\Sigma{Σ}
\def\Tau{Τ}
\def\Upsilon{Υ}
\def\Phi{Φ}
\def\Chi{Χ}
\def\Psi{Ψ}
\def\Omega{Ω}

\begin{document}
\selectlanguage{english}

English text


$$α=\frac{β}{γ_s \text{ or }\oldgamma_s} \text{ or }\alpha=\frac{\beta}{\gamma_\sigma} \text{ and } 6_p$$


\selectlanguage{greek}

Ελληνικό κείμενο εδώ

$$α=\frac{β}{γ_s \text{ or }\oldgamma_s} \text{ or }\alpha=\frac{\beta}{\gamma_\sigma} \text{ and } 6_p$$

\setmainfont{FreeSans}
\selectlanguage{english}

English text


$$α=\frac{β}{γ_s \text{ or }\oldgamma_s} \text{ or }\alpha=\frac{\beta}{\gamma_\sigma} \text{ and } 6_p$$

\selectlanguage{greek}

Ελληνικό κείμενο εδώ

$$α=\frac{β}{γ_s \text{ or }\oldgamma_s} \text{ or }\alpha=\frac{\beta}{\gamma_\sigma} \text{ and } 6_p$$

\end{document}

输出:

在此处输入图片描述

MnSymbolPS:这里没有使用该包,请查看\oldgamma间距上的修正。

答案2

将问题解读为“如何对数学和文本使用相同的希腊字体”,这里是一种unicode-math包装方式,具有其方法的粒度:使用range=选项读取数学字母数字符号unicode块中一个或多个所需的小写和大写希腊字母的字形(粗体、斜体、粗体斜体、无粗体、无粗体斜体)。

它确实给出了更加一致的外观:

希腊文本和数学

也接受直接输入(例如红色大写 mu)。

此示例还将希腊字母数学样式设置为 ISO 样式,而不是法语或英语。数学字体的XITS Math斜体希腊字母和粗体斜体希腊数学字母被非数学Noto Serif斜体和粗体斜体字体的字形所取代,并且Noto Serif本身也用于希腊文本字体。

平均能量损失

\documentclass[12pt,varwidth,border=6pt]{standalone}
%\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{polyglossia}
\usepackage[math-style=ISO]{unicode-math}
\setmathfont{XITS Math}
%\setmathfont{Noto Serif}[range={up/{greek,Greek},it/{greek,Greek},bfit/{greek,Greek}},Colour=blue]%fontface; regular
\setmathfont{Noto Serif Italic}[range=it/{greek,Greek},Colour=blue]
\setmathfont{Noto Serif Bold Italic}[range=bfit/{greek,Greek},Colour=red]
\setmainfont{Noto Serif}
\setdefaultlanguage{english}
\setotherlanguage{greek}
\newfontfamily\greekfont[Script=Greek]{Noto Serif}

\begin{document}
\begin{greek}
Το \textbf{ηλιακό σύστημα} περιλαμβάνει τον Ήλιο και όλα τα αντικείμενα τα οποία κινούνται σε τροχιά γύρω από αυτόν μέσα στο πεδίο βαρύτητάς του, είτε περιστρεφόμενα άμεσα γύρω από αυτόν είτε κινούμενα σε τροχιές γύρω από άλλα σώματα που κινούνται γύρω από τον Ήλιο. Βρίσκεται στο τοπικό διαστρικό Νέφος, το οποίο ανήκει στην Τοπική Φυσαλίδα, η οποία με τη σειρά της ανήκει στον βραχίονα του Ωρίωνα στο Γαλαξία, σε απόσταση 27.000 ετών φωτός από το κέντρο του. -- \textit{Βικιπαίδεια}
\end{greek}

\[ \alpha^2 + \beta^2 = \gamma^2 \]

\[\Alpha_1 \Beta_1 = 4\Gamma_2 \]

\[ 

相关内容