在下面的 min 示例中,我无法编译文件,因为它抱怨我必须将排版引擎更改为 xelatex 或 lualatex,而不是普通的 latex 或 pdflatex。在我的原始程序中,我只能在 pdflatex 中编译,因为我使用的是 koma-script。是否有可能让这个 min 示例在 pdflatex 中运行?
\documentclass[%
,paper=a4
,pagesize=auto
,BCOR=0.75cm
% ,oneside
,DIV=10
,numbers=noenddot
,captions=heading
,captions=nooneline
,listof=totoc
,bibliography=totoc
,index=totoc
,headings=normal
,USenglish,
]{scrbook}
\usepackage[svgnames]{xcolor}
\definecolor{ocre}{RGB}{243,102,25}
\usepackage{avant}
\usepackage{mathptmx}
\usepackage{microtype}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{filecontents}
\begin{filecontents*}{sample.m}
% create a file for output
!touch testFile.txt
fid = fopen('testFile.text', 'w')
for i=1:10
fprintf(fid,'%6.2f \n', i);
end
\end{filecontents*}
\usepackage[numbered,framed]{matlab-prettifier}
\usepackage[font={color=ocre,bf},figurename=Fig.,labelfont={it}]{caption}
\newfontfamily{\lstconsolas}{Consolas}
\newcommand\ph\mlplaceholder
\renewcommand{\lstlistingname}{Matlab Algorithm}% Listing -> Algorithm
\renewcommand{\lstlistlistingname}{List of \lstlistingname s}% List of Listings -> List of Algorithms
\begin{document}
%\lstlistoflistings
\lstinputlisting[style=Matlab-editor,basicstyle=\lstconsolas,caption=Sample code from Matlab]{sample.m}
\begin{lstlisting}[
style=Matlab-editor,
basicstyle=\lstconsolas\small,
escapechar=`,
caption={For educational purposes},
]
% example of while loop using placeholders
while x2 = 1 + 100 `\ph{condition}`
if `\ph{something-bad-happens}`
break
else
% do something useful
end
% do more things
end
\end{lstlisting}
\end{document}
输出结果应如下所示:
答案1
新答案
如果你想使用Consolas
字体,你必须使用xelatex
这意味着使用fontspec
而不是inputenc
。你可以在使用 XeLaTeX 代替 pdfLaTeX
ph
fontspec
命令不需要保罗·盖斯勒向您展示。
scrbook
pdflatex
与、xelatex
或完美搭配lualatex
。
这是我从您的代码注释fontenc
和inputenc
包中得到的结果:
如您所见,它使用了Consolas
字体等
上一个答案
很长的评论。我们会看看它是否可以转换成答案。
这是我在代码注释掉fontspec
并且没有任何字体设置的情况下得到的结果listings
。(我抑制了转义字符,\ph
因为它对我不起作用)
这是我使用相同代码但添加了\usepackage{inconsolata}
序言后得到的结果。如您所见,由于inconsolata
定义了新的打字机字体,因此清单中使用的字体发生了变化。这就是您想要的吗?