当使用 Fourier 包宏表达式作为 perl 宏的参数时,perltex 失败

当使用 Fourier 包宏表达式作为 perl 宏的参数时,perltex 失败

在搜索了一些错误之后,我定义了以下小示例来展示我的问题。

该命令perltex可以很好地翻译以下文档:

\documentclass{article}

\usepackage{amssymb}
%\usepackage{fourier}
\usepackage{perltex}

\perlnewcommand\simplycopy[1]{
    return $_[0];
}

\begin{document}
    This works: $\mathbb{N}$

    This does not when using fourier: $\simplycopy{\mathbb{N}}$
\end{document}

请注意,fourier 包的使用已被注释掉。但是,如果我想使用 fourier,只需将两行更改为

%\usepackage{amssymb}
\usepackage{fourier}

我收到错误

! LaTeX 错误:数学环境分隔符错误。

请参阅 LaTeX 手册或 LaTeX Companion 了解解释。输入 H 可立即获得帮助。...

l.1 \math @bb {N} \endinput ?

显然,perltex 在某些内部使用的字体宏名称方面遇到了问题\math@bb

我是不是做错了什么,或者这是 perltex 或 fourier 中的一个错误?

自动生成的 lgpl 文件包含以下数据:

############################### PERL CODE ################################
sub latex_simplycopy {
return $_[0];
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LATEX RESULT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


############################### PERL CODE ################################
latex_simplycopy ('\\math@bb  {N}');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LATEX RESULT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\math@bb  {N}

所以我可以看到在原始宏输入中perltex添加了一个字符,这可能与问题有关。@\mathbb{N}

答案1

fourier包确实

\AtBeginDocument{\let\mathbb\math@bb}

这种方法有点管用,但实际上并非如此。参见何时使用 \LetLtxMacro?

\documentclass{article}
\usepackage{fourier}
\usepackage{letltxmacro}

\makeatletter
\AtBeginDocument{\LetLtxMacro\mathbb\math@bb}
\makeatother

\usepackage{perltex}

\perlnewcommand\simplycopy[1]{return $_[0];}

\begin{document}

This works: $\mathbb{N}$

This works too: $\simplycopy{\mathbb{N}}$

\end{document}

在此处输入图片描述

相关内容