
關於重複索賠的主題 - 我測試過告訴 Latex 忽略所有 unicode 錯誤?- “解決方案”導致 LaTeX 顯示“?”而不是“⌀”。
感謝提供高品質且非常有用的答案的人們。
我在文本中添加了 ⌀,現在 pdflatex 崩潰了
套件 inputenc 錯誤:Unicode char \u8:⌀ 未設定為與 LaTeX 一起使用。
我知道我可以使用 \DeclareUnicodeCharacter 或類似的方法來引入對此字元的特殊處理,但每次輸入中出現新的 UTF-8 字元時都執行此操作是不可接受的。
它需要在pdflatex(或其他生成pdf的latex編譯器)中工作,因為我僅使用latex作為pdf生成器(LaTeX是從輸入生成的,pdflatex生成pdf輸出)。
微量元素:
\begin{document}
⌀
\end{document}
MWE 提供我的文件聲明
\documentclass{article}
\usepackage[a4paper, total={6.5in, 10.5in}]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{cprotect}
\usepackage{fvextra}
\usepackage{textcomp}
% make TOC work correctly
\makeatletter
\def\l@section{\@dottedtocline{1}{1em}{2em}}
\makeatother
\usepackage{index}
\makeindex
\DeclareUnicodeCharacter{00A0}{~}
\DefineVerbatimEnvironment{escape}
{Verbatim}
{fontfamily=\rmdefault,breaklines,breaksymbolleft={}}
\CustomVerbatimCommand\escapeinline{Verb}{fontfamily=\rmdefault,breaklines,breaksymbolleft={}}
\begin{document}
⌀
\end{document}
答案1
你可以這樣想:對於 LaTeX(或任何系統)要在頁面/螢幕上繪製“⌀”(或任何字元),該字元的“形狀”(視覺外觀)必須可用某處。
*TeX 世界之外
在大多數“現代”應用程式、文字編輯器、瀏覽器等中,這是透過字體回退機制:
- 應用程式(假設您的瀏覽器)首先嘗試在目前字體中尋找該字元的字形。 (當我在 tex.stackexchange.com 網站上輸入這些字母時,它們以“Lucida Grande”字體顯示,由該網站上的 CSS 指定。)
如果當前字體不支援該字符,應用程式會嘗試尋找一些安裝在包含該字元字形的系統上的字體,然後從該字體中取得該字形。 (在這種情況下,當我的計算機上安裝了字體時,我的瀏覽器顯示“Cambria”字體中的“⌀”字符,因為該字符不存在於“Lucida Grande”字體中。)
如果沒有這樣的字體,那麼您可能會看到一個方框、一個問號、一個空格或一些表明該字元遺失的描述(可能來自「Last Resort」後備字體)。例如,在以下顯示數字 0 到 9 的文字中,對於奇數數字,我首先使用從“Brahmi”Unicode 區塊(我已經安裝了字體)然後從“Masaram Gondi” Unicode 區塊(在 10.0.0 版本中添加到 Unicode,該版本僅在 2017 年 6 月幾天前發布),我(可能你也)沒有安裝該字體:
0
答案2
您會收到一條錯誤訊息,告訴您 沒有預設定義⌀
,任何標準字體中都不存在該定義。
綜合清單告訴我們,這\diameter
是由
mathabx
MnSymbol
wasysym
僅僅為了使某些符號可用而添加這些包之一將是非常有爭議的。
您會收到一條錯誤訊息,告訴您準確的詳細資訊;例如,做出選擇wasysym
並將程式碼更改為
\documentclass{article}
\usepackage[a4paper, total={6.5in, 10.5in}]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{cprotect}
\usepackage{fvextra}
\usepackage{textcomp}
\usepackage{wasysym} % for \diameter
% make TOC work correctly
\makeatletter
\def\l@section{\@dottedtocline{1}{1em}{2em}}
\makeatother
\usepackage{index}
\makeindex
%\DeclareUnicodeCharacter{00A0}{~} % not needed in recent versions of LaTeX
\DeclareUnicodeCharacter{2300}{\diameter}
\DefineVerbatimEnvironment{escape}
{Verbatim}
{fontfamily=\rmdefault,breaklines,breaksymbolleft={}}
\CustomVerbatimCommand\escapeinline{Verb}{fontfamily=\rmdefault,breaklines,breaksymbolleft={}}
\begin{document}
⌀
\end{document}
你不需要inputenc
LuaTeX 但你做需要支援該字形的字體。
請注意,噹噹前字體中沒有可用的字形時,其他軟體可能會自動進行字體替換。 LuaLaTeX 和 XeLaTeX 則不然,因為它們的目標是良好的排版,而自動替換可能會產生衝突。與先前的想法相同:核心無法為每個 Unicode 字元提供定義,因為這需要從備用字體中進行選擇。
不過,使用者有可能輸入 U+2300 來取得該\varnothing
符號,如果文件是關於數學而不是技術主題的,則這種情況很可能發生。在這種情況下,要載入的套件是amssymb
:
\usepackage{amssymb}
\DeclareUnicodeCharacter{2300}{\varnothing}