我正在用 Latex 写论文,使用 babel 库\usepackage[english,greek]{babel}
但在每个单词中使用\textlatin
and\textgreek
非常令人沮丧。我尝试使用 polyglosia 库\usepackage{fontspec,xgreek,polyglossia}
,但在每个编译器中都出现错误。有没有办法在不更改每个单词的情况下同时使用这两个文本?
主要代码如下:
\documentclass[a4paper,12pt]{report}
\usepackage[left=3cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage[LGR]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,greek]{babel}
\newcommand{\en}{\selectlanguage{english}}
\newcommand{\gr}{\selectlanguage{greek}}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage[parfill]{parskip}
\usepackage[unicode]{hyperref}
\usepackage{bookmark}
\usepackage{cite}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{float}
\usepackage{siunitx}
\usepackage{color}
\usepackage{kmath,kerkis}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[R]{\thepage}
% Redefine plain style, which is used for titlepage and chapter beginnings
% From https://tex.stackexchange.com/a/30230/828
\fancypagestyle{plain}{%
\renewcommand{\headrulewidth}{0pt}%
\fancyhf{}%
\fancyfoot[R]{\thepage}%
}
\renewcommand{\headrulewidth}{0.4pt}
\setlength{\headheight}{15pt}
\rhead{ \chaptername }
\lhead{Έξυπνο Σπίτι}
\rfoot{\thepage}
\graphicspath{{../PICS/}}
\def\tl{\textlatin}
\def\tg{\textgreek}
\begin{document}
\include{cover}
\title{Υλοποίηση ενός προσωπικού ψηφιακού βοηθού μέσω \textlatin{open-source} εφαρμογών}
\author{ΧΑΤΖΟΓΛΟΥ ΚΩΣΤΑΣ \\
\today
\href{mailto:[email protected]}{\tl{[email protected]}}}
\maketitle
\tableofcontents
\thispagestyle{empty}
\include{DOCUMENT/Εισαγωγή}
\include{chapter1}
\include{chapter2}
\include{chapter3}
\appendix
\include{acronyms}
\selectlanguage{english}
\bibliographystyle{IEEEtran}
\bibliography{IEEEabrv,references}
\end{document}
答案1
我首选的解决方案是使用babel
LuaLaTeX,它可以自动检测您正在使用的脚本并更改字体。
\documentclass{article}
\usepackage[nil]{babel}
\usepackage{unicode-math}
\usepackage[svgnames]{xcolor}
\babelprovide[import=el, main, onchar=ids fonts]{greek} % can also do import=el-polyton
\babelprovide[import, onchar=ids fonts]{english}
\babelfont{rm}
[Language=Default, Color=DarkGreen]{CMU Serif}
\babelfont[english]{rm}
[Language=Default, Color=NavyBlue]{CMU Serif}
\babelfont{sf}
[Language=Default]{CMU Sans Serif}
\babelfont{tt}
[Language=Default]{CMU Typewriter Text}
\begin{document}
\title{Υλοποίηση ενός προσωπικού ψηφιακού βοηθού μέσω open-source εφαρμογών}
\author{ΧΑΤΖΟΓΛΟΥ ΚΩΣΤΑΣ}
\date{\today}
\maketitle
\section{Έξυπνο Σπίτι}
Some text in English and Ελληνικά.
\end{document}
我选择 CMU 字体作为示例,因为它们需要Script=Greek
字体功能才能正常工作,但纯粹为了测试,我还为希腊语和英语赋予了不同的颜色。
这实际上比必要的更为复杂。实际上,拉丁文和希腊文字母非常相似,因此你可以对它们使用相同的 Unicode 字体。缺点是,你无法为第二种语言获得正确的连字。
XeLaTeX 不支持onchar=
,但您可以尝试使用(未维护且有缺陷的)包来执行此操作ucharclasses
。
\documentclass[english, greek]{article}
\usepackage{babel}
\usepackage{unicode-math}
\usepackage[Latin, Greek]{ucharclasses}
\usepackage[svgnames]{xcolor}
\babelfont{rm}
[Language=Default, Color=DarkGreen]{CMU Serif}
\babelfont[english]{rm}
[Language=Default, Color=NavyBlue]{CMU Serif}
\babelfont{sf}
[Language=Default]{CMU Sans Serif}
\babelfont{tt}
[Language=Default]{CMU Typewriter Text}
\setTransitionTo{BasicLatin}{\begin{otherlanguage}{english}}
\setTransitionFrom{BasicLatin}{\end{otherlanguage}}
\begin{document}
\title{Υλοποίηση ενός προσωπικού ψηφιακού βοηθού μέσω open-source εφαρμογών}
\author{ΧΑΤΖΟΓΛΟΥ ΚΩΣΤΑΣ}
\date{\today}
\maketitle
\section{Έξυπνο Σπίτι}
Some text in English and Ελληνικά.
\end{document}
我的建议是,如果可以的话就使用 LuaLaTeX,如果被迫的话就使用上个世纪的 8 位字体编码,但如果被迫的话,请按照以下方法操作。
\documentclass[english, greek]{article}
\usepackage[LGR,T1]{fontenc}
\usepackage[utf8]{inputenc} % The default since 2018.
\usepackage{babel}
\begin{document}
\title{Υλοποίηση ενός προσωπικού ψηφιακού βοηθού μέσω open-source εφαρμογών}
\author{ΧΑΤΖΟΓΛΟΥ ΚΩΣΤΑΣ}
\date{\today}
\maketitle
\section{Έξυπνο Σπίτι}
Some text in English and Ελληνικά.
\end{document}
与较新的引擎不同,此解决方案只会更改字体,而不会加载希腊语或英语连字模式。如果您只添加几个英文单词,这应该不会有太大问题。如果您确实需要切换语言标签babel
,例如因为您需要用英语写出完整的句子并正确连字,您可以使用\foreignlanguage{english}{Some text}
或\begin{otherlanguage}{english}
。
如果您确实想在 PDFTeX 中将不同的字体系列配对为英语和希腊语,您可以使用 来实现\substitutefont
。此示例使用 TeX Gyre Termes 表示英语,使用 Tempora 表示希腊语。
\documentclass[english, greek]{article}
\usepackage[LGR,T1]{fontenc}
\usepackage[utf8]{inputenc} % The default since 2018.
\usepackage{babel}
\usepackage{tgtermes}
\usepackage{substitutefont}
\substitutefont{LGR}{\rmdefault}{Tempora-TLF}
\begin{document}
\title{Υλοποίηση ενός προσωπικού ψηφιακού βοηθού μέσω open-source εφαρμογών}
\author{ΧΑΤΖΟΓΛΟΥ ΚΩΣΤΑΣ}
\date{\today}
\maketitle
\section{Έξυπνο Σπίτι}
Some text in English and Ελληνικά.
\end{document}
另请注意,PDFTeX 仅支持预组合字符,而不支持组合重音符号。