Latex verbatim:使用后备字体显示字符?
Latex verbatim: show characters using a fallback font?
我对逐字块使用特定的单字体。在我的一个逐字记录块中,某些字符未包含在字体中。正如 中所建议的,可以使用不同的字体,或者使用 pmboxdraw
包来呈现不受支持的字符。但它似乎对我不起作用。
下面是一个MWE,其中黑色圆圈(即第二行第一个字符)无法正确绘制。我的意图是使用我用于逐字块的单字体,并使用任何替代字体来代替黑色圆圈字符。有解决办法吗?非常感谢!
\documentclass{article}
\usepackage{fancyvrb}
\usepackage[utf8]{inputenc}
\usepackage{pmboxdraw}
\usepackage{fontspec}
\setmonofont[Path=./fonts/PragmataPro/,
UprightFont=*-R,
ItalicFont=*-RI,
BoldFont=*-B,
BoldItalicFont=*-BI]{PragmataPro}
\begin{document}
\begin{Verbatim}
$ systemctl status redsocks
● redsocks.service - Redsocks transparent SOCKS proxy redirector
Loaded: loaded (/lib/systemd/system/redsocks.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-10-28 16:14:16 CST; 5s ago
Process: 1499 ExecStart=/usr/sbin/redsocks -c ${CONFFILE} (code=exited, status=0/SUCCESS)
Process: 1496 ExecStartPre=/usr/sbin/redsocks -t -c ${CONFFILE} (code=exited, status=0/SUCCESS)
\end{Verbatim}
\end{document}
使用xelatex
的输出显示黑圈渲染不正确:
顺便说一句,如果我不指定自定义的monofont,黑圈根本不会画出来。
您可以用 newunicodechar
包替换单个符号。您只需要找到包含该字符的字体,例如参见https://www.fileformat.info/info/unicode/char/25cf/fontsupport.htm
% !TeX TS-program = xelatex
\documentclass{article}
\usepackage{fancyvrb}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\usepackage{fontspec}
\setmonofont{Monaco}
\newfontfamily{\dejamono}{DejaVu Sans Mono}
\newunicodechar{●}{{\dejamono ●}}
\begin{document}
\begin{Verbatim}
$ systemctl status redsocks
● redsocks.service - Redsocks transparent SOCKS proxy redirector
Loaded: loaded (/lib/systemd/system/redsocks.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-10-28 16:14:16 CST; 5s ago
Process: 1499 ExecStart=/usr/sbin/redsocks -c ${CONFFILE} (code=exited, status=0/SUCCESS)
Process: 1496 ExecStartPre=/usr/sbin/redsocks -t -c ${CONFFILE} (code=exited, status=0/SUCCESS)
\end{Verbatim}
\end{document}
(我在上面的示例中使用 Monaco
字体,因为该字体也缺少符号并且我没有专有的 PragmataPro
字体)
我对逐字块使用特定的单字体。在我的一个逐字记录块中,某些字符未包含在字体中。正如 pmboxdraw
包来呈现不受支持的字符。但它似乎对我不起作用。
下面是一个MWE,其中黑色圆圈(即第二行第一个字符)无法正确绘制。我的意图是使用我用于逐字块的单字体,并使用任何替代字体来代替黑色圆圈字符。有解决办法吗?非常感谢!
\documentclass{article}
\usepackage{fancyvrb}
\usepackage[utf8]{inputenc}
\usepackage{pmboxdraw}
\usepackage{fontspec}
\setmonofont[Path=./fonts/PragmataPro/,
UprightFont=*-R,
ItalicFont=*-RI,
BoldFont=*-B,
BoldItalicFont=*-BI]{PragmataPro}
\begin{document}
\begin{Verbatim}
$ systemctl status redsocks
● redsocks.service - Redsocks transparent SOCKS proxy redirector
Loaded: loaded (/lib/systemd/system/redsocks.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-10-28 16:14:16 CST; 5s ago
Process: 1499 ExecStart=/usr/sbin/redsocks -c ${CONFFILE} (code=exited, status=0/SUCCESS)
Process: 1496 ExecStartPre=/usr/sbin/redsocks -t -c ${CONFFILE} (code=exited, status=0/SUCCESS)
\end{Verbatim}
\end{document}
使用xelatex
的输出显示黑圈渲染不正确:
顺便说一句,如果我不指定自定义的monofont,黑圈根本不会画出来。
您可以用 newunicodechar
包替换单个符号。您只需要找到包含该字符的字体,例如参见https://www.fileformat.info/info/unicode/char/25cf/fontsupport.htm
% !TeX TS-program = xelatex
\documentclass{article}
\usepackage{fancyvrb}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\usepackage{fontspec}
\setmonofont{Monaco}
\newfontfamily{\dejamono}{DejaVu Sans Mono}
\newunicodechar{●}{{\dejamono ●}}
\begin{document}
\begin{Verbatim}
$ systemctl status redsocks
● redsocks.service - Redsocks transparent SOCKS proxy redirector
Loaded: loaded (/lib/systemd/system/redsocks.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-10-28 16:14:16 CST; 5s ago
Process: 1499 ExecStart=/usr/sbin/redsocks -c ${CONFFILE} (code=exited, status=0/SUCCESS)
Process: 1496 ExecStartPre=/usr/sbin/redsocks -t -c ${CONFFILE} (code=exited, status=0/SUCCESS)
\end{Verbatim}
\end{document}
(我在上面的示例中使用 Monaco
字体,因为该字体也缺少符号并且我没有专有的 PragmataPro
字体)