
Estou fazendo um conjunto de flashcards para me ajudar a praticar meus kanji, e o formato que quero é bem simples: Na frente terei o caractere, e no verso terei seus significados e leituras (comsobre-leituras ekun-leituras em linhas separadas). Estou usando uma classe de documento muito boa flacards
para isso e funciona bem.
O problema é que alguns cartões terão ummuitode leituras; tantos que a lista precisa ser encerrada. No momento, está quebrando quando o próximo caractere não cabe (quatro últimas linhas na imagem):
Os espaços entre cada leitura são U+3000 ESPAÇO IDEOGRÁFICO ( ), e eu gostaria que o XeLaTeX tratasse esse caractere como um espaço para quebra de linha, para não quebrar a linha no meio de uma leitura. Em outras palavras, o resultado deve ser mais próximo deste (exemplo construído manualmente):
...mas deve satisfazer estes critérios:
- Sem embalagem manual (se o cartão ficar mais largo, a linha deverá refluir automaticamente)
- Os espaços que são removidos para embrulho devemnãoser renderizado (na imagem acima, eles são)
- Os espaços renderizados entre entradas individuais devem ter exatamente a mesma largura que o espaço ideográfico teria (mesmo se a fonte for alterada), mas não precisa ser um caractere de espaço ideográfico real no PDF resultante (no entanto, seria preferível ter o caractere correto aí)
O formato exato de entrada não é fixo e pode ser alterado se desejado, desde que o espaçamento desejado seja alcançado.
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}
Responder1
Você tem várias perguntas:
Evite quebra de linha entre caracteres CJK. Existe um
\CJKglue
entre quaisquer dois caracteres CJK, que é inicialmente definido para\hskip 0pt plus 0.08\baselineskip\relax
permitir o empacotamento. Você pode redefinir\CJKglue
como uma macro vazia para evitar quebra automática.(Desculpe novamente pelo documento chinês
xeCJK
apenas.)Evite quebras de linha antes
(
e depois)
. Devemos tratá-los como caracteres ideográficos CJK, em vez de pontuações à esquerda ou à direita em largura total. A macro avançada\xeCJKDeclareCharClass
resolvexeCJK
o problema.Faça um espaço de largura total (U+3000) para ser uma cola TeX, que permite embrulhar, mas édescartável(ver TeXbook Capítulo 14). Isto não é difícil para um TeXnician.
Aqui está o exemplo completo de trabalho:
\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}