使用 input{} 对 Maxima 的输出进行排版,特别是左对齐

使用 input{} 对 Maxima 的输出进行排版,特别是左对齐

首先,如果这个问题已有答案,我深表歉意。

我正在使用 从 Maxima 输出符号结果tex(<output>,"filename")$,这使我得到每个端点上的一个表达式$$(更不用说一些\it{}和一些\over{},也许还有更多新的东西)。

我想把它放在方程环境中,比如,

\begin{equation*}
\input{filename.tex}
\end{equation*}

但由于 I guess 的冲突,这种方法没有奏效$$。我还尝试了 Maxima 的字符串方法,tex1()但我必须处理它周围的引号以及结尾的分号。

所以,我暂时放弃了分解这些很长的方程式(虽然我很想这么做!),而是将页面/纸张宽度设置得非常非常大。真恶心。

这让我现在不喜欢,因为有些方程式很短,有些方程式很长,导致我不得不大量水平滚动 - 因为它们都是居中对齐的。

在 tex.SE 的其他页面上,我看到了和以及fleqn中的选项,但都无法成功运行。amsmathamsart\setlength{mathindent}{0in}

也许我应该重新将它们分解,但这仍然无法让我轻松地将它们置于数学/方程式环境中……对吗?

谢谢你!

PS 我通常使用lualatexamsart,但这是非常通用的报告,它解释了我的简单代码:

\documentclass[fleqn]{amsart} %{standalone}
\usepackage[paperheight=10.75in,paperwidth=72.25in,margin=1in,heightrounded,showframe]{geometry}
\usepackage{amsmath}
\title{Maxima Results}
\begin{document}
\setlength{mathindent}{0pt}
\input{w02z0z111.tex}
\end{document}

这是一个非常简短的结果;

$$-{{310779087585246720\,i\,{\it z_0}^{14}+658160092626831360\,i\,
 {\it z_0}^{12}+21158324305920\,i\,{\it z_0}^{10}-380849837506560\,i
 \,{\it z_0}^8-174482709120\,i\,{\it z_0}^6-7971615\,i\,{\it z_0}^2-
 344373768\,i}\over{128\,3^{{{31}\over{2}}}\,{\it z_0}^4}}-{{
 41070158964605941940\,3^{{{9}\over{2}}}\,i\,{\it z_0}^{10}+
 10503610891673584872960\,{\it z_0}^9+96708129989156081584\,3^{{{9
 }\over{2}}}\,i\,{\it z_0}^8+17258799729306975187968\,{\it z_0}^7+
 162584742938225143616\,3^{{{9}\over{2}}}\,i\,{\it z_0}^6+
 19235016466581686759424\,{\it z_0}^5+61703548287898161920\,3^{{{11
 }\over{2}}}\,i\,{\it z_0}^4+13036868175072393805824\,{\it z_0}^3+
 384226900921449405185\,3^{{{7}\over{2}}}\,i\,{\it z_0}^2+
 4059210481688530072224\,{\it z_0}}\over{8748}}$$

答案1

您可以使用一些技巧来打破顶层的二进制运算。

  1. equation环境中打开minipage
  2. 中和$,这样就不会再被解释
  3. 小页面包含一个内联公式\displaystyle,其中有一个\raggedright设置
\documentclass{amsart} %{standalone}
\usepackage{amsmath}

\newcommand{\maximainput}[1]{%
  \begin{equation}
  \begin{minipage}{.9\columnwidth}
  \raggedright\catcode`$=9 % ignore $
  $\displaystyle\input{#1}$
  \end{minipage}
  \end{equation}
}

\title{Maxima Results}
\begin{document}

\maximainput{w02z0z111.tex}

\end{document}

在示例中,你得不到任何有用的东西,因为公式由两个分子很长的分数组成。如果分数被编码为

\frac{1}{<denominator>}\bigl(<numerator>\bigr)

分子可以跨行分割。

正如您注意到的,{\it z_0}这是极其错误的,您可以\let\it\relax在之后添加\raggedright以使其无效。

答案2

次要问题:默认情况下,Maxima 在其 TeX 输出前后写上“$$”,但您可以更改这一点。例如:

set_tex_environment_default ("\\begin{equation}", "\\end{equation}");

或者彻底删除它们:

set_tex_environment_default ("","");

答案3

Maxima 输出的代码非常丑陋。可以$$通过先在宏中读取文件(package catchfile)并删除$$via package来删除regexpatch。也可以将方程式压缩到 via package 行中resizegather。但由于方程式太长,方程式的长度减少太多:

\documentclass[fleqn]{amsart} %{standalone}
\usepackage[
%  paperheight=10.75in,
%  paperwidth=72.25in,
  margin=1in,
  heightrounded,
%  showframe
]{geometry}
\usepackage{amsmath}
\usepackage{catchfile}
\usepackage{regexpatch}
\usepackage{resizegather}
\title{Maxima Results}
\begin{document}
\setlength{\mathindent}{0pt}
\CatchFileDef\MaximaText{w02z0z111.tex}{\endlinechar=-1 }
\xpatchcmd*\MaximaText{$$}{}{}{}
\begin{gather*}\relax
\MaximaText
\end{gather*}
\end{document}

结果

当您手动重写等式时,您会得到更好的结果。

顺便说一句,不起作用的\mathindent设置是由于缺少反斜杠造成的\

\setlength{\mathindent}{0pt}

相关内容