xpinyin alterar fonte

xpinyin alterar fonte

Estou usando o pacote xpinyinpara exibir pinyin, uma escrita fonética chinesa acima dos caracteres chineses. Isso parece funcionar bem, mas quero alterar a fonte da escrita fonética. Encontrei um código nodocumentação do pacote, embora esse seja apenas chinês:

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

O chinês na documentação ainda é de nível muito alto para mim, então acho que é isso que faz:

  1. faça o pinyin hal do tamanho da fonte principal
  2. separação vertical de 1em, pinyin é separado por 1em do caractere chinês abaixo
  3. se houver vários pinyins para um caractere (多音字) então o pinyin será o mais provável e será colorido em vermelho
  4. use a fonteLiberation Sans

No entanto, não sei se você pode simplesmente deixar um espaço entre Liberatione Sans. O principal problema é o seguinte resultado:

vocais faltando

(Nesta imagem usei Arialporque é um nome curto o suficiente para ser legível.) Então pensei: "Isso deve ser um problema de fonte." Tentei usar a Liberation Sansfonte do Libre Office, para verificar se ela conseguia exibir os vocais que faltavam com tons. Lá ele conseguiu exibi-lo sem indicar mudança de fonte, mas não sei se esconde essa informação e talvez a fonte realmente não consiga exibir esses vocais.

Observe também como de alguma forma o nome da fonte foi adicionado à escrita fonética. Isso pode ser intencional, embora pareça um bug. Eu não entendo a documentação embora.

Como posso fazer com que o xpinyin seja exibido corretamente sem ter o nome da fonte na escrita fonética do primeiro caractere?

Aqui está um exemplo de código:

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

Responder1

Encontrei uma solução alternativa e talvez isso possa ser visto como uma solução:

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

Isso altera a fonte para uma fonte, que pode exibir todos os diacríticos do pinyin, sempre que o ambiente pinyinscopeboxedcomeça e muda de volta para outra fonte, sempre que o ambiente termina. A fonte específica teria que ser configurada conforme desejado e provavelmente poderia ser melhorada usando de alguma forma uma variável para conter a fonte principal antes de alterá-la e depois usar essa variável para voltar, mas não sei como fazer isso ainda. Ficaria muito grato por sugestões sobre como fazer isso ou como melhorar a solução em geral.

Isso também evita o comportamento bugado, que faz com que o nome da fonte seja exibido nos rubis, pois não utiliza a fontopção de xpinyin.

EDITAR#1

Qing Lee me contou sobre uma maneira adequada de fazer isso.

Não renove o ambiente, mas em vez disso você pode fazer o seguinte, se usar o fontspecpacote:

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

(Outros valores além de font=são apenas para dar um exemplo.)

informação relacionada