Permitir/forzar el ajuste de palabras en espacios ideográficos

Permitir/forzar el ajuste de palabras en espacios ideográficos

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 flacardspara 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):

ajuste de palabras indeseable

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):

ajuste de palabras deseable

...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:

  1. Evite saltos de línea entre caracteres CJK. Hay un \CJKglueentre dos caracteres CJK cualesquiera, que inicialmente se define para \hskip 0pt plus 0.08\baselineskip\relaxpermitir el ajuste. Puede redefinirla \CJKgluepara que sea una macro vacía para evitar que se ajuste.

    (Perdón de nuevo por el documento chino xeCJKúnicamente).

  2. 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 \xeCJKDeclareCharClassfunciona xeCJK.

  3. 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:

ingrese la descripción de la imagen aquí

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

información relacionada