从 pdfLaTeX 转换为 XeLaTex

从 pdfLaTeX 转换为 XeLaTex

这个论坛一直是快速而精致的帮助的重要来源。所以我希望你能再次向我展示它是如何做到的!

我很快就要写我的大学毕业论文了,到目前为止,我对 pdfLaTeX 已经相当熟悉了,并且我非常喜欢它。但现在我似乎无法解决的问题开始堆积如山,主要是因为我必须在一篇文本中使用不同的语言。所以每个人都建议我改用 XeLaTeX,因为它能更好地处理不同的字体/语言。另一方面,我有一个广泛的序言(主要是因为我需要一种非常“特殊”的参考书目),我无法找出哪些软件包与 XeLaTeX 兼容,哪些不兼容,或者是否有更好的选择。

我已经读过这个帖子从 pdfLaTeX 转到 XeTeX - 我需要知道什么?使用 XeLaTeX 代替 pdfLaTeX但它们并没有涵盖我需要的一切...

%Preamble%

\documentclass[a4paper,12pt,numbers=endperiod]{scrartcl}

\usepackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2cm,footskip=1cm]{geometry}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{caption}
\usepackage{filecontents}
\usepackage{lipsum}
\usepackage{fancyhdr}
\usepackage{yfonts}
\usepackage{hyperref}
\usepackage{pdfpages}
%\usepackage{showframe}
\usepackage{lipsum}

%%Tables%%
\usepackage{array,booktabs,xcolor,colortbl}
\usepackage{multirow}
\usepackage{diagbox}
\newcommand{\specialcell}[2][c]{%
  \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}

%%Encoding%%
\usepackage{lmodern}
\usepackage[footnote,printonlyused]{acronym}
\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tipa}
\usepackage{csquotes}
\usepackage{combelow}

%%Footnotes%%
\usepackage{footnote}
\makesavenoteenv{tabular}
\makesavenoteenv{table}
\setkomafont{disposition}{\mdseries\rmfamily}
\onehalfspacing
\captionsetup[table]{skip=5pt,font=footnotesize}
\deffootnote[1.0em]{1.0em}{1.0em}
    {\textsuperscript{\thefootnotemark}\,\enskip}
\renewcommand{\baselinestretch}{1.5}

%%Inhaltverzeichnis%%
\usepackage{tocstyle}
\usetocstyle{allwithdot}

