我正在嘗試編寫一個在 Latex Beamer 中使用 unicode 字體的範例。產生的 pdf 不顯示印地語字符,而是顯示該位置的空格。但是,當我在 documentclass[article] 中使用相同的程式碼時,它會產生正確的結果。誰能幫忙看看問題出在哪裡嗎?
\documentclass[xetex]{beamer}
\usetheme{Warsaw}
\usepackage{verbatim}
\usepackage{verbatimbox}
\usepackage{subfigure}
\usepackage{framed,color}
\definecolor{shadecolor}{rgb}{0.93,0.91,0.91}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{xunicode} %Unicode extras!
\usepackage{xltxtra} %Fixes
%\setmainfont{Bitstream Charter}
\setdefaultlanguage{english}
\setotherlanguage{hindi}
\newfontfamily\hindifont[Script=Devanagari]{Lohit Hindi}
\begin{document}
\begin{frame}[fragile]
\frametitle{Writing unicode text: use of \textit{.ttf} files}
\begin{shaded}
\begin{verbatim}
\documentclass{article}
\usepackage{fontspec}
\begin{document}
\setmainfont{Lohit Hindi}
\texthindi{देवनागरी में लिखना बहुत आसान है |}
\end{document}
\end{verbatim}
\end{shaded}
This produces
\texthindi{देवनागरी में लिखना बहुत आसान है |}
\end{frame}
\end{document}
答案1
Beamer 預設使用無襯線字體。這意味著您必須定義\hindifontsf
而不是\hindifont
定義適用於文章類的。
或者,您可以透過使用 來指示 Beamer 使用襯線字體\usefonttheme{serif}
。
% !TeX TS-program = xelatex
\documentclass[xetex]{beamer}
\usetheme{Warsaw}
%\usefonttheme{serif}
\usepackage{polyglossia}
\usepackage{fontspec}
\setdefaultlanguage{english}
\setotherlanguage{hindi}
\newfontfamily\hindifontsf[Script=Devanagari]{Lohit Hindi}
\begin{document}
\begin{frame}
\texthindi{देवनागरी में लिखना बहुत आसान है |}
\end{frame}
\end{document}