如何使用 pmboxdraw 获取等宽字符?

如何使用 pmboxdraw 获取等宽字符?

我想要一个用于块字符的等宽字体,U+2580,U+2584,U+2588(见下文)。

对于那些字符,我使用 pmboxdraw。

\documentclass{article}
\usepackage{pmboxdraw}
\begin{document}\tiny\begin{verbatim}
████ ▄▄▄ █▄   ▄ ▄▄▄▄▀▀ ▄█▄ ▄▄▄ ▄ ▀█▄▀▄█▄▀ ▄█▀▀  ▀▄▀▄▀▄█ █████
████▄▀ ▀ █▄▀█▄▀▄▀  ▄ ▄ ▄█ ▀ ▀█ ██▄ ▄▀▀▀██ ▀▀▄▄▀▀ █▄▄▀▀█▄█████
████▄▀ ▀██▄ ▄▀█ ▄▀▀▀▄▄▄▄███▀ ▄█ ▄█▀ ▀████▀▀▀█▄ ▀█▀▀ ▄▄▄ ▄████
████▄▄▀ ▄▀▄█ ██ ▄▀█▀▀▄█▄▄▀▀▀▀▄██ █▀▀ ██▄ █▄ ▀ ▄▄▀▄ ▄█▄▄▀▄████
\end{verbatim}
\end{document}

然而,使用latex,这会导致非等宽字体并且字符会发生偏移。

非等宽字体

如何使用 pmboxdraw 获取等宽字符?

答案1

您可以更改空间的大小以获得与块相同的宽度:

\documentclass{article}
\usepackage{pmboxdraw}
\begin{document}


{%
\tiny\ttfamily \setbox0=\hbox{█}\fontdimen2\font=\wd0
\begin{verbatim}
████ ▄▄▄ █▄   ▄ ▄▄▄▄▀▀ ▄█▄ ▄▄▄ ▄ ▀█▄▀▄█▄▀ ▄█▀▀  ▀▄▀▄▀▄█ █████
████▄▀ ▀ █▄▀█▄▀▄▀  ▄ ▄ ▄█ ▀ ▀█ ██▄ ▄▀▀▀██ ▀▀▄▄▀▀ █▄▄▀▀█▄█████
████▄▀ ▀██▄ ▄▀█ ▄▀▀▀▄▄▄▄███▀ ▄█ ▄█▀ ▀████▀▀▀█▄ ▀█▀▀ ▄▄▄ ▄████
████▄▄▀ ▄▀▄█ ██ ▄▀█▀▀▄█▄▄▀▀▀▀▄██ █▀▀ ██▄ █▄ ▀ ▄▄▀▄ ▄█▄▄▀▄████
\end{verbatim}
}

\end{document}

在此处输入图片描述

答案2

默认情况下,字符pmboxdraw是等宽的(因此逐字逐句不是严格必要的,尽管它可以方便地避免缩进、行尾等问题)。

但是,您绘制的空字符(例如第一行的第 5 个字符)是常规空格字符,不会被绘制pmboxdraw。这意味着使用空格字符的默认排版,pmboxdraw即使在等宽字体中,其宽度也不一定与字符相同。

为了避免这个问题,一个解决方法是绘制灰色(即阴影)框而不是空格,并重新定义阴影框以将其渲染为白色。当然,这意味着您不能再使用阴影框,但这是一个快速的解决方法。

梅威瑟:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pmboxdraw}
\usepackage{color}
\makeatletter
\def\pmbd@Shade#1#2{%
  \pmbd@BeginBox{Shade}%
    \ltx@ifundefined{textcolor}{%
      \pmbd@colorwarning{#1}%
    }{%
      \textcolor{white}{\pmbd@Rule\pmbd@W\pmbd@H\z@}
    }%
  \pmbd@EndBox
}
\makeatother
\begin{document}\tiny
\begin{verbatim}
████░▄▄▄░█▄░░░▄░▄▄▄▄▀▀░▄█▄░▄▄▄░▄░▀█▄▀▄█▄▀░▄█▀▀░░▀▄▀▄▀▄█░█████
████▄▀░▀░█▄▀█▄▀▄▀░░▄░▄░▄█░▀░▀█░██▄░▄▀▀▀██░▀▀▄▄▀▀░█▄▄▀▀█▄█████
████▄▀░▀██▄░▄▀█░▄▀▀▀▄▄▄▄███▀░▄█░▄█▀░▀████▀▀▀█▄░▀█▀▀░▄▄▄░▄████
████▄▄▀░▄▀▄█░██░▄▀█▀▀▄█▄▄▀▀▀▀▄██░█▀▀░██▄░█▄░▀░▄▄▀▄░▄█▄▄▀▄████
\end{verbatim}
\end{document}

结果:

在此处输入图片描述

另一种方法是使用支持这些字符的字体并使用 XeLaTeX 或 LuaLaTeX 进行编译。在这种情况下pmboxdraw不需要该包。

梅威瑟:

\documentclass{article}
\usepackage{fontspec}
\setmonofont{DejaVu Sans Mono}
\begin{document}
\begin{verbatim}
████ ▄▄▄ █▄   ▄ ▄▄▄▄▀▀ ▄█▄ ▄▄▄ ▄ ▀█▄▀▄█▄▀ ▄█▀▀  ▀▄▀▄▀▄█ █████
████▄▀ ▀ █▄▀█▄▀▄▀  ▄ ▄ ▄█ ▀ ▀█ ██▄ ▄▀▀▀██ ▀▀▄▄▀▀ █▄▄▀▀█▄█████
████▄▀ ▀██▄ ▄▀█ ▄▀▀▀▄▄▄▄███▀ ▄█ ▄█▀ ▀████▀▀▀█▄ ▀█▀▀ ▄▄▄ ▄████
████▄▄▀ ▄▀▄█ ██ ▄▀█▀▀▄█▄▄▀▀▀▀▄██ █▀▀ ██▄ █▄ ▀ ▄▄▀▄ ▄█▄▄▀▄████
\end{verbatim}
\end{document}

结果:

在此处输入图片描述

相关内容