我正在使用该软件包编写一份双语(英语+孟加拉语)文档latexbangla
。
Kalpurush
(对于以下 MWE,请从此处下载字体:https://www.omicronlab.com/bangla-fonts.html)
% !TEX program = xelatex
\documentclass{book}
\usepackage[banglamainfont=Kalpurush, banglattfont=Kalpurush]{latexbangla}
\setdefaultlanguage[numerals=Bengali, changecounternumbering=true]{bengali}
\usepackage[autostyle]{csquotes}
\begin{document}
\section*{Section 1}
I said,```মানুষ মাত্রই ভুল করে'- এটাকে ইংরেজিতে অনুবাদ কর".\\
He replied, ```To err is human' - It's an easy one. আরো কঠিন কিছু জিজ্ঞেস করেন".
\section*{Section 2}
I said,"'মানুষ মাত্রই ভুল করে'- এটাকে ইংরেজিতে অনুবাদ কর".\\
He replied, "'To err is human' - It's an easy one. আরো কঠিন কিছু জিজ্ঞেস করেন".
\section*{Section 3}
I said,``ইংরেজিতে অনুবাদ কর - `মানুষ মাত্রই ভুল করে'".\\
He replied, ```To err is human' - It's an easy one. আরো কঠিন কিছু জিজ্ঞেস করেন".
\end{document}
在这里,检查引号错误出现的红色标记。我想配置引号样式以使我的Section 1
和Section 2
看起来相同,而无需更改部分内的代码。另外,检查我的中的红色标记Section 3
。在孟加拉语文本之前,双引号显示为两个单独的单引号。我该如何解决这些问题?我该怎么做才能将各处的花括号引号切换为中性引号?
答案1
如果需要保留latexbangla
,则重新定义 xetex 映射即可,这样 `` and " 将同时产生 ” 而不是 “ and ”(同样,` and ' 将同时产生 ' 而不是 ' and '),同时保留其他连字符。
蓝色是为了突出显示字体的来源。
请注意,可以将单右引号和撇号视为单独的字符(例如,直字符与弯字符),但需要使用标记/代码/映射规则来区分它们。
有几件事需要做。
(1)地图文件
latexbangla
使用ucharclasses
,这需要 xetex,而 xetex 又可以理解映射文件。
从这里改编答案
如何以普通字体显示直引号? 关于如何修改映射文件以保留其他标准连字符,的副本tex-text.map
将包含以下替代行:
;U+0027 <> U+2019 ; ' -> right single quote
;U+0027 U+0027 <> U+201D ; '' -> right double quote
;U+0022 > U+201D ; " -> right double quote
U+0060 <> U+0027 ; ` -> straight single quote
U+0060 U+0060 <> U+0022 ; `` -> straight double quote
假设新.map
文件名为tex-text3.map
。使用 进行编译teckit_compile.exe
将生成tex-text3.tec
一个二进制文件 。
(2)定义映射字体
latexbangla
polyglossia
在后台使用,进而调用fontspec
。
该文件通过命令选项.tec
来调用:例如。Mapping=
fontspec
\newfontfamily\myrmlat[Mapping=tex-text3,Colour=blue]{Noto Serif}
(3)修改latexbangla
latin
环境
latexbangla
定义latin
具有传统 OT1 字体编码的环境(出于某种原因)。
\newenvironment{latin}
{\fontencoding{OT1}\ifx\f@family\btt@@name\fontfamily{lmtt}
\else\fontfamily{lmr}\fi\selectfont}\relax
由于它是 xelatex,因此我们可以使用 Unicode。Xelatex 也可以理解 truetype/opentype 字体,因此可以使用现代字体,包括我们的映射字体(如果需要,可以是Latin Modern Roman
和的 TTF/OTF 版本)。Latin Modern Mono
\makeatletter
\renewenvironment{latin}
{\ifx\f@family\btt@@name\myttlat
\else\myrmlat\fi}\relax
\makeatother
平均能量损失
% !TEX program = xelatex
\documentclass{book}
\usepackage[table]{xcolor}
\usepackage[banglamainfont=Kalpurush, banglattfont=Atma]{latexbangla}
\setdefaultlanguage[numerals=Bengali, changecounternumbering=true]{bengali}
%\newenvironment{latin}
%{\fontencoding{OT1}\ifx\f@family\btt@@name\fontfamily{lmtt}
%\else\fontfamily{lmr}\fi\selectfont}\relax
%(E)
\newfontfamily\myrmlat[Mapping=tex-text3,Colour=blue]{Noto Serif}
\newfontfamily\myttlat[Mapping=tex-text3,Colour=green]{Noto Sans Mono}
\makeatletter
\renewenvironment{latin}
{\ifx\f@family\btt@@name\myttlat
\else\myrmlat\fi}\relax
\makeatother
\begin{document}
\begin{tabular}{lll}
\rowcolor{blue!7}
Character & now maps to & instead of \\
\hline\\
\Large\textasciigrave &
\Large ` &
\Large\symbol{8216} \\
\Large\textasciigrave\textasciigrave &
\Large `` &
\Large\textquotedblleft \\
\Large\textquotesingle &
\Large ' &
\Large\symbol{8217} \\
\Large\textquotedbl &
\Large " &
\Large\textquotedblright \\
\hline
\end{tabular}
\bigskip
so that
`x' = 'x',``y" = "y".
\section*{Section 1}
I said,```মানুষ মাত্রই ভুল করে' - এটাকে ইংরেজিতে অনুবাদ কর".\\
He replied, ```To err is human' - It's an easy one. আরো কঠিন কিছু জিজ্ঞেস করেন".
\section*{Section 2}
I said,"'মানুষ মাত্রই ভুল করে' - এটাকে ইংরেজিতে অনুবাদ কর".\\
He replied, ```To err is human' - It's an easy one. আরো কঠিন কিছু জিজ্ঞেস করেন''.
\section*{Section 3}
I said,``ইংরেজিতে অনুবাদ কর - `মানুষ মাত্রই ভুল করে'".\\
He replied, ```To err is human' - It's an easy one. আরো কঠিন কিছু জিজ্ঞেস করেন".
\end{document}