连接垂直方框绘图字符

连接垂直方框绘图字符

我一直在使用投影机铸造(并使用 Xelatex 构建 PDF)。当使用 Unicode方框绘制字符,垂直线实际上并没有像其他字符一样“连接”。起初我以为这是我的字体的问题(DejaVu Sans),但后来我尝试了几种不同的等宽字体,但都没有成功。我还尝试过在 minted 环境中调整基线选项,但没有任何变化(负数似乎根本不会影响它)。最后,我尝试添加一个新的 Unicode 字符,用 tikz 绘图(垂直线)替换垂直线,但这有点黑客,我无法让它在与正常框绘图字符相交的地方看起来完全正确,并且不想重新定义我可能使用的每个字符)。

我想知道是什么导致了这个问题。请注意,同样的事情发生在 Minted 环境之外,但是如果我使用另一个类,那么它在 Beamer/Verbatim 环境中的知识可能会影响解决方案,因此我将其包含在下面的 MWE 中:

\documentclass[xelatex,aspectratio=169]{beamer}

\usepackage{fontspec,minted}

\setmonofont{Source Code Pro}
% \setmonofont{DejaVu Sans} % Same thing

% Don't display annoying red boxes around errors
\renewcommand{\fcolorbox}[4][]{#4}
\begin{document}

\begin{frame}[fragile]
\begin{minted}{C}
      ╭─────────────────────────────╮
      │                  ╭───╮      │
      │  ╭───╮           │╭─╮│      │
      │  ↑   │           │↑ ││      │
void (*signal(int, void (*fp)(int)))(int);
 ↑    ↑      │      ↑    ↑  ││      │
 │    ╰──────╯      │    ╰──╯│      │
 │                  ╰────────╯      │
 ╰──────────────────────────────────╯
\end{minted}
\end{frame}

\end{document}

产生的结果(请注意垂直条中的间隙):

破碎的垂直方框绘图字符

答案1

原因是箭头比字符 U+2502 (BOX DRAWINGS LIGHT VERTICAL) 短得多,如下图所示:

在此处输入图片描述

另一个原因是\lineskip进入方式。

可以通过使用另一种字体中的箭头,然后稍微缩放以反映框绘图字符的尺寸来获得可接受的版本。

\documentclass{article}

\usepackage{fontspec,minted,color,graphicx}
\usepackage{newunicodechar}

\setmonofont{Source Code Pro}
\newfontfamily{\Carrows}{TeX Gyre Adventor}
\newunicodechar{↑}{\arrowresize{\Carrows ↑}}
\newcommand{\arrowresize}[1]{%
  \sbox0{\ttfamily │}%
  \setlength{\dimen8}{\dimexpr\ht0+\dp0\relax}%
  \makebox[\wd0]{\raisebox{-.5\dp0}[\ht0][\dp0]{\resizebox{\width}{.8\dimen8}{#1}}}%
}

% Don't display annoying red boxes around errors
\renewcommand{\fcolorbox}[4][]{#4}

\begin{document}

\setlength{\lineskip}{0pt}
\begin{minted}{C}
      ╭─────────────────────────────╮
      │                  ╭───╮      │
      │  ╭───╮           │╭─╮│      │
      │  ↑   │           │↑ ││      │
void (*signal(int, void (*fp)(int)))(int);
 ↑    ↑      │      ↑    ↑  ││      │
 │    ╰──────╯      │    ╰──╯│      │
 │                  ╰────────╯      │
 ╰──────────────────────────────────╯
\end{minted}

\end{document}

仅在本地进行分配\lineskip

在此处输入图片描述

相关内容