LaTeX에서 다중 언어 환경 설정

LaTeX에서 다중 언어 환경 설정

태국어와 영어, 각 언어마다 다른 글꼴이 포함된 LaTeX 문서를 원한다고 가정해 보겠습니다. 내가 이름이 붙은 글꼴을 원한다고 가정해 봅시다.'TH 사라분 출라' 태국인에게는'라틴 현대 로마'(기본 글꼴)은 영어로 유지됩니다. 일반적으로 내가 할 일은 추가하는 것입니다.글꼴 사양그리고다언어증패키지를 선택한 다음 기본 언어로 태국어를 설정하고 아래에 영어를 추가 언어로 추가하세요.\Efont; 다음과 같이:

\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기반으로\Efont영어를 작게 만들어 글꼴 간의 크기 차이를 제거합니다.

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

내 문서의 대부분은 태국어를 주요 언어로 사용합니다. 그래서 영어 환경을 사용하고 싶을 때마다\lm명령을 내리고 내가 원하는 것을 얻었습니다. 다음은 이 명령을 사용하는 강의 노트의 코드 일부입니다.

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

이 방법을 계속 사용할 수 있지만 이 글을 쓰는 것이 너무 피곤합니다\lm{...}매번.위와 같은 명령을 설정하지 않고 두 개(또는 여러 개) 언어 환경 간에 전환할 수 있는 다른 방법이 있는지 궁금합니다.(본문에 입력만 하면 바로 자동으로 서체가 변경됩니다.)

미리 도움을 주시면 감사하겠습니다. 감사합니다.

답변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)을 사용하여 이 작업을 수행할 수 있습니다. LuaLaTeX와 함께 Babel을 사용하는 것의 한 가지 장점은 태그나 환경이 필요 없이 입력 중인 언어를 자동으로 감지하고 그에 따라 글꼴을 변경할 수 있다는 것입니다.

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

New Computer Modern + TH 사라분 출라 샘플

관련 정보