
Ich erstelle einen Satz Karteikarten, die mir beim Üben meiner Kanji helfen sollen, und das gewünschte Format ist recht einfach: Auf der Vorderseite habe ich das Zeichen und auf der Rückseite seine Bedeutungen und Lesarten (mitAn-Lesungen undKunflacards
-Lesungen auf separaten Zeilen). Ich verwende dafür eine sehr schöne Dokumentklasse , und das funktioniert gut.
Das Problem ist, dass einige Karten einevielvon Lesungen; so viele, dass die Liste umgebrochen werden muss. Im Moment bricht es nur ab, wenn das nächste Zeichen nicht passt (vier letzte Zeilen im Bild):
Die Leerzeichen zwischen den einzelnen Lesungen sind U+3000 IDEOGRAPHIC SPACE ( ), und ich möchte, dass XeLaTeX dieses Zeichen als Leerzeichen für den Zeilenumbruch behandelt, damit die Zeile nicht mitten in einer Lesung unterbrochen wird. Mit anderen Worten, das Ergebnis sollte eher so aussehen (manuell erstelltes Beispiel):
...aber es muss diese Kriterien erfüllen:
- Kein manuelles Umbrechen (wird die Karte breiter, muss der Zeilenumbruch automatisch erfolgen)
- Leerzeichen, die zum Umwickeln entfernt werden, müssennichtgerendert werden (im Bild oben sind sie das)
- Zwischen den einzelnen Einträgen dargestellte Leerzeichen müssen genau dieselbe Breite haben wie das ideografische Leerzeichen (auch wenn die Schriftart geändert wird), es muss sich im resultierenden PDF jedoch nicht um ein tatsächliches ideografisches Leerzeichen handeln (es wäre jedoch wünschenswert, das richtige Zeichen dort zu haben).
Das genaue Eintragsformat ist nicht festgelegt und kann bei Bedarf geändert werden, solange der gewünschte Abstand erreicht wird.
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}
Antwort1
Sie haben mehrere Fragen:
Verhindert Zeilenumbrüche zwischen CJK-Zeichen.
\CJKglue
Zwischen zwei beliebigen CJK-Zeichen befindet sich ein , das anfangs so definiert ist, dass es\hskip 0pt plus 0.08\baselineskip\relax
Zeilenumbrüche ermöglicht. Sie können es\CJKglue
als leeres Makro neu definieren, um Zeilenumbrüche zu verhindern.(Entschuldigen Sie nochmals, dass es sich
xeCJK
nur um ein chinesisches Dokument handelt.)Verhindern Sie Zeilenumbrüche vor
(
und nach)
. Wir sollten sie als CJK-Ideogrammzeichen behandeln und nicht als Satzzeichen mit voller Breite links oder rechts. Das erweiterte Makro\xeCJKDeclareCharClass
inxeCJK
erledigt dies.Machen Sie einen Leerraum in voller Breite (U+3000) zu einem TeX-Kleber, der das Umbrechen ermöglicht, aberwegwerfbar(siehe TeXbook, Kapitel 14). Für einen TeXnician ist das nicht schwierig.
Hier ist das vollständige funktionierende Beispiel:
\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}