我想在标题中使用底部括号 ⎵:
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{titling}
\usepackage[lf]{venturis}
\usepackage[T1]{fontenc}
\title{Foo⎵Bar} % this has the offensive character
\author{Myself}
\date{}
\begin{document}
\maketitle
\end{document}
我所得到的是
! 程序包 inputenc 错误: Unicode 字符 ⎵ (U+23B5)
(inputenc) 未设置为与 LaTeX 一起使用。
答案1
简短回答:您可以使用\DeclareUnicodeCharacter{23B5}{\textvisiblespace}
。或者您可以使用␣
(U+2423 打开盒子),已经定义为\textvisiblespace
,而不是使用⎵
(U+23B5 底部方括号)。
长答案:当您输入⎵
文件并使用 UTF-8 编码(这可能是编辑器中的默认编码)保存时,此字符U+23B5 底部方括号存储为字节序列E2 8E B5
。然后当 TeX 读取文件时,由于\usepackage[utf8]{inputenc}
前导码中有,它知道当看到这些字节时,应该将其理解为字符U+23B5
。这很好,但 TeX 需要知道如何处理该字符。
事实上,你可以为任何字符提供任何指令。对于你来说,这就像简单地选择一个符号并排版一样简单。你可以查找综合 LaTeX 符号列表(可能在您的计算机上可用texdoc symbols-a4
)并看到符号可用(实际上在“常用符号”下)为\textvisiblespace
。因此您可以使用它:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[lf]{venturis}
\usepackage[T1]{fontenc}
\DeclareUnicodeCharacter{23B5}{\textvisiblespace}
\title{Foo⎵Bar} % this is fine now
\author{Myself}
\date{}
\begin{document}
\maketitle
\end{document}
生产
(\DeclareUnicodeCharacter{23B5}{\textvisiblespace}
你也可以\newunicodechar{⎵}{{\textvisiblespace}}
使用新unicode字符包裹。)
事实上,一些常见的定义附带着典型的 TeX 分布:具体来说,在我的计算机上/usr/local/texlive/2017/texmf-dist/tex/latex/base/utf8.def
包含 ©、®、º、ˆ、˜、ZWNJ、…、™、␣ 的定义:
\DeclareUnicodeCharacter{00A9}{\textcopyright}
\DeclareUnicodeCharacter{00AA}{\textordfeminine}
\DeclareUnicodeCharacter{00AE}{\textregistered}
\DeclareUnicodeCharacter{00BA}{\textordmasculine}
\DeclareUnicodeCharacter{02C6}{\textasciicircum}
\DeclareUnicodeCharacter{02DC}{\textasciitilde}
\DeclareUnicodeCharacter{200C}{\textcompwordmark}
\DeclareUnicodeCharacter{2026}{\textellipsis}
\DeclareUnicodeCharacter{2122}{\texttrademark}
\DeclareUnicodeCharacter{2423}{\textvisiblespace}
但定义⎵
为\textvisiblespace
不是其中之一。
替代方案:如果您使用支持 Unicode 的 TeX 引擎(如 XeTeX 或 LuaTeX)(使用xelatex
或lualatex
而不是编译文件pdflatex
),那么您可以简单地使用包含它的系统字体中的 ⎵ 字符。例如:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{FreeSerif} % Sets this font for the entire document
\begin{document}
Foo⎵Bar
\end{document}
或者
\documentclass{article}
\usepackage{fontspec}
\newfontfamily{\symbolfont}{Noto Sans Symbols}
\usepackage{newunicodechar}
\newunicodechar{⎵}{{\symbolfont⎵}} % Use this font for this specific character
\begin{document}
Foo⎵Bar
\end{document}
请注意,TeX 在此处存在相当严重的(在我看来)可用性/设计缺陷:如果字体中缺少字符,则不会导致错误,而只是在文件中显示缺少字符的警告.log
。可以使用 \tracinglostchars=2
在终端中显示消息,但您仍然需要留意它。