请参阅以下示例,改编自在原文上方和下方排版注音假名
\documentclass{report}
\usepackage{xeCJK}
\usepackage{ruby}
\usepackage{setspace}
%%
\makeatletter
\newcommand{\defaultrubysep}{0.25ex}
\renewcommand{\rubysep}{\defaultrubysep}
\newcommand{\english}{}
\renewcommand{\english}{-3.2ex}
\newlength{\kanji@kana@no@nagasa}
\newcommand{\eruby}[3]{%
%% save the current baselinestretch
%% and reset value to "1"
\let\oldbaselinestretch=\baselinestretch%
\renewcommand{\baselinestretch}{1}%
\large\normalsize%
\ruby{#1}{#2}%
%% reassign \rubysep to allow furigana below
\renewcommand{\rubysep}{\english}%
%% measure the width of the first argument
%% move to the left by that distance
\settowidth{\kanji@kana@no@nagasa}{#1}%
\hspace*{\dimexpr-\kanji@kana@no@nagasa\relax}%
\ruby{\phantom{#1}}{#3}%
%% restore the original \rubysep and \ baselinestretch
\renewcommand{\rubysep}{\defaultrubysep}%
\renewcommand{\baselinestretch}{\oldbaselinestretch}
\large\normalsize%
}
\makeatother
%%
\begin{document}
\eruby{たんぼの}{Japanese}{Ruby}
\end{document}
这会产生如下输出
现在,我想使用“ruby”来表示拉丁字符(正文中只使用 CJK 字符),因此我不希望字母之间有这么大的间距。有没有办法让 ruby 文本中的间距正常?
使用类似 的方法\eruby{たんぼの}{\textsf{Japanese}}{\textsf{Ruby}}
可以在无衬线字体中提供正常间距,但对于 则不起作用。定义后跟使用等方法\textrm
也不起作用。\newfontfamily{\latinfont}{Latin Modern Roman}
{\latinfont Japanese}