
我正在製作一套抽認卡來幫助我練習漢字,我想要的格式非常簡單:在前面,我將有漢字,在背面我將有它的含義和讀法(與在- 讀數和坤- 讀數在單獨的行上)。我flacards
為此使用了一個非常好的文檔類,並且效果很好。
問題是有些卡會有很多閱讀量;太多了,清單必須換行。現在,當下一個字元不適合時(圖像中的最後四行),它就會中斷:
每個讀數之間的空格是 U+3000 表意空格 ( ),我希望 XeLaTeX 將該字元視為自動換行的空格,這樣它就不會在讀數中間斷行。換句話說,結果應該看起來更接近這個(手動建立的範例):
……但它必須滿足這些標準:
- 無需手動繞包(如果卡變寬,則線路必須自動回流)
- 為包裝而移除的空間必須不是被渲染(在上圖中,它們是)
- 各個條目之間呈現的空格必須具有與表意空格完全相同的寬度(即使字體已更改),但它不必是生成的 PDF 中的實際表意空格字元(但是,最好具有那裡的正確字元)
確切的條目格式不是固定的,並且可以根據需要進行更改,只要達到所需的間距即可。
微量元素:
\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 字元之間斷行。任兩個 CJK 字元之間有一個 a
\CJKglue
,最初定義是為了\hskip 0pt plus 0.08\baselineskip\relax
啟用換行。您可以重新定義\CJKglue
為空宏以防止換行。(再次抱歉,只有中文文件
xeCJK
。)(
防止前後斷行)
。我們應該將它們視為 CJK 表意字符,而不是全角左或右標點符號。\xeCJKDeclareCharClass
中的高階巨集xeCJK
可以解決這個問題。製作一個全角空間(U+3000)作為 TeX 粘合,可以進行包裹,但可丟棄的(請參閱 TeXbook 第 14 章)。這對技術人員來說並不困難。
這是完整的工作範例:
\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}