我注意到了以下意想不到的(对我来说!)行为,如下图所示的 MWE 及其输出所示:
% arara: xelatex: { shell : yes }
\documentclass[11pt]{article}
\usepackage{minted}
\newcommand{\li}[1]{\mintinline{lean}{#1}}
\begin{document}
\mintinline{lean}{#print axioms}
\begin{minted}{lean}
#print axioms
\end{minted}
\li{#print axioms}
\end{document}
它看起来像命令\li
被解释为两个都a#
和 a ##
(参见参数中的双井号(数字符号,哈希字符)##1 是什么意思?),这很奇怪!
从排版角度来看,解决我的问题的明显“解决方案”是使用\mintinline{lean}{...}
而不是\li
别名。但我也很想知道代码是怎么回事。原则上它似乎\li
应该有效,而且,事实上,对于不以 开头的输入,它确实有效#
。
答案1
您正在处理逐字命令,尤其是其逐字参数,这始终很危险。而且,您正在通过传递宏定义中的参数来覆盖 minted 可能具有的任何特殊参数处理。更好的版本是\newcommand{\li}{\mintinline{lean}}
将参数处理留给minted
。
除此之外:还minted
提供\newmintinline
主要用于创建此类宏的功能。