如何解决“Package inputenc 错误:Unicode 字符未设置用于 LaTeX”问题?

如何解决“Package inputenc 错误:Unicode 字符未设置用于 LaTeX”问题?

笔记 :这个问题密切与某一个相关这里,但我似乎无法适应我的情况,因为我不知道这些字符(例如,\textvisiblespace\textcompwordmark)的名称\textellipsis是从哪里获得的!我不太了解 LaTeX,需要一点帮助才能理解!


我试图将systemctl statusLinux 命令的输出复制粘贴到 minted。现在,虽然所有输出都正常显示,但对于以下输出,我收到错误:

\begin{minted}{console}
# systemctl status httpd -l
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2017-12-16 09:31:03 IST; 3s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 5831 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─5831 /usr/sbin/httpd -DFOREGROUND
├─5840 /usr/sbin/httpd -DFOREGROUND
├─5842 /usr/sbin/httpd -DFOREGROUND
├─5843 /usr/sbin/httpd -DFOREGROUND
├─5844 /usr/sbin/httpd -DFOREGROUND
└─5845 /usr/sbin/httpd -DFOREGROUND

Dec 16 09:31:01 vmPrime.somuVMnet.local systemd[1]: Starting The Apache HTTP Server...
Dec 16 09:31:03 vmPrime.somuVMnet.local systemd[1]: Started The Apache HTTP Server.
\end{minted}

我对这个问题的研究使我相信,这个问题可能是由于字符没有任何输出映射到它们而发生的。但是,我找不到摆脱这个错误的方法。我得到的错误格式如下:

包 inputenc 错误:Unicode 字符 ● (U+25CF)(inputenc) 未设置为用于 LaTeX。...d.service \PYGZhy{} Apache HTTP 服务器}

显而易见的解决方案是从 latex 文件中删除这些字符,但是我希望输出与终端上看到的一样。有什么方法可以让 LaTeX 在 minted 的输出中打印这些字符吗?

基本上,我该如何摆脱这些错误,而不摆脱字符?


完整的错误转储:

第 3 行:程序包 inputenc 错误:Unicode 字符 ● (U+25CF)(inputenc) 未设置为用于 LaTeX。...d.service \PYGZhy{} Apache HTTP 服务器}

第 3 行:程序包 inputenc 错误:Unicode 字符 ● (U+25CF)(inputenc) 未设置为用于 LaTeX。...d.service \PYGZhy{} Apache HTTP 服务器}

第 11 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 11 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5831 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 11 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 11 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5831 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 12 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 12 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5840 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 12 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 12 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5840 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 13 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 13 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5842 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 13 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 13 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5842 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 14 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 14 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5843 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 14 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 14 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5843 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 15 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 15 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5844 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 15 行:程序包 inputenc 错误:Unicode 字符 ═ ...

第 15 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5844 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 16 行:程序包 inputenc 错误:Unicode 字符 └ (U+2514)(inputenc) 未设置为用于 LaTeX。...5845 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 16 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5845 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 16 行:程序包 inputenc 错误:Unicode 字符 └ (U+2514)(inputenc) 未设置为用于 LaTeX。...5845 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

第 16 行:程序包 inputenc 错误:Unicode 字符 ─ (U+2500)(inputenc) 未设置为用于 LaTeX。...5845 /usr/sbin/httpd \PYGZhy{}DFOREGROUND}

:‘h’ 方向的过度指定。

:'v' 方向的过度指定。

第 12 行:段落中的 \hbox 过满(太宽 38.24045pt)


我的序言如下:

\documentclass{report}
\usepackage[utf8]{inputenc}

%   Changing document font to Helvetica.
\usepackage[scaled]{helvet}
\renewcommand\familydefault{\sfdefault} 
\usepackage[T1]{fontenc}

%   Changing Margins and other formatting
\usepackage{geometry}
\geometry{
    a4paper,
    total={170mm,257mm},
    left=1.5in,
    top=1in,
    right=1.5in,
    bottom=1in
}
\setlength{\parskip}{1em}

%   Source Code Highlighting
\usepackage{minted}
%   For Console
\setminted[console]{
frame=lines,
framesep=2mm,
baselinestretch=1.2,
fontsize=\footnotesize,
linenos,
breaklines
}
%   For Shell Scripts
\setminted[bash]{
    frame=lines,
    framesep=2mm,
    baselinestretch=1.2,
    fontsize=\footnotesize,
    linenos,
    breaklines
}

%   Pretty Tables
\usepackage{booktabs}
\usepackage{array, multirow}

