XeLaTeX - 天城文标题问题

XeLaTeX - 天城文标题问题

我目前正在进行一个项目,其中我使用 RomDev 映射技术通过 XeLaTeX 打印使用罗马音译的天城文字符。

最小工作示例如下:

\usepackage{polyglossia}
%%%%%%%%%%%%%%%%%%%%%%%
\setmainfont{Lato}
\newfontfamily\fc{Lohit Devanagari}[Mapping=RomDev,Script=Devanagari]
\newfontfamily\fsh{Lohit Devanagari}[Script=Devanagari]%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\chapter{\fc{arjuna viṣāda yoga} -- Arjuna viṣāda yoga}
\begin{center}
\textbf{\textbar{}\textbar{} 1.1 \textbar{}\textbar{}}
    
\fc{
\textit{dhṛtarāṣṭra uvāca}

dharmakṣetre kurukṣetre samavetā yuyutsavaḥ |

māmakāḥ pāṇḍavāścaiva kimakurvata sañjaya}
\end{center}
    
\begin{center}

\textit{dhṛtarāṣṭra uvāca}

dharma-kṣetre kuru-kṣetre 

samavetā yuyutsavaḥ

māmakāḥ pāṇḍavāś caiva

kim akurvata sañjaya
\end{center}

\begin{center}
\textbf{    \textbar{}\textbar{} 1.2 \textbar{}\textbar{}}

 \fc{\textit{sañjaya uvāca}
    
    dṛṣṭvā tu pāṇḍavānīkaṃ  vyūḍhaṃ duryodhanastadā | \textbar{}
    
    ācāryamupasaṅgamya          rājā vacanamabravīt}
\end{center}
\begin{center}
 
\textit{sañjaya uvāca}

dṛṣṭvā tu pāṇḍavānīkaṁ

vyūḍhaṁ duryodhanas tadā

ācāryam upasaṅgamya

rājā vacanam abravīt
\end{center}



\begin{center}
\textbf{\textbar{}\textbar{} 1.3 \textbar{}\textbar{}}
\\ \fc{paśyaitāṃ pāṇḍuputrāṇāmācārya mahatīṃ camūm 

vyūḍhāṃ drupadaputreṇa  tava śiṣyeṇa dhīmatā}

\end{center}
\begin{center}
paśyaitāṁ pāṇḍu-putrāṇām

ācārya mahatīṁ camūm

vyūḍhāṁ drupada-putreṇa

tava śiṣyeṇa dhīmatā
\end{center}

\begin{center}
\textbf{    \textbar{}\textbar{} 1.4 \textbar{}\textbar{}}
\\ \fc{atra śūrā maheṣvāsā  bhīmārjunasamā yudhi
    
    yuyudhāno virāṭaśca     drupadaś ca mahārathaḥ

}
\end{center}

\begin{center}
    atra śūrā maheṣvāsā
    
    bhīmārjuna-samā yudhi
    
    yuyudhāno virāṭaś ca
    
    drupadaś ca mahā-rathaḥ
\end{center}

\begin{center}
    \textbf{    \textbar{}\textbar{} 1.5 \textbar{}\textbar{}}
    \\ 
\fc{dhṛṣṭaketuścekitānaḥ kāśirājaśca vīryavān 
    
    purujit kuntibhojaśca śaibyaśca narapuṅgavaḥ}
\end{center}
\begin{center}
    
    dhṛṣṭaketuś cekitānaḥ
    
    kāśirājaś ca vīryavān
    
    purujit kuntibhojaś ca
    
    śaibyaś ca nara-puṅgavaḥ
\end{center}

\begin{center}
    \textbf{    \textbar{}\textbar{} 1.6 \textbar{}\textbar{}}
    \\ 
\fc{yudhāmanyuśca vikrānta uttamaujāśca vīryavān

saubhadro draupadeyāśca sarva eva mahārathāḥ}
\end{center}
\begin{center}

yudhāmanyuś ca vikrānta

uttamaujāś ca vīryavān

