
Estoy usando el paquete xpinyin
para mostrar pinyin, una escritura fonética china encima de los caracteres chinos. Esto parece funcionar bien, pero quiero cambiar la fuente de la escritura fonética. Encontré un código en eldocumentación del paquete, aunque ese es solo chino:
\xpinyinsetup{ratio=0.5, vsep=1em, multiple={\color{red}}, font=Liberation Sans}
El chino en la documentación todavía tiene un nivel demasiado alto para mí, así que simplemente supongo que esto es lo que hace:
- hacer que el pinyin hal tenga el tamaño de la fuente principal
- separación vertical de 1em, pinyin está separado por 1em del carácter chino a continuación
- si hay varios pinyins para un carácter (多音字) entonces el pinyin será el más probable y será de color rojo
- usa la fuente
Liberation Sans
Sin embargo, no sé si puedes simplemente dejar un espacio entre Liberation
y Sans
. El principal problema es el siguiente resultado:
(En esta imagen la usé Arial
porque es un nombre lo suficientemente corto como para ser legible). Entonces pensé: "Esto debe ser un problema de fuente". Intenté usar la Liberation Sans
fuente en Libre Office para comprobar si podía mostrar las voces que faltaban con tonos. Allí pudo mostrarlo sin indicar un cambio de fuente, pero no sé si oculta esta información y tal vez la fuente realmente no pueda mostrar esas voces.
Observe también cómo de alguna manera se agregó el nombre de la fuente a la escritura fonética. Esto podría ser intencionado, aunque más bien parece un error. Aunque no entiendo la documentación.
¿Cómo puedo hacer que xpinyin se muestre correctamente sin tener el nombre de la fuente en la escritura fonética del primer carácter?
Aquí un código de ejemplo:
\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}
Respuesta1
Encontré una solución alternativa y tal vez esto pueda verse como una solución:
\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}}
Esto cambia la fuente a una fuente, que puede mostrar todos los signos diacríticos de pinyin, cada vez que pinyinscopeboxed
comienza el entorno y la cambia de nuevo a otra fuente, cada vez que finaliza el entorno. La fuente específica tendría que configurarse como se desee y probablemente podría mejorarse usando de alguna manera una variable que contenga la fuente principal antes de cambiarla y luego usar esa variable para volver atrás, pero no sé cómo hacerlo todavía. Agradecería sugerencias sobre cómo hacerlo o cómo mejorar la solución en general.
Esto también evita el comportamiento defectuoso, que hace que el nombre de la fuente se muestre en Ruby, porque no usa la font
opción xpinyin
.
EDITAR #1
Qing Lee me habló de una forma adecuada de hacer esto.
No renueve el entorno, pero en su lugar puede hacer lo siguiente, si usa el fontspec
paquete:
\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}
(Otros valores además de font=
son solo para dar un ejemplo).