Einrichten mehrerer Sprachumgebungen in LaTeX

Einrichten mehrerer Sprachumgebungen in LaTeX

Angenommen, ich möchte ein LaTeX-Dokument mit zwei Sprachen, nämlich Thailändisch und Englisch, mit unterschiedlichen Schriftarten für jede Sprache. Nehmen wir an, ich möchte eine Schriftart namens'TH Sarabun Chula' für Thai während„Lateinisch-Neurömisch“(die Standardschriftart) bleibt für Englisch erhalten. Normalerweise würde ich hinzufügenSchriftspezifikationUndPolyglossiePaket, dann stellen Sie Thai als Hauptsprache ein und fügen Sie Englisch als zusätzliche Sprache hinzu unter\ESchriftart; wie folgt:

\usepackage[no-math]{fontspec}
\setmainfont{TH Sarabun Chula}
\XeTeXlinebreaklocale "TH"
\XeTeXlinebreakskip = 0pt plus 1pt  

\usepackage{polyglossia}
\setotherlanguages{english}
\newfontfamily\Efont{Latin Modern Roman}

Das'TH Sarabun Chula' Schrift ist kleiner im Vergleich zuLatein Modernes Römischesalso gab ich einen Befehl\lmbezogen auf\ESchriftartum die englische Version zu verkleinern und so den Größenunterschied zwischen den Schriftarten zu beseitigen.

