包 inputenc 错误:²
(U+B2)(inputenc)
未设置用于 LaTeX 的 Unicode 字符。\acro{I2C}[I²C]{Inter-Integrated Circuit}
当我尝试编译我的大学乳胶模板时,我得到了这个错误。有什么建议吗?
代码如下所示:
\documentclass[
a4paper,
12pt,
oneside,
BCOR1cm,
toc=chapterentrywithdots]
{scrbook}
\usepackage{graphicx} % use for pdfLatex
\usepackage{makeidx} % f\"{u}r Benutzung des Befehls \printindex
\usepackage[colorlinks=false]{hyperref}
\usepackage{tocbibind}
\usepackage{blindtext}
\usepackage{subfigure}
\usepackage{acronym}
\hypersetup{%
bookmarksnumbered=true, hyperindex=true,
%
%Im Acrobat Reader Subtitel 1. Ebene anzeigen
bookmarksopen=true, bookmarksopenlevel=1,
%
pdfborder=0 0 0 % Keine Box um die Links!
}
\renewcommand*{\tableofcontents}{%
\begingroup
\tocsection
\tocfile{\contentsname}{toc}
\endgroup
}
\renewcommand*{\listoffigures}{%
\begingroup
\tocsection
\tocfile{\listfigurename}{lof}
\endgroup
}
\renewcommand{\listoftables}{
\begingroup
\tocsection
\tocfile{\listtablename}{lot}
\endgroup
}
\begin{document}
\begin{titlepage}
{
\begin{center}
\raisebox{-1ex}{\includegraphics[scale=1.5]
{Uni_positiv_gruen.pdf}}\\
\end{center}
\vspace{0.5cm}
}
\begin{center}
\LARGE{\textbf{Title of the thesis}}\\
\vspace{1cm}
\Large{\textbf{Thesis}}\\
\vspace{1cm}
Submitted in Fulfilment of the\\
Requirements for the Academic Degree\\
M.Sc.\\
\vspace{0.5cm}
Dept. of Computer Science\\
Chair of Computer Engineering
\end{center}
\vspace{3cm}
Submitted by: Max Mustermann\\
Student ID: 111222\\
Date: 12.12.1212\\
\vspace{0.3cm}\\
Supervising tutor: Prof. Dr. \\
(further supervisors)
\end{titlepage}
\addchap*{Abstract}
\blindtext
\\\\
\textbf{Keywords: Keyword1, Keyword2, Keyword3, ...max 5}
\tableofcontents
\listoffigures
\listoftables
\twocolumn
\addchap{List of Abbreviations}
\begin{acronym}[Bash]
\acro{KDE}{K Desktop Environment}
\acro{SQL}{Structured Query Language}
\acro{Bash}{Bourne-again shell}
\acro{JDK}{Java Development Kit}
\acro{VM}{Virtuelle Maschine}
\acro{I2C}[I²C]{Inter-Integrated Circuit}
\acro{KDE}{K Desktop Environment}
\acro{SQL}{Structured Query Language}
\acro{Bash}{Bourne-again shell}
\acro{JDK}{Java Development Kit}
\acro{VM}{Virtuelle Maschine}
\acro{I2C}[I²C]{Inter-Integrated Circuit}
\acro{KDE}{K Desktop Environment}
\acro{SQL}{Structured Query Language}
\acro{Bash}{Bourne-again shell}
\acro{JDK}{Java Development Kit}
\acro{VM}{Virtuelle Maschine}
\acro{I2C}[I²C]{Inter-Integrated Circuit}
\acro{KDE}{K Desktop Environment}
\acro{SQL}{Structured Query Language}
\acro{Bash}{Bourne-again shell}
\acro{JDK}{Java Development Kit}
\acro{VM}{Virtuelle Maschine}
\acro{I2C}[I²C]{Inter-Integrated Circuit}
\acro{KDE}{K Desktop Environment}
\acro{SQL}{Structured Query Language}
\acro{Bash}{Bourne-again shell}
\acro{JDK}{Java Development Kit}
\acro{VM}{Virtuelle Maschine}
\acro{I2C}[I²C]{Inter-Integrated Circuit}
\acro{I2C}[I²C]{Inter-Integrated Circuit}
\end{acronym}
\chapter{Introduction}
\input{src/intro} % Load Data from File intro.tex
\chapter{Tables}
\input{src/example_tables} % Load Data from File example_tables
\chapter{Figures}
\input{src/example_figures} % Load Data from File example_figures
\chapter{Referencing}
% Alternativ just write your text under \chapter like this example
\chapter{Subchapter}
\printindex
\end{document}
提前致谢。
答案1
由于您没有提供预期的 MWE,所以我不知道\acro
该提供什么。
但一般来说,要声明未知的 Unicode 字符,您应该加载:
\usepackage[utf8]{inputenc}
并使用:
\DeclareUnicodeCharacter{<unicode-in-hexa>}{<latex-code>}
也就是说,就你的情况而言:
\DeclareUnicodeCharacter{00B2}{\ensuremath{{}^2}}
一个更简单的选择:
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{²}{\ensuremath{{}^2}}
编辑(与 MWE 一起)
我刚刚粘贴:
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{00B2}{\ensuremath{{}^2}}
或者
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{²}{\ensuremath{{}^2}}
在 MWE 序言的开头,并且(在更正为之后BCOR1cm
)BCOR=1cm
它可以正常工作而没有任何错误或警告,并且在两种情况下都给出:
答案2
您正在运行旧版工具链,它仍然使用特定于 LaTeX 的 8 位文本编码,并且不加载包含该字符的编码。
使用现代 TeX 引擎
我推荐的解决方案是切换到 LuaLaTeX 或 XeLaTeX 并加载\usepackage{fontspec}
而不是fontenc
。这将使您切换到使用 Unicode 和现代标准字体。仍然与较新的工具链不兼容的地方应该更新。
使用 Type 1 字体
如果你不能这样做,包含的 LaTeX 字体编码²
是TS1,文本伴随编码。 默认情况下,LaTeX 3 会\usepackage[utf8]{inputenc}
在您的序言之后和 之前运行\begin{document}
。它会将 UTF-8 字符转换为 LaTeX 命令,但由于字符太多,并且某些编码重叠,因此它只会定义您已加载的编码的命令。由于 20 世纪后期的历史原因,您从包中设置了 TS1 编码textcomp
。
\usepackage[T1]{fontenc}
\usepackage{textcomp}
(如果您感兴趣的话,这是因为,当商业 Type 1 字体仍然存在时,它们不包含 TS1 中的大多数符号,除非它们是专门为当时最前沿的 TeX 设计的。因此,该包会设置您的 TS1 字体实际包含的符号。)
后备方案
另一个选择是加载newunicodechar
包并定义命令
\newunicodechar{²}{\textsuperscript{2}}
这是支持 Unicode 中某些其他上标字符的唯一方法。