saubhadro draupadeyāś ca

 sarva eva mahā-rathāḥ
\end{center}


\begin{center}
\textbf{    \textbar{}\textbar{} 1.7 \textbar{}\textbar{}}
\\ \fc{asmākaṃ tu viśiṣṭā ye tānnibodha dvijottama
    
    nāyakā mama sainyasya   saṃjñārthaṃ tānbravīmi te}\\
\end{center}
\begin{center}
asmākaṁ tu viśiṣṭā ye

tān nibodha dvijottama

nāyakā mama sainyasya

saṁjñārthaṁ tān bravīmi te
\end{center}


\end{document}

我分享了一个链接,其中有确切问题的屏幕截图。它显示了标题是如何混乱的。此外,我们还可以看到我们如何能够完美地生成罗马音译和梵文脚本。

混乱标题的屏幕截图

我的问题是:

  1. 为什么标题中的梵文字符会混乱?如何纠正?
  2. 我可以让标题不采用斜体+大写格式吗?

提前致谢。

答案1

修改后的答案:

通过评论中提供的 MWE 代码,可以更清楚地了解正在发生的事情。

幸运的是,fancyhdr允许自定义页眉和页脚的软件包在文档中解释了默认页面样式\textsl(倾斜文本)和\MakeUppercase页眉等内容。

xelatex 中的映射是最后一步,在本例中\MakeUppercase是在命令应用于章节标题之后。

\MakeUppercase正在转换rR等,并且映射文件未设置为定义输入R应映射到哪个字形,因此它没有被映射,并且以它本身的形式出现在输出中。其他未映射的字符也是如此。映射的字符(如A)被转换为 Deva OK。

fancyhdr该包提供了一些关于对 TeX 标记机制所使用的命令进行更改的效果的教程示例。

其中一个例子是:

\renewcommand{\chaptermark}[1]{%
\markboth{\chaptername
\ \thechapter.\ #1}{}}

在这种情况下,这对我们来说是一个合适的解决方案,我们用它来实现这个:

章节标题

平均能量损失

%compile with xelatex for mapping to take effect
\documentclass{book} 
\renewcommand{\chaptermark}[1]{%
\markboth{\chaptername
\ \thechapter.\ #1}{}}
\usepackage{fontspec, lipsum}   
\newfontfamily\fc{Lohit Devanagari}[Mapping=RomDev,Script=Devanagari]  
\newfontfamily\fsh{Lohit Devanagari}[Script=Devanagari]   
%========================================  
 \begin{document}   
 \chapter{sample-{\fc bhāratam}-{\fsh भारतम्}}   
 \lipsum[1-25]   
 \end{document}

原始答案:

使用.map11 年前这里的文件: https://github.com/somadeva/RomDev 并使用 teckit_compile 编译为.tec二进制文件:

(1)要通过 RomDev 映射获取天城文字符,请使用 RomDev 映射中的拉丁字符输入。

romdev1

R未被映射。

romdev2

R+ 元音被映射,r+ 辅音被映射等等,但R+ 辅音没有被映射。

(2) 标题问题的答案取决于所使用的软件包和代码。请提供一个小型但可行的示例,以便人们可以查看并测试他们的答案。

平均能量损失

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\setsansfont{Noto Sans}
\newfontfamily\fc{Shobhika}[Mapping=RomDev,Script=Devanagari]
\newfontfamily\fsh{Shobhika}[Script=Devanagari]
%========================================
\begin{document}
\begin{tabular}{ccc}
{\fc arjun} & \fc Arjun & \fc ARJUN \\
arjun & Arjun & ARJUN \\
\end{tabular}

\section{{\fc arjun} Arjun}

\begin{tabular}{cc}
Map from & Map to \\
a            & \fc a   \\
r            & \fc r  \\
R            & \fc R\\
ro            & \fc ro  \\
Ro            & \fc Ro\\
rj            & \fc rj  \\
Rj            & \fc Rj\\
Ṛ            & \fc Ṛ\\
Ṝ             & \fc Ṝ\\
\end{tabular}

\end{document}

相关内容