笔记 :这个问题密切与某一个相关这里,但我似乎无法适应我的情况,因为我不知道这些字符(例如,\textvisiblespace
或\textcompwordmark
)的名称\textellipsis
是从哪里获得的!我不太了解 LaTeX,需要一点帮助才能理解!
我试图将systemctl status
Linux 命令的输出复制粘贴到 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
; 输出基本相同。