英语和日语数字问题

英语和日语数字问题

我正在编写一个包含多种语言的文档,包括英语和日语(polyglossia、xeLatex、Windows 7、TeXLive、TeXWorks)。

对于英语,我更喜欢经典的 Hoefler Text 字体,而且由于英语是主要语言,不幸的是它也会影响日语环境中出现的数字。结果输出非常不匹配,数字在水平文本中的大小和位置似乎不正确,在垂直文本中产生错误的间距。这是一个简单的例子:

 \documentclass[12pt]{article}
 \usepackage[a4paper,vmargin=2cm,hmargin=2cm,showframe=false]{geometry}
 \usepackage{xunicode}

 \usepackage{fontspec}

 \usepackage{polyglossia}

 \usepackage{setspace}

 \setmainlanguage{english}

 %Setting main fonts for English (Latin alphabet) text
 \setmainfont[Mapping=tex-
 text,Ligatures=TeX,Scale=1,Color=black,FakeBold=0,AutoFakeSlant=0]{Hoefler 
 Text}
 \setsansfont[Ligatures=TeX]{Geneva}
 \setmonofont{Noto Mono}

 %-------------------------------------------------------%%%

 %%% CJK requires a different treatment
 \usepackage[space,AutoFallBack=true]{xeCJK}

 \usepackage[CJK,overlap]{ruby} % use \ruby{kanji}{kana} to set Furigana

 % position and size of horizontal Furigana (global): below/right
 \renewcommand{\rubysep}{-4ex}
 \renewcommand{\rubysize}{0.5}

 \XeTeXlinebreaklocale "ja"
 \XeTeXlinebreakskip=0em plus 0.1em minus 0.01em
 % we also drop paragraph indentation in order to get proper alignment
 \setlength{\parindent}{0pt}

 \setCJKmainfont[Mapping=tex-text,Script=CJK,BoldFont=MS 
 Gothic,ItalicFont=Meiryo,Scale=1,FakeBold=0]{Kozuka Mincho Pro}
 \setCJKfamilyfont{cjk-vert}[Script=CJK,RawFeature=vertical]{Kozuka Gothic 
 Pro M} %vertical font assignment\
 \newCJKfontfamily\strokefont{KanjiStrokeOrders} %for kanji stroke orders
 \setCJKsansfont{Noto Sans CJK SC}
 \setCJKmonofont{cwTeXFangSong}

 \newenvironment{japanese}


 \begin{document}

 \section{Japanese 1}

 \subsection{Horizontal and Vertical Furigana}

 \begin{japanese}

 \foreignlanguage{english}{An example of Furigana under the character on 
 this horizontal line} 3 \ruby{学}{がく}\ruby{生}{せい}. \par%

 \foreignlanguage{english}{An example of vertical text with vertical 
  Furigana:}\\
 \begin{figure}[ht!]
 \begin{center}
 \rotatebox{-90}{
 \begin{minipage}{0.32\textwidth}
 \CJKfamily{cjk-vert} %setting font locally
 \doublespacing  %setting double space for vertical alignment
 \renewcommand{\rubysep}{-5ex} %setting ruby spacing locally
 \renewcommand{\rubysize}{0.5} %setting ruby size locally
 きのう、\textbf{ラース}は \ruby{山}{やま}\ruby{本}{もと}と あいました。 
「こんにちは、\ruby{山}{やま}\ruby{本}{もと}さん。おげんき 100 ですか。」
 \end{minipage}
 }
 \end{center}
 \end{figure}

 \end{japanese}

 \section{Japanese 2}

 \begin{japanese}

 \subsection{ご使用のまえに 1000} 

 本機は、AC(交流)100 V専用の機械です。絶対に100 V以上の電 圧やDC (直流)を加え
 ないでください。

 \end{japanese}

 \end{document}   

生成的 PDF 相当丑陋。PDF
请注意,第 1 节中水平注音假名前的数字“3”在行上的位置不对。请注意,垂直小页面环境中的数字“100”太小,位置也很奇怪,因此数字上方和下方的间距不同。子节标题中的数字“1000”也显得不协调。最后,对于第 2.1 节中的典型文本,数字“100”再次显得太小,与该句子中的其他字符完全不兼容。

是否可以独立于主环境定义日语环境的数字/位数?是否可以解决数字水平和垂直对齐不一致的问题?

最后,虽然章节的编号看起来不错,但我不喜欢小节的数字大小,也不喜欢标题和数字之间的水平间距。是否可以控制此间距?

任何帮助将不胜感激!!

答案1

您是否尝试过使用全角数字?

当您使用正常的 AZ 和 0-9、.?!()以及其他基本的“英语” ASCII 字符时,它们是成比例的(每个字符都有唯一的宽度)并且在垂直时旋转。

如果您正在编写法语或俄语西里尔文的摘录,也会发生同样的事情。

当您书写中文和日文时,如果内容是句子的一部分,则应始终使用全角字符。全角 I、A、1、O 和 ? 都是相同宽度。它们的大小都与一个假名、汉字或汉字块相同。它们不会旋转。

对于垂直韩语,您也可以使用全角字符。

........

中国和IMF。 (全角)

........

我读《悲惨世界》。 (正常)

........

当您将第一个句子旋转为垂直线时,每个字符看起来都一样。当您将第二个句子旋转为垂直线时,法语书名将旋转。这对于阿拉伯语尤其重要。在阿拉伯语文本中,字母必须以草书方式连接。文本块必须连在一起。您不能有一个看起来很正常的阿拉伯字母,然后在下面直接放一个看起来很正常的阿拉伯字符。这就是为什么全角只存在于 AZ 和 0-9 中,它们在中文、韩语和日语中使用。对于其他脚本或英语短语(令人惊讶的是,对于拼音),请使用正常宽度。没有全角版本的重音符号、预组合字符、阿拉伯语、希腊语、梵文、柬埔寨语等。

全角字符在 Unicode 中具有唯一的代码点。

你的 IME 应该会有所帮助,或者你可以从https://lingojam.com/FullWidthTextGenerator

另外,请注意这一点。全角字符是等宽的,但在垂直文本中所有字符都会略有变化(有时会从底部向右移动,如小假名 (tsu)。其他字符会旋转,例如 ( ) 和片假名元音延长符。

这个 Unicode 页面很棒

https://www.unicode.org/reports/tr50/

相关内容