%   Custom column for tables
\newcolumntype{P}[1]{ >{\centering\arraybackslash} m{#1\linewidth} }
\newcolumntype{M}[1]{m{#1\linewidth}}

%   Images Support
\usepackage{graphicx}

%   Support for spaces in file names
\usepackage[space]{grffile}

编辑

我尝试将其添加到序言中(如相关答案所示):

%   SUPPORT FOR WEIRD CHARACTERS
\DeclareUnicodeCharacter{25CF}{\lgblkcircle}

但它只是给我一个错误:

Undefined control sequence. ...d.service \PYGZhy{} The Apache HTTP Server}

在 pygtex 文件中:

\PYG{g+go}{ ● httpd.service \PYGZhy{} The Apache HTTP Server}

答案1

您可以声明这些字符。例如,像这样:

\DeclareUnicodeCharacter{25CF}{$\bullet$}
\DeclareUnicodeCharacter{251C}{\mbox{\kern.23em
  \vrule height2.2exdepth1exwidth.4pt\vrule height2.2ptdepth-1.8ptwidth.23em}}
\DeclareUnicodeCharacter{2500}{\mbox{\vrule height2.2ptdepth-1.8ptwidth.5em}}
\DeclareUnicodeCharacter{2514}{\mbox{\kern.23em
  \vrule height2.2exdepth-1.8ptwidth.4pt\vrule height2.2ptdepth-1.8ptwidth.23em}}

答案2

我试图将systemctl状态命令(Linux)的输出复制粘贴到minted

当处理包含不止一个或两个 unicode 编码字符的输入时,切换到 TeX 引擎(比如 LuaTeX 和 XeTeX)是个好主意,它们可以原生处理此类字符。(提示:pdfTeX 不能。)

以下解决方案展示了如何使用 LuaLaTeX 中的包来实现这一点fontspec。[请注意,我已大大简化了您的前言,因为您的问题不是如何使用包,minted而是如何使用 utf8 编码的字符来显示代码。]只要您选择合适的等宽字体,字符等现在就可以轻松排版。

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{report}
\usepackage[a4paper,margin=2cm]{geometry}

\usepackage{fontspec}
\setmonofont{consolas} % choose a suitable monospaced font

\begin{document}

\begin{verbatim}
# systemctl status httpd -l
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2017-12-16 09:31:03 IST; 3s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 5831 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─5831 /usr/sbin/httpd -DFOREGROUND
├─5840 /usr/sbin/httpd -DFOREGROUND
├─5842 /usr/sbin/httpd -DFOREGROUND
├─5843 /usr/sbin/httpd -DFOREGROUND
├─5844 /usr/sbin/httpd -DFOREGROUND
└─5845 /usr/sbin/httpd -DFOREGROUND

Dec 16 09:31:01 vmPrime.somuVMnet.local systemd[1]: Starting The Apache HTTP Server...
Dec 16 09:31:03 vmPrime.somuVMnet.local systemd[1]: Started The Apache HTTP Server.
\end{verbatim}

\end{document}

答案3

您可以使用\textbullet● (U+25CF BLACK CIRCLE) 或\ding{108}(后者需要pifont包)。对于方框图符号,有pmboxdraw

我还重新格式化了您的前言,将包加载与设置分开。对于geometry,您指定过多:257mm 的高度加上 1 英寸的顶部和底部边距不适合 A4 纸。我只保留了total并添加了heightrounded,建议这样做以容纳整数行。

\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

% Packages
\usepackage[scaled]{helvet}
\usepackage{geometry}
\usepackage{minted}

\usepackage{booktabs}
\usepackage{array}
\usepackage{multirow}
\usepackage{pmboxdraw} % for box drawings
\usepackage{pifont} % for the black circle
\usepackage{graphicx}
\usepackage[space]{grffile}

% Settings
\renewcommand\familydefault{\sfdefault} % sans serif by default

\geometry{
  a4paper,
  total={170mm,257mm},
  heightrounded,
}
\setlength{\parskip}{1em}

%   For Console
\setminted[console]{
  frame=lines,
  framesep=2mm,
  baselinestretch=1.2,
  fontsize=\footnotesize,
  linenos,
  breaklines
}
%   For Shell Scripts
\setminted[bash]{
  frame=lines,
  framesep=2mm,
  baselinestretch=1.2,
  fontsize=\footnotesize,
  linenos,
  breaklines
}

%   Custom column for tables
\newcolumntype{P}[1]{ >{\centering\arraybackslash} m{#1\linewidth} }
\newcolumntype{M}[1]{m{#1\linewidth}}

% last minute adjustment 
\DeclareUnicodeCharacter{25CF}{\resizebox{0.5em}{!}{\ding{108}}}

\begin{document}

\begin{minted}{console}
# systemctl status httpd -l
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2017-12-16 09:31:03 IST; 3s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 5831 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
├─5831 /usr/sbin/httpd -DFOREGROUND
├─5840 /usr/sbin/httpd -DFOREGROUND
├─5842 /usr/sbin/httpd -DFOREGROUND
├─5843 /usr/sbin/httpd -DFOREGROUND
├─5844 /usr/sbin/httpd -DFOREGROUND
└─5845 /usr/sbin/httpd -DFOREGROUND

Dec 16 09:31:01 vmPrime.somuVMnet.local systemd[1]: Starting The Apache HTTP Server...
Dec 16 09:31:03 vmPrime.somuVMnet.local systemd[1]: Started The Apache HTTP Server.
\end{minted}

\end{document}

您也\resizebox{0.5em}{!}{\ding{108}}可以使用\textbullet; 输出基本相同。

在此处输入图片描述

相关内容