%%Bibliography%%
\usepackage[nottoc,notlot,notlof]{tocbibind}
\usepackage[backend=biber,style=authoryear,sorting=nyt]{biblatex}
\addbibresource{Bibliography.bib}
\DefineBibliographyStrings{ngerman}{references={Bibliographie}}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\DeclareNameAlias{sortname}{last-first}
\renewbibmacro*{date+extrayear}{%
  \iffieldundef{\thefield{datelabelsource}year}%
    {}{%
       \printtext[parens]{%
         \iffieldnum{edition}{\printfield[superedition]{edition}\global\clearfield{edition}}{}%
         \iffieldsequal{year}{\thefield{datelabelsource}year}%
           {\printdateextralabel}{\printfield{labelyear}\printfield{extrayear}}%
       }%
      }%
}
\renewcommand*{\bibpagespunct}{\addcomma\space}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
   {}{%
      \printnames[byeditor]{editor}%
      \setunit{\addspace}%
      \usebibmacro{byeditor+othersstrg}%
      \clearname{editor}\newunit%
   }%
   \usebibmacro{byeditorx}%
   \usebibmacro{bytranslator+others}%
}
\renewbibmacro*{byeditor+othersstrg}{\usebibmacro{editor+othersstrg}}
\renewbibmacro*{bytranslator+othersstrg}{\usebibmacro{translator+othersstrg}}
\renewbibmacro*{bytypestrg}[2]{%
  \iffieldundef{#1type}{\bibstring{#2}}{%
    \ifbibxstring{\thefield{#1type}}%
      {\bibstring{\thefield{#1type}}}{\printtext{\thefield{#1type}}}%
  }%
}
\renewcommand*{\multinamedelim}{/}
\renewcommand*{\finalnamedelim}{/}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}

\renewcommand*{\labelnamepunct}{\addcolon\space}
\newcounter{SprachB}
\newcommand{\SprachB}[1]{\refstepcounter{SprachB}\label{#1}}

\usepackage{etoolbox}
\AtBeginEnvironment{quote}{\singlespacing\footnotesize}

\DeclareRobustCommand{\cyrins}[1]{
    \begingroup\fontencoding{T2A}%
    \begingroup\fontfamily{cmr}%
    \foreignlanguage{russian}{#1}%
    \endgroup\endgroup
  }

\hyphenation{Script-Oralia}

%Document%

\begin{document}

\pagenumbering{arabic}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[R]{\thepage\hspace{.5cm}}
\setcounter{page}{3}

\begin{spacing}{1.3}

\lipsum

\end{spacing}

\end{document}

总而言之,我希望能够使用:

  • 正文大部分为德语
  • 罗马尼亚语,因为这是我正在学习的语言(需要特殊字符!)
  • 其他不成问题的欧洲语言,如英语、法语和葡萄牙语
  • IPA 符号,因为这篇论文是关于音系学的
  • 目前标准键盘上可以找到的西里尔字符
  • 古西里尔字母(和格拉哥里字母)
  • 日语字符(平假名、片假名和汉字)

我真的希望这不是一个太大的问题,因为如果没有上述清单,我的关于写作和语音学的论文将很难管理。

当然,如果您能想到在 pdfLaTeX 中完成所有这些操作的方法,那么我也很乐意尝试。

最后两条信息:我正在使用 TexMaker(但如果这样做更容易,我可以转到另一个编译器)并且 OpenSuse 是我的操作系统(所以我不确定是否有所有扩展可供我下载)

提前谢谢您!!

答案1

我正在尽力回答您的观点:

  • 正文大部分为德语

    您可以使用类似质量的 pdfLaTeX、XeLaTeX 和 LuaLaTeX 实现此目的。请记住,对于德语论文,您可以使用babel选项ngermanpolyglossia(而不是 pdflatex)与其german语言一起使用。

  • 罗马尼亚语,因为这是我正在学习的语言(需要特殊字符!)

    在 Xe-/LuaLaTeX 中使用任何 UTF-8 字符(带重音符号等)都没有问题。唯一需要注意的是:您的字体必须支持它。如果您选择的字体没有这些字符,引擎的决定将不会有帮助。

  • 其他不成问题的欧洲语言,如英语、法语和葡萄牙语

    babel和支持这些语言polyglossia。你可能需要阅读手册来决定哪种切换语言的方式更符合你的喜好。

  • IPA 符号,因为这篇论文是关于音系学的

    您可以使用如何在 LaTeX 中使用 IPA 语音字符。这将适用于 pdflatex 和 Xe-/LuaLaTeX。在我看来(仅个人观点),unicode 输入似乎更舒服,但这只是个人喜好问题。

  • 目前标准键盘上可以找到的西里尔字符

    我不知道你想使用哪些字符。但一般来说,你可以使用(La)TeX 中的西里尔字母。如果我必须在具有不同符号的多种语言之间切换,我肯定会选择 Xe-/LuaLaTeX。

  • 古西里尔字母(和格拉哥里字母)

    对于 Xe-/LuaLaTeX 来说,这似乎是一项完美的任务。只需输入 UTF-8 中的字符,然后搜索将其映射到正确的“旧字符”的字体即可。

  • 日语字符(平假名、片假名和汉字)

    正如我之前推荐过 Xe-/LuaLaTeX 用于字体切换,你应该阅读这个答案. 就我个人而言,我对 有非常好的体验luatexja-fontspec


建议:考虑到您的观点后,我会选择 Xe-/LuaLaTeX。现在您必须决定要使用哪一个。我使用 XeLaTeX 有一段时间了,但现在是 LuaLaTeX 用户,因为在我的计算机上,我没有遇到那么大的速度差异(在大文档上)。

因为我是一名microtype用户,并且我会操纵输入以满足我的需求(例如将每个输入转换z.B.z.\,B.),所以我使用 LuaLaTeX 来完成更大的项目。如果您不需要这些操纵,XeLaTeX 就足够了。


关于您的源代码(假设您切换到 Xe-/LuaLaTeX):

  • 删除inputenc(无论哪种方式编码都是 UTF-8)和fontenc(不支持的概念)
  • lmodern用相应的fontspec调用替换
  • 更新您的\cyrins命令以切换字体而不是编码
  • (可选)fancyhdr用 KOMA 原生代码替换scrlayer-scrpage

顺便说一句:替换意味着您应该阅读文档并使用其中给出的方式。


更新:我对你的代码进行了一些修改,以作为向 XeLaTeX 过渡的启动器。

在最后的编辑中,我删除了对 Arial 的依赖并使用了Libertinus SerifTeX Live 中包含的字体。

\documentclass[a4paper,12pt,numbers=endperiod]{scrartcl}

\usepackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2cm,footskip=1cm]{geometry}
\usepackage{scrlayer-scrpage} % instead of fancyhdr

\usepackage{fontspec}
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}
\newfontfamily\russianfont{Libertinus Serif}
\newfontfamily\ipafont{DoulosSIL-R.ttf}

\usepackage{polyglossia}
\setdefaultlanguage{german}
\setotherlanguages{russian,romanian}
\usepackage[style=german]{csquotes}

\usepackage{yfonts}
\usepackage{tipa}
% \usepackage{combelow} don't know whether it's compatible

\usepackage{setspace}
\usepackage{filecontents}

\usepackage{graphicx}
\usepackage{caption}
\captionsetup[table]{skip=5pt,font=footnotesize}

%%Tables%%
\usepackage{array}
\usepackage{booktabs}
\usepackage[table]{xcolor} % loads colortbl
\usepackage{multirow}
\usepackage{diagbox}
\newcommand{\specialcell}[2][c]{%
  \begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}

\usepackage{lipsum}

\usepackage{pdfpages}
\usepackage{hyperref}

\usepackage[footnote,printonlyused]{acronym}
\usepackage{footnote}
\makesavenoteenv{tabular}
\makesavenoteenv{table}
\deffootnote[1.0em]{1.0em}{1.0em}
    {\textsuperscript{\thefootnotemark}\,\enskip}

\setkomafont{disposition}{\mdseries\rmfamily}
\onehalfspacing
\renewcommand{\baselinestretch}{1.5}

\usepackage{tocbasic}
\KOMAoptions{toc=sectionentrydotfill} % replaces the experimental tocstyle (if you do not need dots for parts)
%\usepackage{tocstyle}
%\usetocstyle{allwithdot}

%%Bibliography%%
\usepackage[nottoc,notlot,notlof]{tocbibind}
\usepackage[backend=biber,style=authoryear,sorting=nyt]{biblatex}
\addbibresource{Bibliography.bib}
\DefineBibliographyStrings{ngerman}{references={Bibliographie}}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\DeclareNameAlias{sortname}{last-first}
\renewbibmacro*{date+extrayear}{%
  \iffieldundef{\thefield{datelabelsource}year}%
    {}{%
       \printtext[parens]{%
         \iffieldnum{edition}{\printfield[superedition]{edition}\global\clearfield{edition}}{}%
         \iffieldsequal{year}{\thefield{datelabelsource}year}%
           {\printdateextralabel}{\printfield{labelyear}\printfield{extrayear}}%
       }%
      }%
}
\renewcommand*{\bibpagespunct}{\addcomma\space}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
   {}{%
      \printnames[byeditor]{editor}%
      \setunit{\addspace}%
      \usebibmacro{byeditor+othersstrg}%
      \clearname{editor}\newunit%
   }%
   \usebibmacro{byeditorx}%
   \usebibmacro{bytranslator+others}%
}
\renewbibmacro*{byeditor+othersstrg}{\usebibmacro{editor+othersstrg}}
\renewbibmacro*{bytranslator+othersstrg}{\usebibmacro{translator+othersstrg}}
\renewbibmacro*{bytypestrg}[2]{%
  \iffieldundef{#1type}{\bibstring{#2}}{%
    \ifbibxstring{\thefield{#1type}}%
      {\bibstring{\thefield{#1type}}}{\printtext{\thefield{#1type}}}%
  }%
}
\renewcommand*{\multinamedelim}{/}
\renewcommand*{\finalnamedelim}{/}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}

\renewcommand*{\labelnamepunct}{\addcolon\space}
\newcounter{SprachB}
\newcommand{\SprachB}[1]{\refstepcounter{SprachB}\label{#1}}

\usepackage{etoolbox}
\AtBeginEnvironment{quote}{\singlespacing\footnotesize}

\DeclareRobustCommand{\cyrins}[1]{
    {\russianfont\textrussian{#1}}%
  }

\hyphenation{Script-Oralia}

\pagenumbering{arabic}
\pagestyle{scrheadings}
\cfoot{}
\ofoot{\pagemark}

\begin{document}
\setcounter{page}{3}
\begin{spacing}{1.3}

\lipsum

\cyrins{Лорем ипсум долор сит амет, меи ид бонорум инцоррупте диссентиас, пер еа елигенди тациматес ехпетендис. Регионе торяуатос ассуеверит ад еос. Яуем прима интеллегебат еос ат. Синт молестиае интерессет ут нам, сеа цу саепе лаборес патриояуе.}

IPA: {\ipafont [ɪtsɹilijizitutaɪp]}

\end{spacing}

\end{document}

相关内容