LaTeX で複数の言語環境を設定する

LaTeX で複数の言語環境を設定する

タイ語と英語の2つの言語で、それぞれの言語に異なるフォントを使用したLaTeX文書を作成するとします。'TH サラブン チュラ'タイ語の場合は「ラテン現代ローマ字」英語の場合は(デフォルトのフォント)がそのまま残ります。通常、私が行うことはフォントスペックそして多言語症パッケージをインストールし、タイ語をメイン言語に設定し、英語を追加言語として追加します。\Eフォント; 次のように:

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

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

これ'TH サラブン チュラ'フォントはラテン語 現代ローマそこで私は命令を下した\lmに基づく\Eフォント英語のフォントを小さくして、フォント間のサイズの違いをなくします。

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

私の文書のほとんどはタイ語をメイン言語として使用している。そのため、英語環境を使いたいときは、\lmコマンドを実行して、望みどおりの結果を得ました。以下は、このコマンドを使用する講義ノートのコードの一部です。

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

このやり方で続けることもできますが、これを書くのはとても疲れます\lm{...}毎回。上記のようなコマンドを設定せずに、2 つ (または複数) の言語環境間を遷移できる他の方法はあるのでしょうか。(本文に入力するだけで、すぐに書体が自動的に変更されます。)

ご協力いただければ幸いです。ありがとうございます。

答え1

今後は、スニペットではなく、常にコンパイル可能なコードを提供してください。これにより、人々が支援しやすくなり、回答が実際のドキュメントに適用できる可能性が高くなります。

\small英語のフォントを拡大縮小できます。これは、さまざまなサイズで適切に拡大縮小されるため、頼りにするよりも好ましい方法です。(\smallちなみに、引数は必要ありません。)

ただし、言語を切り替えるには、LaTeX に指示する必要があります。これは、単にフォントを変更するだけの問題ではありません。私の知る限り、polyglossiaこれを自動的に検出することはできないため、代替言語を一時的に有効にする必要があります。切り替え用に によって提供されるマクロ\lmのショートカットを作成できますが、もちろん、入力が少なくなるわけではありません。\textenglish{}polyglossia

\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}

入力を減らすには、選択したエディターでキーの組み合わせを作成し、\lm{}毎回手動で入力する必要がないようにする。さらに良いのは、挿入\textenglish{}などを使用して、コードの透明性を高め、マークアップを外観ベースではなくセマンティックにすることである。

Okular-on-X のバグのため画像は提供されませんが、Noto Sans Thai および LM では出力がとにかくひどい状態です。(タイ語の文字が欠落しており、太さがひどく不一致です。) したがって、コードは装飾用ではなく、純粋に説明用です。

答え2

これは Babel (または、@cfr がすでに投稿している Polyglossia) で実行できます。Babel を LuaLaTeX で使用する利点の 1 つは、タグや環境を必要とせずに、入力している言語を自動的に検出し、それに応じてフォントを変更できることです。

この MWE は、すべてのフォントを同じ x 高さに拡大縮小しますが、Scale=必要な各フォントの前にオプションを追加することで、フォント サイズを調整できます。 もロードしましたunicode-mathが、fontspecその他の数学パッケージも同様に機能します。

\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}

新しいコンピュータモダン + TH サラブンチュラサンプル

関連情報