在 minted 中放松命令

在 minted 中放松命令

我按照 LaTeX 中的说明使用丰富的 unicode这里。但是我在 Julia 语言中也使用 unicode,所以当我在 XeLaTeX 中输入 Julia 代码时,我得到一个错误,因为 √ 在 LaTeX 中是绑定的\sqrt,但在 minted 中是一个正常符号。这是一个 MWE:

\documentclass{article}

\usepackage{fontspec}
\usepackage{polyglossia}

\usepackage{newunicodechar}
\newunicodechar{√}{\sqrt}

\usepackage{minted} % uses minted 2.0+
% skip boxes on parser error:
\makeatletter
\expandafter\def\csname PYGdefault@tok@err\endcsname{\def\PYGdefault@bc##1{{\strut ##1}}}
\makeatother
% name of the code boxes:
\renewcommand\listingscaption{Код}

\usepackage{unicode-math}

\begin{document}

$√{2}$

\begin{listing}[H]
  \begin{minted}[breaklines,autogobble,linenos]{julia}
        P(a::ℝ) = k*T/A_n * (
                        (√a - 1)^(1/3) / (3 * ν^(1/3) * √a)
                      + 1 / (a - √a)
                  )
  \end{minted}
  \caption{(\ref{eq:a})\label{code:a}}
\end{listing}

$√{2}$

\end{document}

这应该用 进行编译xelatex -shell-escape mwe.tex。我正在寻找一种方法来解除 minted 环境中 √ 的绑定。

答案1

定义平方根符号在 中的行为有所不同minted

\documentclass{article}

\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{unicode-math}

\usepackage{minted} % uses minted 2.0+

\usepackage{etoolbox}
\usepackage{newunicodechar}

\newtoggle{inminted}
\newunicodechar{√}{\iftoggle{inminted}{√}{\sqrt}}
\AtBeginEnvironment{minted}{\toggletrue{inminted}}

% skip boxes on parser error:
\makeatletter
\expandafter\def\csname PYGdefault@tok@err\endcsname{\def\PYGdefault@bc##1{{\strut ##1}}}
\makeatother
% name of the code boxes:
\renewcommand\listingscaption{Код}

\begin{document}

$√{2}$

\begin{listing}[H]
  \begin{minted}[breaklines,autogobble,linenos]{julia}
        P(a::ℝ) = k*T/A_n * (
                        (√a - 1)^(1/3) / (3 * ν^(1/3) * √a)
                      + 1 / (a - √a)
                  )
  \end{minted}
  \caption{(\ref{eq:a})\label{code:a}}
\end{listing}

\end{document}

在此处输入图片描述

相关内容