xpinyin フォント変更

xpinyin フォント変更

私は、xpinyin中国語の文字の上に中国語の音声表記であるピンインを表示するためにこのパッケージを使用しています。これはうまく機能しているようですが、音声表記のフォントを変更したいのです。パッケージドキュメントただし、これは中国語のみです。

\xpinyinsetup{ratio=0.5, vsep=1em, multiple={\color{red}}, font=Liberation Sans}

ドキュメントの中国語はまだ私には難しすぎるので、単純に次のように動作すると推測します。

  1. ピンインをメインフォントと同じサイズにする
  2. 1emの垂直分離、ピンインは下の漢字から1em分離される
  3. 1つの文字に複数のピンインがある場合(多音字)、最も可能性の高いピンインが赤色で表示されます。
  4. フォントを使用するLiberation Sans

Liberationただし、との間に単にスペースを空けることができるかどうかはわかりませんSans。主な問題は、次の結果です。

ボーカルが欠けている

(この画像では、Arial読みやすいほど短い名前なので使用しました。) そこで、「これはフォントの問題に違いない」と考えました。Libre Liberation SansOffice のフォントを使用して、欠落しているボーカルをトーン付きで表示できるかどうかを確認しました。そこでは、フォントの変更を示さずに表示できましたが、この情報が隠されているかどうかはわかりません。フォントでは実際にボーカルを表示できないのかもしれません。

また、フォント名が音声スクリプトに何らかの形で追加されていることにも注意してください。これは意図的なものかもしれませんが、むしろバグのように思えます。ただし、ドキュメントは理解できません。

最初の文字の音声表記にフォント名がなくても、xpinyin を正しく表示するにはどうすればよいですか?

以下にコード例を示します。

\documentclass[10pt, a4paper, parskip=full]{article} % twoside can be added if two sided margin layout is desired
\usepackage[a4paper,vmargin={30mm, 20mm},hmargin={30mm, 25mm},includeheadfoot]{geometry}
\usepackage{amsmath}

\usepackage[UTF8]{ctex}
\usepackage{xpinyin}
\xpinyinsetup{ratio=0.5, vsep=1em, multiple={\color{red}}, font=Liberation Sans}

\usepackage{fontspec,xunicode}
\setCJKmainfont[]{WenQuanYi Micro Hei}

\defaultfontfeatures{Mapping=tex-text, Scale=MatchLowercase} % what does this do? -- influences how quotes are rendered
\setmainfont[Scale=1]{Open Sans}
\setmonofont{Liberation Mono}
\DeclareMathSizes{10}{10}{8}{7}

\usepackage[english, ngerman]{babel}
\selectlanguage{ngerman}

\begin{document}

\begin{pinyinscope}
我有一个送给你的礼物.
\end{pinyinscope}

\end{document}

答え1

回避策を見つけました。おそらくこれが解決策として考えられます:

\usepackage{xpinyin}
\xpinyinsetup{ratio={.7}, hsep={.5em plus .1em}, vsep={1.1em}, multiple={\color{red}}}

% redefine the pinyinscope environment, so that it uses a font which can display all pinyin syllables and vocals with diacritics
\newenvironment{pinyinscopeboxed}%
{\setmainfont{DejaVu Sans}\begin{pinyinscope}}%
{\end{pinyinscope}\setmainfont{Open Sans}}

これにより、環境の開始時にピンインのすべての発音区別符号を表示できるフォントにフォントが変更されpinyinscopeboxed、環境の終了時に別のフォントに戻ります。特定のフォントは必要に応じて構成する必要があり、変更前にメインフォントを格納する変数を使用して、その変数を使用して切り替えることで改善できる可能性がありますが、その方法はまだわかりません。その方法、またはソリューション全般を改善する方法についての提案があれば幸いです。

fontこれにより、のオプションを使用しないため、フォント名がルビ内に表示されるバグのある動作も回避されますxpinyin

編集#1

Qing Lee さんが、これを正しく行う方法について教えてくれました。

環境を更新せず、代わりにパッケージを使用する場合は以下を実行できますfontspec

\usepackage{fontspec}
\newfontfamily{\DVS}{DejaVu Sans}
\usepackage{xpinyin}
\xpinyinsetup{ratio={.7}, hsep={.5em plus .1em}, vsep={1.1em}, multiple={\color{red}}, pysep={.2em}, font=\DVS}

( 以外の値は、font=単なる例です。)

関連情報