配置和自动纠正双语写作中的引号

配置和自动纠正双语写作中的引号

我正在使用该软件包编写一份双语(英语+孟加拉语)文档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}

输出: 我的 MWE 输出的屏幕截图

在这里,检查引号错误出现的红色标记。我想配置引号样式以使我的Section 1Section 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)定义映射字体

latexbanglapolyglossia在后台使用,进而调用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}

相关内容