Me encuentro con un problema extraño. Quiero crear personajes compuestos comoǎusando el newunicodechar
paquete. Sin embargo, sólo da resultados en combinación con el xeCJK
paquete.
Este código produce caracteres faltantes:
\documentclass[a4paper,12pt,article,oneside]{memoir}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage[british]{babel}
\setmainfont[Ligatures=TeX]{Minion Pro}
\usepackage{newunicodechar}
\newunicodechar{ǚ}{\v{ü}}
\newunicodechar{Ǚ}{\v{Ü}}
\newunicodechar{ǎ}{\v{a}}
\newunicodechar{Ǎ}{\v{A}}
\newunicodechar{ǒ}{\v{o}}
\newunicodechar{Ǒ}{\v{O}}
\begin{document}
ǚ Ǚ ǎ
\end{document}
Si cargo el xeCJK
paquete, los caracteres se muestran bien. ¿Porqué es eso? ¿Y cómo generar caracteres compuestos sin el paquete nombrado?
Nota:
- esto es reproducible con otras fuentes que no contienen caracteres Unicode (por ejemplo, Adobe Garamond Pro)
- Minion Procontieneun carácter caron (unicode 02C7, índice 136)
Respuesta1
La configuración predeterminada no usa Unicode U+02C7, sino el acento combinado U+030C que falta en su fuente. xecjk contiene algo de código para usar U+02C7 en su lugar, pero parece usar este código solo si xunicode también está cargado, lo cual es un poco molesto, ya que normalmente uno ya no debería usarlo.
Puedes clonar el código xeCJK usando \add@accent
. Si hay más fuentes involucradas y algunas tienen acento combinado, probablemente se necesiten algunas comprobaciones adicionales para la existencia de glifos.
\documentclass[a4paper,12pt,article,oneside]{memoir}
\usepackage{fontspec}
\usepackage[british]{babel}
\setmainfont[Ligatures=TeX]{MinionPro-Regular.otf}
\usepackage{newunicodechar}
\makeatletter
\newunicodechar{ǚ}{\add@accent{`^^^^02c7}{ü}}
\newunicodechar{Ǚ}{\add@accent{`^^^^02c7}{Ü}}
\newunicodechar{ǎ}{\add@accent{`^^^^02c7}{a}}
\makeatother
%\newunicodechar{Ǎ}{\v{A}}
%\newunicodechar{ǒ}{\v{o}}
%\newunicodechar{Ǒ}{\v{O}}
%
\begin{document}
abc
ǚ Ǚ ǎ
\end{document}
Respuesta2
Residencia enun truco de egreg, esto usa la \accent
primitiva. Elegí simplemente redefinir \v
.
\documentclass{standalone}
\usepackage{fontspec, newunicodechar}
\usepackage[british]{babel}
\setmainfont[Ligatures=TeX]{Cardo}
\renewcommand\v[1]{\accent\string"02C7 #1}
\newunicodechar{ǚ}{\v{ü}}
\newunicodechar{Ǚ}{\v{Ü}}
\newunicodechar{ǎ}{\v{a}}
\newunicodechar{Ǎ}{\v{A}}
\newunicodechar{ǒ}{\v{o}}
\newunicodechar{Ǒ}{\v{O}}
\begin{document}
ǚ Ǚ ǎ Ǎ ǒ Ǒ
\end{document}
Elegí Cardo como una fuente común que contiene el acento caron, pero no la ǚ precompuesta.