我正在编写一个包含多种语言的文档,包括英语和日语(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 相当丑陋。
请注意,第 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 页面很棒