我已经关注使用 MacTeX 2011 的日语问题使用 TeX 设置 Ruby Furigana。
我想知道是否可以在原始字符的上方和下方设置 Furigana?
答案1
看来您可以将\rubysep
参数设置为负值来获得想要的效果。
%!TEX TS-program = xelatex
\documentclass[12pt]{article}
\usepackage{xeCJK}
\usepackage{ruby}
\setCJKmainfont{Hiragino Mincho Pro}
\renewcommand{\rubysep}{-4ex}
\pagestyle{empty}
\begin{document}
On this line \ruby{学}{がく}\ruby{生}{せい}
\end{document}
这是一个似乎允许同时进行顶部和底部的解决方案假名注音
%!TEX TS-program = xelatex
\documentclass[24pt]{letter}
\usepackage{xeCJK}
\usepackage{ruby}
\setCJKmainfont{Hiragino Kaku Gothic ProN}
\usepackage{setspace}
\usepackage[margin=0.2in]{geometry}
%%
\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
%%
\pagestyle{empty}
\begin{document}
%% implement double spacing
\renewcommand{\baselinestretch}{2}\large\normalsize
たんぼの \eruby{畦道}{あぜみち}{footpath}に、\eruby{タンポポ}{tanpopo}{dandelion}が
さいて いました。あまい においの する まっき
いろな 花です。そこへ ひらひらと 白い \eruby{チョウチョ}{chocho}{butterfly}が
あそびに きて、「タンポポさん、あなたは はろの
ブローチね。」 と いいました。白い チョウに そう いわれると、 「ほん
とうに そう 見えて。」 と、 タンポポも うれしく なりました。今度は、ヒ
バリが あそびに きて、「タンポポさん、 あなたは のはらの おほしさまみた
い。」 といいました。ヒバリに こう いわれると、 「まあ、 おほしさまだな
んで。」 と うれしく なりました。
\begin{tabular}{rl}
\eruby{畦道}{あぜみち}{footpath}に & along side a path \\
\eruby{タンポポ}{tanpopo}{dandelion}が さいて いました & a dandelion bloomed.
\end{tabular}
\end{document}
得出的结果为:
这个想法是先保存当前值\baselinestretch
,然后重置为 1。然后我调用\ruby{...}
两次,第二次使用\phantom
参数并在两次调用之间添加一个负宽度,以\ruby
给出两个假名注音表示一个汉字或其他假名块。
因为ruby
是根据baseline
值来垂直缩放事物,所以我认为所有垂直缩放都应该做同样的事情。
答案2
mathtools
这是一个只需要和字体的简单示例CJK
:
\documentclass[a4paper,10pt]{letter}
\usepackage[utf8]{inputenc}
\usepackage{CJKutf8}
\usepackage{mathtools}
\begin{document}
\begin{letter}
Show readings for each Kanji:
\begin{CJK}{UTF8}{goth} $\stackrel{\text{タ}}{\text{田}}$
$\stackrel{\text{ナカ}}{\text{中}}$\ \ $\stackrel{\text{ハ}}{\text{一}}$
$\stackrel{\text{ナ}}{\text{愛}}$ \end{CJK} \\
Show readings for each word:
\begin{CJK}{UTF8}{goth} $\stackrel{\text{タナカ}}{\text{田中}}$\ \
$\stackrel{\text{ハナ}}{\text{一愛}}$ \end{CJK} \\
Show readings under each word:
\begin{CJK}{UTF8}{goth} $\underset{\text{タナカ}}{\text{田中}}$\ \
$\underset{\text{ハナ}}{\text{一愛}}$ \end{CJK} \\
Show kuny\={o}mi above and ony\={o}mi below:
\Big
\begin{CJK}{UTF8}{goth} $\stackrel{\text{なか}}{\underset{\text{チュウ}}{\text{中}}}$ \end{CJK} \\
Show furigana above and translation below:
\begin{CJK}{UTF8}{goth} $\stackrel{\text{ちゅうごく}}{\underset{\text{China}}{\text{中国}}}$ \end{CJK} \\
Show romanji above and translation below:
\begin{CJK}{UTF8}{goth} $\stackrel{\text{Konbini}}{\underset{\text{Convenience Store}}{\text{コンビニ}}}$ \end{CJK} \\
\end{letter}
\end{document}
答案3
我使用 TikZ 设置假名。此命令可以轻松扩展以在上方和下方设置它们:
% !TeX program = xelatex
\documentclass{article}
\usepackage[AutoFallBack=true]{xeCJK}
% Hanazono is a free font downloaded from https://osdn.jp/projects/hanazono-font/ [02.02.2016]
\setCJKmainfont{HanaMinA}
\setCJKfallbackfamilyfont{rm}{HanaMinB}
\usepackage{tikz}
% characters with big height and depth
% to give different boxes the same vertical size
\newcommand{\vsizecorrectorhira}{\vphantom{もりぼゃ}}% epkyouka, HanaMinA
\newcommand{\vsizecorrectorkanji}{\vphantom{$\vert$}}
% commands for setting furigana below kanji
\newcommand{\furigana}[2]{% #1: kanji, #2: furigana
%\unskip
\begin{tikzpicture}[baseline=(kanji.base)]
\node(kanji)[
inner sep=0,
] {
\vsizecorrectorkanji%
#1%
};
\node(furigana)[
below of=kanji,
node distance=1em-2pt,
inner sep=0,
] {%
\tiny%
\vsizecorrectorhira%
#2%
};
\end{tikzpicture}%
%\ignorespaces
}
\newcommand{\furiganaAboveBelow}[3]{% #1: kanji, #2: furigana above, #3: furigana below
%\unskip
\begin{tikzpicture}[baseline=(kanji.base)]
\node(kanji)[
inner sep=0,
] {
\vsizecorrectorkanji%
#1%
};
\node(furigana-above)[
above of=kanji,
node distance=1em,
inner sep=0,
] {%
\tiny%
\vsizecorrectorhira%
#2%
};
\node(furigana-below)[
below of=kanji,
node distance=1em-2pt,
inner sep=0,
] {%
\tiny%
\vsizecorrectorhira%
#3%
};
\end{tikzpicture}%
%\ignorespaces
}
\begin{document}
Japanese uses different alphabets, one of those is \furigana{漢字}{かんじ} (Kanji).
Kanji can have different readings: \furiganaAboveBelow{日}{にち}{ひ}.
\end{document}