
Estoy haciendo un conjunto de tarjetas para ayudarme a practicar mis kanji, y el formato que quiero es bastante simple: en el frente tendré el carácter y en el reverso tendré sus significados y lecturas (conen-lecturas ykun-lecturas en líneas separadas). Estoy usando una clase de documento muy buena flacards
para eso y funciona bien.
El problema es que algunas tarjetas van a tener unlotede lecturas; tantos que la lista tiene que terminar. En este momento, simplemente se está rompiendo cuando el siguiente carácter no encaja (cuatro últimas líneas en la imagen):
Los espacios entre cada lectura son U+3000 ESPACIO IDEOGRAFICO (), y me gustaría que XeLaTeX trate ese carácter como un espacio para ajustar palabras, de modo que no rompa la línea en medio de una lectura. En otras palabras, el resultado debería parecerse más a esto (ejemplo construido manualmente):
...pero debe cumplir estos criterios:
- Sin envoltura manual (si la tarjeta se ensancha, la línea debe refluir automáticamente)
- Los espacios que se eliminan para envolver debennoser renderizados (en la imagen de arriba, están)
- Los espacios representados entre entradas individuales deben tener exactamente el mismo ancho que el espacio ideográfico (incluso si se cambia la fuente), pero no tiene que ser un carácter de espacio ideográfico real en el PDF resultante (sin embargo, sería preferible tener el personaje correcto ahí)
El formato de entrada exacto no es fijo y puede cambiarse si se desea, siempre y cuando se logre el espacio deseado.
MWE:
\PassOptionsToPackage{a4paper}{geometry}
\documentclass[frontgrid,backgrid]{flacards}
\usepackage{xeCJK}
\setCJKmainfont{MS Gothic}
\renewcommand{\cardtextstylef}{\Huge}
\renewcommand{\cardtextstyleb}{}
\begin{document}
\card{明}{bright, clear\\ メイ ミョウ\\ あ(かり) あか(るい) あか(るむ) あか(らむ) あき(らか) あ(ける) -あ(け) あ(く) あ(くる) あ(かす)}
\end{document}
Respuesta1
Tienes varias preguntas:
Evite saltos de línea entre caracteres CJK. Hay un
\CJKglue
entre dos caracteres CJK cualesquiera, que inicialmente se define para\hskip 0pt plus 0.08\baselineskip\relax
permitir el ajuste. Puede redefinirla\CJKglue
para que sea una macro vacía para evitar que se ajuste.(Perdón de nuevo por el documento chino
xeCJK
únicamente).Evite saltos de línea antes
(
y después)
. Deberíamos tratarlos como caracteres ideográficos de CJK, en lugar de puntuaciones de ancho completo hacia la izquierda o hacia la derecha. La macro avanzada\xeCJKDeclareCharClass
funcionaxeCJK
.Haga un espacio de ancho completo (U+3000) para que sea un pegamento TeX, que permite envolver pero esdescartable(ver TeXbook Capítulo 14). Esto no es difícil para un texano.
Aquí está el ejemplo de trabajo completo:
\documentclass[frontgrid,backgrid]{flacards}
\renewcommand{\cardtextstylef}{\Huge}
\renewcommand{\cardtextstyleb}{}
\usepackage{xeCJK}
\setCJKmainfont{MS Gothic}
% Prevent line breaking between CJK characters
\xeCJKsetup{CJKglue=} % or \def\CJKglue{} for old version of xeCJK
% Prevent line breaking before ( and after )
\xeCJKDeclareCharClass{CJK}{`(, `)}
% Define a full-width space to be a \quad, which is a TeX glue
\catcode"3000=\active
\def^^^^3000{\quad}
\begin{document}
\card{明}{bright, clear\\
メイ ミョウ\\
あ(かり) あか(るい) あか(るむ) あか(らむ) あき(らか) あ(ける) -あ(け) あ(く) あ(くる) あ(かす)}
\end{document}