\newcommand{\lm}[1]{
    {\small{\Efont{#1}}}}

Die meisten meiner Dokumente verwenden Thailändisch als Hauptsprache. Wenn ich also die englische Umgebung verwenden wollte, verwendete ich die\lmBefehl und ich habe bekommen, was ich wollte. Hier sind einige Teile des Codes für meine Vorlesungsnotizen, die diesen Befehl verwenden.

\begin{itemize}[noitemsep]
    \item งาน \lm{(work)} คือการถ่ายโอนพลังงานที่ทำให้โมเลกุลเคลื่อนตัวอย่างเป็นระเบียบ
    \item ความร้อน \lm{(heat)} คือการถ่ายโอนพลังงานที่ทำให้โมเลกุลเคลื่อนตัวอย่างไม่เป็นระเบียบ
\end{itemize}
สมมติว่าเราให้ความร้อนโดยต้มน้ำในหม้อจนเดือด จะสังเกตได้ว่าจะเกิดการสั่น เคลื่อนที่ไม่เป็นระเบียบ 
นั่นแสดงว่าความร้อนได้กระตุ้นให้โมเลกุลของไอน้ำสั่นและเคลื่อนตัวไปมาอย่างไม่เป็นระเบียบ 
เราอาจการเคลื่อนที่ดังกล่าวว่าเป็นการเคลื่อนที่ความร้อน \lm{(thermal motion)}

Ich könnte mit dieser Methode weitermachen, aber es ist so ermüdend, das hier zu schreiben.\lm{...}jedes Mal.Ich frage mich, ob es eine andere Möglichkeit gibt, zwischen zwei (oder mehreren) Sprachumgebungen zu wechseln, ohne Befehle wie die oben genannten festzulegen.(Geben Sie sie einfach in den Textkörper ein und die Schriftart wird sofort automatisch geändert.)

Ich bin für jede Hilfe im Voraus dankbar. Vielen Dank.

Antwort1

Bitte stellen Sie in Zukunft immer kompilierbaren Code und keine Code-Schnipsel zur Verfügung. So können Ihnen die Leute leichter helfen und die Wahrscheinlichkeit ist größer, dass die Antworten auf Ihr echtes Dokument anwendbar sind.

Sie können die Schriftart für Englisch skalieren. Das ist besser, als sich darauf zu verlassen, \smallda die Skalierung bei unterschiedlichen Größen korrekt ist. ( \smallübrigens ist dafür kein Argument erforderlich.)

Sie müssen LaTeX jedoch trotzdem anweisen, die Sprache zu wechseln. Dabei geht es nicht nur darum, die Schriftart zu ändern. Soweit ich weiß, polyglossiakann dies nicht automatisch erkannt werden, sodass Sie die alternative Sprache vorübergehend aktivieren müssen. Sie können \lmeine Verknüpfung erstellen, für \textenglish{}die ein Makro zum Wechseln bereitgestellt wird polyglossia, aber das bedeutet natürlich nicht, dass Sie weniger tippen müssen.

\documentclass[11pt,oneside,a4paper,titlepage]{article}
\usepackage[no-math]{fontspec}
\setmainfont{Noto Sans Thai}
\XeTeXlinebreaklocale "TH"
\XeTeXlinebreakskip = 0pt plus 1pt  

\usepackage{polyglossia}
\setmainlanguage{thai}
\setotherlanguage[variant=american]{english}
\newfontfamily\englishfont{Latin Modern Roman}[Scale=MatchLowercase]

\NewCommandCopy \lm \textenglish
\begin{document}
\begin{itemize}
  \item งาน \lm{(work)} คือการถ่ายโอนพลังงานที่ทำให้โมเลกุลเคลื่อนตัวอย่างเป็นระเบียบ
  \item ความร้อน \lm{(heat)} คือการถ่ายโอนพลังงานที่ทำให้โมเลกุลเคลื่อนตัวอย่างไม่เป็นระเบียบ
\end{itemize}
\end{document}

Um das Tippen zu reduzieren, erstellen Sie eine Tastenkombination in Ihrem bevorzugten Editor, damit Sie nicht \lm{}jedes Mal manuell schreiben müssen. Besser noch: Verwenden Sie „insert“ \textenglish{}oder etwas anderes, damit Ihr Code transparenter ist und Ihre Auszeichnung semantisch und nicht auf dem Aussehen basiert.

Aufgrund eines Okular-on-X-Fehlers wurde kein Bild bereitgestellt, aber die Ausgabe sieht mit Noto Sans Thai und LM trotzdem schrecklich aus. (Fehlende thailändische Zeichen und schrecklich unpassende Schriftstärken.) Der Code dient also rein illustrativen und nicht dekorativen Zwecken.

Antwort2

Sie können dies mit Babel tun (oder mit Polyglossia, wie @cfr bereits gepostet hat). Ein Vorteil der Verwendung von Babel mit LuaLaTeX besteht darin, dass es die Sprache, in der Sie tippen, automatisch erkennt und die Schriftart entsprechend ändert, ohne dass Tags oder Umgebungen erforderlich sind.

Dieses MWE skaliert auch alle Schriftarten auf die gleiche x-Höhe, aber Sie können die Schriftgröße anpassen, indem Sie Scale=vor jeder Schriftart, die dies erfordert, eine Option hinzufügen. Ich habe auch geladen unicode-math, aber fontspecund andere Mathematikpakete würden auch funktionieren.

\documentclass{article}
\tracinglostchars=3 % Make it an error for letters to be missing.
\usepackage{enumitem}
\usepackage{babel}
\usepackage{unicode-math}

\babelprovide[import, onchar=fonts ids]{english}
\babelprovide[import, main, onchar=fonts ids]{thai}

% TH Sarabun Chula is available from https://www.arts.chula.ac.th/ling/tag/ipa/

\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
\babelfont{rm}
          [Scale=1.0]{NewCM10-Regular}
\babelfont[thai]{rm}
          {TH Sarabun Chula}
\setmathfont{NewCMMath-Regular.otf}

\begin{document}
\begin{itemize}[noitemsep]
    \item งาน (work) คือการถ่ายโอนพลังงานที่ทำให้โมเลกุลเคลื่อนตัวอย่างเป็นระเบียบ
    \item ความร้อน (heat) คือการถ่ายโอนพลังงานที่ทำให้โมเลกุลเคลื่อนตัวอย่างไม่เป็นระเบียบ
\end{itemize}

สมมติว่าเราให้ความร้อนโดยต้มน้ำในหม้อจนเดือด จะสังเกตได้ว่าจะเกิดการสั่น เคลื่อนที่ไม่เป็นระเบียบ 
นั่นแสดงว่าความร้อนได้กระตุ้นให้โมเลกุลของไอน้ำสั่นและเคลื่อนตัวไปมาอย่างไม่เป็นระเบียบ 
เราอาจการเคลื่อนที่ดังกล่าวว่าเป็นการเคลื่อนที่ความร้อน (thermal motion)

This line is in English.
\end{document}

Neues Computer Modern + TH Sarabun Chula-Beispiel

verwandte Informationen