За пределами мира *TeX

За пределами мира *TeX

по теме дублирующихся заявлений - я проверилЗаставить Latex игнорировать ВСЕ ошибки Unicode?- «решение» привело к тому, что LaTeX отображал «?» вместо «⌀».

Спасибо людям, которые дали качественные и очень полезные ответы.


Я добавил ⌀ к тексту, и теперь pdflatex вылетает с ошибкой

Ошибка пакета inputenc: символ Unicode \u8:⌀ не настроен для использования с LaTeX.

Я знаю, что можно использовать \DeclareUnicodeCharacter или что-то подобное, чтобы ввести специальную обработку этого символа, но делать это каждый раз, когда во входных данных появляется новый символ UTF-8, неприемлемо.

Он должен работать в pdflatex (или другом компиляторе latex, генерирующем PDF-файлы), поскольку я использую 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

В большинстве «современных» приложений, текстовых редакторов, браузеров и т. д. это реализовано с помощьюшрифт-fallbackмеханизм:

  1. приложение (например, ваш браузер) сначала пытается найти глиф для этого символа в текущем шрифте. (Когда я печатаю эти буквы на сайте tex.stackexchange.com, они отображаются шрифтом «Lucida Grande», указанным в CSS на этом сайте.)
  2. если текущий шрифт не поддерживает символ, приложение пытается найтинекоторыйшрифт, установленный в системе, который содержит глиф для этого символа, затем выбирает глиф из этого шрифта. (В этом случае, с установленными на моем компьютере шрифтами, мой браузер отображает символ «⌀» из шрифта «Cambria», так как этот символ отсутствует в шрифте «Lucida Grande»). введите описание изображения здесь

  3. Если такого шрифта нет, то вы можете увидеть квадрат, вопросительный знак, пробел или какое-то подобное изображение, что символ отсутствует (возможно, из резервного шрифта «Last Resort»). Например, в следующих текстах, показывающих цифры от 0 до 9, для нечетных цифр я использую цифры, идущие первыми изБлок Unicode «Брахми»(для которого у меня установлен шрифт) и затем изБлок Unicode «Масарам Гонди»(добавлено в Unicode в версии 10.0.0, выпущенной всего несколько дней назад в июне 2017 года), для которого у меня (и, вероятно, у вас тоже) не установлен шрифт:

    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}

Связанный контент