sppmg / TW_Thesis_Template

The LaTeX Template for TW Thesis 台灣碩博士 LaTeX 論文樣板
MIT License
147 stars 39 forks source link

\zhdigits無法使用以及日期無法顯示〇 #4

Closed tommyannypeter closed 5 years ago

tommyannypeter commented 5 years ago

我使用NTHU的package,在en下我有將disableChinese設定成false,然而\zhdigits會出現問題,將zhnumbers重新安裝也沒有用。後來我就直接改成一〇七,然而〇卻顯示不出來。 我是在windows 10裡使用MiKTex,編輯器是TeXStudio。

sppmg commented 5 years ago

感謝!這應該算是設計上的 bug

解決辦法是載入 zhnumber 套件。你可以從下面任選一種喜歡的方式:

  1. macros_preamble.tex 加入 \RequirePackage{zhnumber}
  2. main.tex 導言區加入 \usepackage{zhnumber}

    發生原因是 zhnumber 須要在 \langzh 時才被載入。 當初沒考慮到封面(或其他非內文區)會用到中文數字。 (不過印象中應該只有清華因為要用 才使用 \zhdigits

晚點我會修正這問題,謝謝!


對了,你說 直接改成一〇七,然而〇卻顯示不出來,是說這樣?

\def\degreedate{中~華~民~國~ 一〇七 ~年~六~月}

但我可以耶?

你那時有將 disableChinese 設為 false 嗎? 其他中文字有出現嗎? 如果 disableChinese 仍為 true 就不會載/設定中文字型,可能造成你說的問題。但其他中文字應該也不會出現。

tommyannypeter commented 5 years ago

感謝你對於zhdigits的回覆! 我的問題就如你想的那樣,其他中文字有出現,就是〇不見了,我想可能是字形的問題? 我沒有特別設定我的字形,出現的是標楷體(看起來是標楷體),但我丟到word看標楷體是可以顯示完整一〇七的。

sppmg commented 5 years ago

載入 zhnumber 後能夠顯示 嗎? 有遇過一種情況,希臘字母若用中文輸入法打而非 LaTeX 指令,會因為字碼不在 xeCJK 預設處理 unicode 範圍,於是使用英文字型顯示,結果沒字就顯示不出。

如果載入 zhnumber 後仍然無法顯示 ,你試試看在 thesis_base.cls 第 75 行(或是搜尋 \xeCJKDeclareSubCJKBlock)下面加上:

\xeCJKDeclareSubCJKBlock{CJK Symbols}{ "3000 -> "303F }

註: https://www.compart.com/en/unicode/U+3007 這網站可以查詢字碼及碼區。

tommyannypeter commented 5 years ago

載入zhnumber之後還是不能顯示 加入\xeCJKDeclareSubCJKBlock{CJK Symbols}{ "3000 -> "303F }也還是不行...Orz

sppmg commented 5 years ago

恩,我可以重現這個問題。 不過奇怪的是

  1. 改設細明體就沒問題
  2. https://fontzone.net/font-details/dfkai-sb 網站預覽也出不來

感覺像是字型本身? 急的話用全字庫字型代替吧!這我要問下別人了。

tommyannypeter commented 5 years ago

不好意思,請問怎麼改成細明體呢? 我把thesis_base.cls第82行\setCJKmainfont{AR PL UMing TW MBE}uncomment之後會出現error 再改成根據https://www.ptt.cc/bbs/LaTeX/M.1366782607.A.202.html 加上\setCJKmainfont{新細明體}之後沒有出現error但是輸出字體沒有變化

sppmg commented 5 years ago

改字體建議由樣板預設方式設定,見我的wiki 說明 樣板是設計成 Linux/Mac/Windows 通用的,包含一些平台判斷,不建議使用者直接改 cls。除非你明確了解 LaTeX 設計方法。

不過我想你要改的原因還是那個 吧!

感謝 andrew43 的說明 (ptt LaTeX) 以下是我建議你的解決方法

macros_preamble.tex 加入

\RequirePackage{zhnumber}  % 之前的數字問題
\xeCJKDeclareSubCJKBlock{cjkO}{ `〇 }
\setCJKsansfont[cjkO=MingLiU]{\CJKsansfont}

方法就是設定那個字為一個子字碼區,然後再設定 CJKsansfont 時設定那個字碼區使用的字型。 未來仍舊由 config.tex 設定字體,只是 \CJKsansfont 一律由細明體顯示。

已測試過沒問題。

當然你也可以直接換全字庫字型 :D

sppmg commented 5 years ago

紀錄一下。

\setCJKsansfont[FallBack=MingLiU]{DFKai-SB}

是無效的。

另外一種解決方法是利用臨時加當前字體特性,所以 config.tex

\def\degreedate{中~華~民~國~ \addCJKfontfeatures{cjkO=MingLiU}\zhdigits{107} ~年~六~月} 
% 其他地方要 \xeCJKDeclareSubCJKBlock{cjkO}{ `〇 }

lol

tommyannypeter commented 5 years ago

已解決!感激不盡!