
MATLAB で「行列除算」を表す「x=A\b」を mcode でタイプセットするにはどうすればよいでしょうか? MWE は次のとおりです:
\documentclass[12pt]{report}
\usepackage{amsthm,amsmath, amssymb, paralist, fancybox, listings, mathtools, verbatim, textcomp}
\usepackage{mcode}
\usepackage[unicode,pdfborder={0 0 0 0}, colorlinks=true, urlcolor=red, linkcolor=black]{hyperref}
\usepackage{float}
\usepackage[font=small,labelsep=none]{caption}
\lstset{language=Matlab}
\begin{document}
In MATLAB, it can be solved by executing the statement \mcode{x = A \ b}
\end{document}
答え1
次のように書くこともできます
\mcode{x = A \\ b }
次のように再定義する方がよいようです\mcode
。
\renewcommand{\mcode}{\lstinline[basicstyle=\lstbasicfont]}
そして、問題なく動作するようです。
私にとって、この再定義によって\mcode
\mcode{x = A \ b}
希望どおりにタイプセットされます。
引数内の何かが、\lstinline
コマンドに到達する前に処理されています。 定義を一新すると、\lstinline
引数をもう少し効率的に処理できるようになります。
基本的に、mcode.sty
以下を定義します
\newcommand{\mcode}[1]{\lstinline[basicstyle=\lstbasicfont]|#1|}
次のようなことを試してみると
\lstinline[basicstyle=lstbasicfont]|x=A\b|
すると、結果が得られます。 は、listings
のようなさまざまなマジックを実行します\verb
。ラッパー コマンドを定義すると\mcode
、すべての文字コードがすぐに処理されるわけではありません。
見る\lstinline!Foo! と \lstinline{Foo}新しく定義されたコマンドが、
\mcode|x=A \ b|
そして
\mcode{x = A \ b}
答え2
使用を検討してくださいmatlab-prettifier
パッケージその代わり:
\documentclass[a4paper]{article}
\usepackage{matlab-prettifier}
% Define a one-character shorthand (") for inline code.
\lstMakeShortInline[style=Matlab-editor]"
\begin{document}
"x=A\b" represents ``matrix division'' in MATLAB.
\end{document}