使用 minted + Haskell 中的特殊字符

使用 minted + Haskell 中的特殊字符

我想在 Haskell 语法中使用特殊字符(U+2225):

\begin{document} 
$\parallel$ this works as expected

\begin{minted}{haskell}
regardless which method I use in here I cannot get the paralell symbol to accure...
\end{minted}

\end{document}

我也尝试了 \DeclareUnicodeCharacter 但无法使其工作...有什么建议吗?

答案1

目前还不完全清楚您进行的实验\DeclareUnicodeCharacter是什么,但以下实验可行pdflatex

\documentclass{article}
\DeclareUnicodeCharacter{2225}{$\parallel$}
\usepackage{minted}
\begin{document} 
$\parallel$ this works as expected

\begin{minted}{haskell}
parseOr :: Parser Operator
parseOr = Or <$> oneOf "v+∥"
\end{minted}

\end{document}

结果:

在此处输入图片描述

当你在字符串外面使用 ∥ 时,minted它会认为存在语法错误,并在字符周围显示一个红框。你可以在打印符号之前通过转义到 LaTeX 来关闭此功能:

\documentclass{article}
\usepackage{minted}
\DeclareUnicodeCharacter{2225}{$\parallel$}
\begin{document} 
$\parallel$ this works as expected

\begin{minted}[escapeinside=\#\#]{haskell}
parseOr :: Parser Operator
parseOr = Or <$> oneOf "v+∥"

doSomething = doFirst #∥# doSecond
\end{minted}

\end{document}

这里的问题是你需要找到一个在代码中没有使用的字符这是允许的escapeinside(基本上只有标准 ASCII)。

另一种方法是完全关闭错误框:

\documentclass{article}
\usepackage{minted}
\DeclareUnicodeCharacter{2225}{$\parallel$}
\makeatletter
\AtBeginEnvironment{minted}{\dontdofcolorbox}
\def\dontdofcolorbox{\renewcommand\fcolorbox[4][]{##4}}
\makeatother
\begin{document} 
$\parallel$ this works as expected

\begin{minted}{haskell}
parseOr :: Parser Operator
parseOr = Or <$> oneOf "v+∥"

doSomething = doFirst ∥ doSecond
\end{minted}

\end{document}

两种情况的结果:

在此处输入图片描述

来源:希腊字母周围铸有红色方框

相关内容