防止逐字文本中出现连字

防止逐字文本中出现连字

我当时正在看使用 fancyvrb 和 hyperref 时 URL 中出现连字符问题但不能完全理解解决方案,所以无法将其应用于我的问题。

我在逐字文本中得到了不需要的连字符,我使用fancyvrb 替代 commandchars 和 \textcolor因为我不能使用括号作为命令字符。

下面是一个最小的例子,显示了彩色文本开头不需要的连字符“fi”:

% !TEX TS-program = xelatex
\documentclass{article}

% -- fonts:
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX,Numbers=OldStyle} % applies to all fonts
\setmonofont[Scale=0.9,Numbers={Lining,Monospaced}]{TeX Gyre Cursor}

% -- custom verbatim env for typesetting code:
\usepackage{fancyvrb,xcolor} 
\definecolor{purple}{rgb}{0.5,0.1,0.3}
\DefineVerbatimEnvironment{CodeVerbatim}{Verbatim}{commandchars=\#^\~}
\newcommand*{\fvtextcolor}[2]{\textcolor{#1}{#2}} 

\begin{document}

\begin{CodeVerbatim}
    @echo #fvtextcolor^purple~^"file uses ligature"~
\end{CodeVerbatim}

\end{document}

其结果为以下 PDF:

上述示例的 PDF 输出

现在我的问题是:在将文本交给命令时(通过中间的\textcolor宏) ,如何打破文件中的连字符“fi” ?\fvtextcolor

答案1

这与文本着色无关,而是与您未禁用连字有关。显然,TeX Gyre Cursorliga默认启用,这似乎不是等宽字体所需的功能。但是您还必须为其禁用 TeX 连字。

% !TEX TS-program = xelatex
\documentclass{article}

% -- fonts:
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX,Numbers=OldStyle} % applies to all fonts
% <add here your font declarations>
\setmainfont{Latin Modern Roman}

\defaultfontfeatures{} % reset for mono font
\setmonofont[
  Ligatures=NoCommon,
  Scale=0.9,
  Numbers={Lining,Monospaced}
]{TeX Gyre Cursor}

% -- custom verbatim env for typesetting code:
\usepackage{fancyvrb,xcolor} 
\definecolor{purple}{rgb}{0.5,0.1,0.3}
\DefineVerbatimEnvironment{CodeVerbatim}{Verbatim}{commandchars=\#^\~}
\newcommand*{\fvtextcolor}[2]{\textcolor{#1}{#2}} 

\begin{document}

1234567890

\begin{CodeVerbatim}
    @echo #fvtextcolor^purple~^"file uses ligature"~
\end{CodeVerbatim}

\end{document}

在此处输入图片描述

相关内容