使用 breqn 包的多个张量索引

使用 breqn 包的多个张量索引

当我尝试使用tensor样式文件创建多个张量索引时breqn,遇到了此(最小)代码中显示的以下问题:

\documentclass{article}
\usepackage{breqn}
\usepackage{tensor}
\begin{document}
$\tensor{F}{_a}$
\end{document}

我收到以下错误:

ERROR: Package tensor Error: Sub/Superscript items out of order on input line 5, 

--- TeX said ---
(tensor)                some index tokens may now have been lost.

See the tensor package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.5 $\tensor{F}{_a}
                   $
--- HELP ---
From the .log file...

An index string has an extra or missing `^' or `_' token.

我怀疑这与用户如何breqn.sty重新定义^_埃格尔讨论过这里。如果我取出breqn包,一切都会顺利编译。

我的问题是:我可以在序言中或其他地方放置一些东西,以便\tensor在仍然使用该包的同时将功能返回给命令breqn

或者

有什么我可以用的吗不是样式tensor.sty文件来创建张量 \tensor[^{ab}_c]{F}{_{def}^g_h},其将产生如下所示的内容:

图像

仍在使用该breqn.sty包吗?

答案1

breqn包尝试了下标和上标字符的类别代码,但它只将它们设置在\begin{document}。我们需要将它们设置在 之前\usepackage{tensor}。例如,下面的代码似乎有效。

\documentclass{article}
\usepackage{breqn}
\catcode`_=12
\catcode`^=12
\usepackage{tensor}
\begin{document}
$\tensor[^{ab}_c]{F}{_{def}^g_h}$
\end{document}

另外,breqn似乎有一个错误:它留下_的类别代码是 11,而不是 8 或 12。(但您不必担心这一点。)

答案2

也许你可以使用滕辛德包裹:

\documentclass{article}
\usepackage{breqn}
\usepackage{tensind}

\tensordelimiter{?}

\begin{document}

$?{}^{ab}_c?$$?F_{def}^{}^g_h?$

\begin{dmath}
  f(x)=\frac{1}{x} \condition*{x\neq 0}.
\end{dmath}

\end{document}

在此处输入图片描述

答案3

它是mathstyle一个包(包含在 中flexisym,并flexisym包含在 中),它扰乱了和breqn的 catcode 。您可以使用(未​​记录的)选项将其关闭。似乎该包与 的主要目的无关,但我不确定。_^mathstyleoffmathstylebreqn

由于您使用了[mathstyleoff]选项breqn,因此您可以在包\usepackage{tensor}之前或之后使用。breqn

但正如 Bruno 所说,在 之后的 catcode_仍然是 11 breqn,这是一个错误,因为expl3\ProvidesExplPackage使其_成为一个字母。因此您应该\catcode`\_=8在包之后使用。

这是一个有效的例子:

\documentclass{article}

\usepackage{tensor}
\usepackage[mathstyleoff]{breqn}
%\catcode`\_=8 % use it for safey

\begin{document}

$\tensor[^{ab}_c]{F}{_{def}^g_h}$

\begin{dmath}
a+b=c=d
\end{dmath}

\end{document}

答案4

您可以手动排版:

在此处输入图片描述

\documentclass{article}
\usepackage{breqn}% http://ctan.org/pkg/breqn
\begin{document}
\begin{dmath*} \mathstrut^{ab}\mathstrut_c F\mathstrut_{def}\mathstrut^g\mathstrut_h \end{dmath*}
\end{document}

\mathstruttensor拉伸到所需的垂直长度,水平宽度为零。当然,这会影响代码的可读性。但这取决于您以前在文档中使用的程度。

相关内容