我按照 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}