请参见https://stackoverflow.com/questions/23975828/how-to-specify-non-standard-font-in-fancyvrb-verbatim/开始本次讨论。
我正在使用fancyvrb
来创建一个奇特的Verbatim
环境。我有
\usepackage{inconsolata}
加载 Inconsolata 字体,然后
\DefineVerbatimEnvironment{VerbOut}
{Verbatim}{fontfamily=zi4,fontsize=\relsize{-1}}
对于环境本身。我希望它以斜体显示,但似乎包inconsolata
没有加载该字体的斜体版本。是否有其他包可以加载斜体版本,或者我可以通过其他方式获取它?
答案1
Inconsolata 字体没有斜体或倾斜变体(2014 年 6 月)。
一些 TeX 引擎可以根据 PDF 格式的字体转换功能伪造倾斜字体(因此仅限于 PDF 模式)。
LuaTeX/XeTeX
\documentclass{article}
\usepackage{fontspec}
\setmonofont[
AutoFakeSlant,
BoldItalicFeatures={FakeSlant},
]{Inconsolatazi4}
\begin{document}
\ttfamily
Regular
\textbf{Bold}
\textsl{Slanted}
\textit{Italics}
\textbf{\textsl{BoldSlanted}}
\textbf{\textit{BoldItalics}}
\end{document}
倾斜/斜体版本只是伪造的。并且未设置斜体校正。
pdfTeX
SlantFont
文件中可以使用运算符.map
。
以下 Perl 脚本zi4-sl.pl
读取zi4.map
(通过 找到kpsewhich
)并修改条目:
-sl
添加到字体(TFM)名称中,.167 SlantFont
被添加。
Perl 脚本:
#!/usr/bin/env perl
use strict;
$^W=1;
my $outfile = 'zi4-sl.map';
my $infile = `kpsewhich zi4.map`;
chomp $infile;
open(IN, '<', $infile) or die "!!! Error: Cannot open `zi4.map': $!";
open(OUT, '>', $outfile) or die "!!! Error: Cannot write `$outfile': $!";
while (<IN>) {
next if /^\s*$/;
s/^([^- ]+)-([^- ]+)/$1-$2-sl/ or die "!!! Error: Cannot parse TFM name!\n";
s/ " / " .167 SlantFont / or die "!!! Error: Cannot insert SlantFont!\n";
} continue {
print OUT;
}
close(IN);
close(OUT);
__END__
下面的例子:
- 通过以下方式包含地图文件
\pdfmapfile
, - 定义字体形状(
.fd
通常会进入文件)。
\pdfmapfile{+zi4-sl.map}
\documentclass{article}
\usepackage{inconsolata}
\makeatletter
\sbox0{\ttfamily x}% load .fd file
\expandafter\ifx\csname zifour@scaled\endcsname\relax
\let\zifour@scaled\@empty
\fi
\expandafter\ifx\csname zifour@opt\endcsname\relax
\def\zifour@opt{\z@}\def\zifour@altopt{\tw@}
\fi
\DeclareFontShape{\f@encoding}{zi4}{m}{sl}{%
<-> \zifour@scaled ot1-zi4r-sl-\zifour@opt}{}%
\DeclareFontShape{\f@encoding}{zi4}{m}{it}{%
<-> ssub * zi4/m/sl}{}
\DeclareFontShape{\f@encoding}{zi4}{b}{sl}{%
<-> \zifour@scaled ot1-zi4b-sl-\zifour@opt}{}
\DeclareFontShape{\f@encoding}{zi4}{bx}{sl}{%
<-> ssub * zi4/b/sl}{}
\DeclareFontShape{\f@encoding}{zi4}{b}{it}{%
<-> ssub * zi4/b/sl}{}
\DeclareFontShape{\f@encoding}{zi4}{bx}{it}{%
<-> ssub * zi4/b/sl}{}
\makeatother
\begin{document}
\ttfamily
Regular
\textbf{Bold}
\textsl{Slanted}
\textit{Italics}
\textbf{\textsl{BoldSlanted}}
\textbf{\textit{BoldItalics}}
\end{document}
最后需要 TFM 文件。一个穷人的解决方案是使用原始字体的 TFM 文件。示例需要(bash 语法):
cp $(kpsewhich ot1-zi4r-0.tfm) ot1-zi4r-sl-0.tfm
cp $(kpsewhich ot1-zi4b-0.tfm) ot1-zi4b-sl-0.tfm
再次强调,倾斜和斜体变体只是伪造的。此外,斜体校正缺失,但可以通过编辑文件来添加.tfm
。
答案2
现在 Inconsolata 有两种变体,具有斜体(以及粗体、粗体斜体和西里尔文和希腊文的所有粗细和样式支持)。
这些都是孤寂者 LGC和Inconsolata LGC 标记。后者还试图区分各种引号和撇号类字符、en/em 破折号和连字符......这些都列在链接上。
答案3
你的字体似乎没有斜体版本(至少据我所知),但你随时可以在LaTeX Font Catalogue