我当时正在看使用 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:
现在我的问题是:在将文本交给命令时(通过中间的\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}