
私は漢字の練習に役立つフラッシュカードを作っていますが、フォーマットは非常にシンプルです。表面に漢字を、裏面に意味と読み方(の上-読み物とくん- 読み方は別の行に記入します。そのために私は非常に優れたドキュメント クラスを使用しておりflacards
、うまく機能しています。
問題は、一部のカードには多く読み方。リストが多すぎるため折り返さなければなりません。現時点では、次の文字が収まらないときに改行します (画像の最後の 4 行):
各読みの間のスペースは U+3000 IDEOGRAPHIC SPACE ( ) であり、XeLaTeX でその文字を単語の折り返しのスペースとして扱い、読みの途中で行が分割されないようにしたいと思います。言い換えると、結果は次のようになります (手動で作成した例):
...ただし、次の基準を満たす必要があります:
- 手動での折り返しは不要です(カードの幅が広くなると、ラインは自動的に再フローする必要があります)
- 折り返しのために削除されるスペースはないレンダリングされる(上の画像ではレンダリングされています)
- 個々のエントリ間のスペースは、表意文字スペースとまったく同じ幅にする必要があります (フォントが変更された場合でも)。ただし、結果の PDF で実際の表意文字スペース文字である必要はありません (ただし、正しい文字が含まれていることが望ましいです)。
正確な入力形式は固定されておらず、必要な間隔が確保される限り、必要に応じて変更できます。
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}
答え1
いくつか質問があります:
CJK 文字間の改行を防止します。
\CJKglue
任意の 2 つの CJK 文字の間には があり、これは最初は\hskip 0pt plus 0.08\baselineskip\relax
折り返しを有効にするために と定義されています。 を空のマクロに再定義して、\CJKglue
折り返しを防止できます。(中国語のみの文書で再度申し訳ございません
xeCJK
。)(
の前後で改行されないようにします)
。これらは、全角の左または右の句読点ではなく、CJK 表意文字として扱う必要があります。\xeCJKDeclareCharClass
の高度なマクロがxeCJK
これを実現します。全角スペース(U+3000)をTeXグルーにします。これにより折り返しが可能になりますが、廃棄可能(TeXbook の第 14 章を参照) これは TeXnician にとっては難しいことではありません。
完全な動作例は次のとおりです。
\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}