让 matlab-prettifier 在 pdflatex 中工作

让 matlab-prettifier 在 pdflatex 中工作

在下面的 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

phfontspec命令不需要保罗·盖斯勒向您展示。

scrbookpdflatex与、xelatex或完美搭配lualatex

这是我从您的代码注释fontencinputenc包中得到的结果:

在此处输入图片描述

如您所见,它使用了Consolas字体等

在此处输入图片描述

上一个答案

很长的评论。我们会看看它是否可以转换成答案。

这是我在代码注释掉fontspec并且没有任何字体设置的情况下得到的结果listings。(我抑制了转义字符,\ph因为它对我不起作用)

在此处输入图片描述

这是我使用相同代码但添加了\usepackage{inconsolata} 序言后得到的结果。如您所见,由于inconsolata定义了新的打字机字体,因此清单中使用的字体发生了变化。这就是您想要的吗?

在此处输入图片描述

相关内容