
по теме дублирующихся заявлений - я проверилЗаставить 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механизм:
- приложение (например, ваш браузер) сначала пытается найти глиф для этого символа в текущем шрифте. (Когда я печатаю эти буквы на сайте tex.stackexchange.com, они отображаются шрифтом «Lucida Grande», указанным в CSS на этом сайте.)
если текущий шрифт не поддерживает символ, приложение пытается найтинекоторыйшрифт, установленный в системе, который содержит глиф для этого символа, затем выбирает глиф из этого шрифта. (В этом случае, с установленными на моем компьютере шрифтами, мой браузер отображает символ «⌀» из шрифта «Cambria», так как этот символ отсутствует в шрифте «Lucida Grande»).
Если такого шрифта нет, то вы можете увидеть квадрат, вопросительный знак, пробел или какое-то подобное изображение, что символ отсутствует (возможно, из резервного шрифта «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}