使用 mcode 将 Matlab 代码导入 LaTeX 时出错

使用 mcode 将 Matlab 代码导入 LaTeX 时出错

我想将 matlab 代码导入到我的 latex 文档中:

考虑以下代码:

 \documentclass[bibliography=totoc,toc=sectionentrywithdots,DIV=10, parskip=half, 12pt,           captions=tableheading]{scrartcl}   
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage[autostyle=true,german=quotes]{csquotes} 
\usepackage[top=2.5cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{graphicx}
\addto\captionsngerman{%
\renewcommand{\figurename}{Abb.}%
 \renewcommand{\tablename}{Tab.}%
 }
\usepackage[headsepline]{scrlayer-scrpage} 
 \pagestyle{scrheadings}

 \usepackage{booktabs}   
 \usepackage[singlespacing]{setspace}
 \usepackage{romanbar}
 \usepackage{subfig}
  \usepackage[breaklinks=true]{hyperref}
  \usepackage{amsthm,amsmath,amssymb}
  \usepackage{dsfont}
 \allowdisplaybreaks
 \newtheorem{satz}{Satz}
  \usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
 \lstset{breakatwhitespace=false} 
 \newtheorem{lem}{Lemma}

 \ohead{\headmark}
\automark{section} 


 \begin{document}

 \lstinputlisting[caption={My program }]{bsp.m}


 \end{document}

使用\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}\lstset{breakatwhitespace=false}并使用 LualaTeX 进行编译时,我收到几个警告:

字体TU/pcr/m/n' undefined(Font) using 'TU/lmr/m/n形状

某些字体形状不可用,因此用默认字体形状代替。

另一个包裹有问题吗?

此外我得到了一个真正的错误:

! String contains an invalid utf-8 sequence. p_1=zeros(1, t-2); %% Speicher f

原因是我使用了“ü”。我该如何解决这个问题?抱歉,我是 LaTeX 学习的初学者

答案1

尝试从 MWE 中删除所有不必要的包是一个好主意;这也有助于在发布之前识别包不兼容问题。:)

无论如何,查看文件mcode.sty,似乎没有在包声明中设置任何包选项。从您提供的 MWE 中删除这些,我可以正确编译 - 我没有收到您上面收到的任何警告。该mcode包似乎只是为listings包设置了样式配置,这就是为您显示代码的内容。如果您想要更多定制,我建议您放弃该mcode包并单独使用它listings- 它非常强大,具有良好的文档,并且设置起来并不困难。

您没有包含 MATLAB 代码,因此我无法帮助您解决 MATLAB 错误。尝试用“普通”变体替换该字符,例如ü-> u- 毕竟它是代码。LaTeX 应该可以毫无问题地解析 unicode 字符。

为了完整性,下面是代码:

 \documentclass[bibliography=totoc,toc=sectionentrywithdots,DIV=10, parskip=half, 12pt,           captions=tableheading]{scrartcl}   
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage[autostyle=true,german=quotes]{csquotes} 
\usepackage[top=2.5cm, bottom=3cm, left=2.5cm, right=2.5cm]{geometry}
\usepackage{graphicx}
\addto\captionsngerman{%
\renewcommand{\figurename}{Abb.}%
 \renewcommand{\tablename}{Tab.}%
 }
\usepackage[headsepline]{scrlayer-scrpage} 
 \pagestyle{scrheadings}

 \usepackage{booktabs}   
 \usepackage[singlespacing]{setspace}
 \usepackage{romanbar}
 \usepackage{subfig}
  \usepackage[breaklinks=true]{hyperref}
  \usepackage{amsthm,amsmath,amssymb}
  \usepackage{dsfont}
 \allowdisplaybreaks
 \newtheorem{satz}{Satz}
 \usepackage{mcode} % removed package options causing errors
 \lstset{breakatwhitespace=false} 
 \newtheorem{lem}{Lemma}

 \ohead{\headmark}
\automark{section} 


 \begin{document}

 \lstinputlisting[caption={My program }]{bsp.m}


 \end{document}

和输出(给定一些任意的 MATLAB 代码): 在此处输入图片描述

相关内容