*TeX 世界之外

*TeX 世界之外

關於重複索賠的主題 - 我測試過告訴 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 世界之外

在大多數“現代”應用程式、文字編輯器、瀏覽器等中,這是透過字體回退機制:

  1. 應用程式(假設您的瀏覽器)首先嘗試在目前字體中尋找該字元的字形。 (當我在 tex.stackexchange.com 網站上輸入這些字母時,它們以“Lucida Grande”字體顯示,由該網站上的 CSS 指定。)
  2. 如果當前字體不支援該字符,應用程式會嘗試尋找一些安裝在包含該字元字形的系統上的字體,然後從該字體中取得該字形。 (在這種情況下,當我的計算機上安裝了字體時,我的瀏覽器顯示“Cambria”字體中的“⌀”字符,因為該字符不存在於“Lucida Grande”字體中。) 在此輸入影像描述

  3. 如果沒有這樣的字體,那麼您可能會看到一個方框、一個問號、一個空格或一些表明該字元遺失的描述(可能來自「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}

你不需要inputencLuaTeX 但你需要支援該字形的字體。

請注意,噹噹前字體中沒有可用的字形時,其他軟體可能會自動進行字體替換。 LuaLaTeX 和 XeLaTeX 則不然,因為它們的目標是良好的排版,而自動替換可能會產生衝突。與先前的想法相同:核心無法為每個 Unicode 字元提供定義,因為這需要從備用字體中進行選擇。


不過,使用者有可能輸入 U+2300 來取得該\varnothing符號,如果文件是關於數學而不是技術主題的,則這種情況很可能發生。在這種情況下,要載入的套件是amssymb

\usepackage{amssymb}

\DeclareUnicodeCharacter{2300}{\varnothing}

相關內容