我有一个非常大的 LaTeX 文档,由于以下错误而无法编译:
/usr/share/texlive/texmf-dist/tex/latex/pdfx/pdfx.sty:1398:
Package inputenc Er
ror: Keyboard character used is undefined
(inputenc) in inputencoding `utf8'.
See the inputenc package documentation for explanation.
Type H <return> for immediate help.
...
l.1398 \ifcat ^^c0
\active \pdf@activecharstrue\fi
问题是,由于文档的大小,我无法找到有问题的符号。
我想用一些不同的东西来“替换”这个角色,就像这样
\DeclareUnicodeCharacter{^^c0}{?????}
但它不起作用。是我做错了什么吗?还是这个字符根本无法替换?或者你还有其他提示来找出错误吗?
我在用着pdflatex
。
我已经阅读了其他几个问题,但无论如何我都无法解决这个问题:
- 包 inputenc 错误:使用的键盘字符未定义
- æ ø å 给出“包 inputenc 错误:使用的键盘字符未定义”
- pdflatex 输出中的 Unicode 字符使用十六进制代码,无需 UTF-8 输入
编辑
它是这个文件- 我删除了几乎所有的文本main.tex
但它仍然不起作用......
编辑2
好的,问题显然是由pdfx
软件包引起的。我尝试将其移到inputenc
include 之前,如下所示
\RequirePackage[a-1b]{pdfx}
\RequirePackage[latin1, utf8]{inputenc},
但现在它给了我另一个错误:
/usr/share/texlive/texmf-dist/tex/latex/base/article.cls:235:
LaTeX Error: Comm
and \maketitle already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.235 }
答案1
类文件diploma.cls
写得不太好。
软件包通常应在 之后加载\LoadClass
。您只需将\LoadClass
声明移到顶部即可。还应pdfx
在 之前加载inputenc
。
\def\fileversion{9.0}
\def\filedate{2016/06/20}
\def\docdate{20. června 2016}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{diploma}[\filedate\space \fileversion\space diploma EXPERIMENTAL LaTeX document class]
\LoadClass[11pt]{article}
\RequirePackage[a-1b]{pdfx}
\RequirePackage[latin1,utf8]{inputenc}
我认为这个latin1
选项没有inputenc
任何好处。实际上,包应该在文档中加载,而不是由类加载。
答案2
有时只是一个复制粘贴的问题。
尝试手动重写问题行。
有一次我帮助一个学生,他在一行 Python 代码中犯了一些语法错误,这一行代码明显是这样的:
variable = [1,2,3].append("text")
然后我决定逐个字符地删除该行,结果发现在=
和[
字符之间我必须按 5 次退格键。
这通常发生在您将某些内容从呈现的文本文档(如 PDF 文件)复制到控制台时。
答案3
人们会告诉你不要这么做,只需删除所有 root_document.bbl、root_document.out 等文件(假设 root_document 是你的根文档)。通常,即使你删除了有问题的字符,这些文件也无法正确更新。只需重新编译,一切就都好了。