如何在 ruby​​/furigana 中使用正常字母间距?

如何在 ruby​​/furigana 中使用正常字母间距?

请参阅以下示例,改编自在原文上方和下方排版注音假名

\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}

相关内容