在搜索了一些错误之后,我定义了以下小示例来展示我的问题。
该命令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}