Layout mathematica中的两列文档

Layout mathematica中的两列文档,layout,formatting,wolfram-mathematica,Layout,Formatting,Wolfram Mathematica,Mathematica可以用来编写非常好的文档。有人知道是否有可能编写两列文档吗?如果是这样的话,您能否提供一些示例或指向其他显示这种风格的笔记本的链接。显然,使用版本5的软件包可以实现这一点(请参阅) 但是,版本8中没有这样的调色板,“书写助手”调色板和选项检查器似乎都没有相关的选项 使用网格和其中的文本样式单元格可能会做一些事情,但我怀疑这会很简单。我认为Mathematica不支持任何好的多列实现-它与笔记本界面的结构不太兼容。publicon不支持适当的多列这一事实可能是Mathemat

Mathematica可以用来编写非常好的文档。有人知道是否有可能编写两列文档吗?如果是这样的话,您能否提供一些示例或指向其他显示这种风格的笔记本的链接。

显然,使用版本5的软件包可以实现这一点(请参阅)

但是,版本8中没有这样的调色板,“书写助手”调色板和选项检查器似乎都没有相关的选项


使用
网格
和其中的文本样式
单元格
可能会做一些事情,但我怀疑这会很简单。

我认为Mathematica不支持任何好的多列实现-它与笔记本界面的结构不太兼容。publicon不支持适当的多列这一事实可能是Mathematica不支持的一个很好的暗示

Publicon文档是 面向垂直滚动模式,很像HTML,而不是 而不是在页面布局程序中找到的逐页配置。 可以在表中配置多个列,但不能作为 流动。Publicon的重点是文档结构,允许 翻译成LaTeX或XML以提交给出版商。出版者 然后可以使用页面布局工具,利用自己的特定 用于生成单列或双列布局的格式 规格

当然,也可以使用诸如(Verbia的回答中提到的Author Tools包的一部分)和下面的黑客

下面是一些生成两列文本单元格的代码,该单元格将根据窗口大小调整列的大小,但文本不会从一列流向另一列。生成单元格后,您可以按常规输入

Cell[BoxData[
   GridBox[{{Cell["Column One:\nsome text", "Text"], 
      Cell["Column Two:\nmore text", "Text"]}}, ColumnsEqual -> True, 
    ColumnSpacings -> 2, ColumnAlignments -> Left, 
    ColumnWidths -> Dynamic[First[WindowSize /. Options[EvaluationNotebook[]]]/(2*18)]]], 
  "Text"] // CellPrint

或者,您可以在左侧显示文本,在右侧显示输入/输出

Cell[BoxData[GridBox[{
     {Cell["Column One:\nsome text", "Text"], Cell[BoxData[RowBox[{"1", "+", "1"}]], "Input"]},
     {"\[SpanFromAbove]", Cell[BoxData["2"], "Output"]}}, 
    ColumnsEqual -> True, ColumnSpacings -> 2, ColumnAlignments -> Left, 
    ColumnWidths -> Dynamic[First[WindowSize /. Options[EvaluationNotebook[]]]/(2*18)]]], 
  "Text"] // CellPrint

注意,我只做了一个从像素到em的狡猾转换,将前者除以18。真正的转换取决于系统和字体。此外,仅向输入和输出单元格添加
celllable
s也不起作用。因此,
In[n]:=
Out[n]=
可能需要使用中间的小列手动添加


最后,应该可以构造类似于author tools package使用的双边单元格代码的东西,该代码捕获文本/MathCaption单元格,后跟输入和输出单元格,并将它们组合成两列结构。

图形和插图可用于布局,例如:-

text = StringTake[ExampleData[{"Text", "Prufrock"}], {226, 931}];
columntext1 = StringTake[text, 350];
columntext2 = StringTake[text, {348, 706}];
column1 = Graphics[{White, Rectangle[{0, 0}, {150, 210}], Black,
    Inset[TextCell[columntext1,
      LineSpacing -> {0, 16}, TextJustification -> 1],
     {0, 210}, {Left, Top}, {150, Automatic}]},
   PlotRange -> {{0, 150}, {0, 210}},
   BaseStyle -> {FontFamily -> "Times", 
         FontWeight -> "Plain", FontSize -> 13}];
column2 = Graphics[{White, Rectangle[{0, 0}, {150, 210}], Black,
    Inset[TextCell[columntext2,
      LineSpacing -> {0, 16}, TextJustification -> 1],
     {0, 210}, {Left, Top}, {150, Automatic}]},
   PlotRange -> {{0, 150}, {0, 210}},
   BaseStyle -> {FontFamily -> "Times", 
         FontWeight -> "Plain", FontSize -> 13}];
image = ExampleData[{"TestImage", "House2"}];
clippedimage = Graphics[{Blue, Rectangle[{0, 0}, {500, 270}],
    Inset[image, {250, 170}, {Center, Center}, {512, 512}]},
   PlotRange -> {{0, 500}, {0, 270}}, ImageSize -> 500];
Graphics[{White, Rectangle[{0, 0}, {330, 400}],
  Inset[column1, {75, 295}, {Center, Center}, {150, 210}],
  Inset[column2, {255, 295}, {Center, Center}, {150, 210}],
  Inset[clippedimage, {165, 90}, {Center, Center}, {330, 179}]},
 PlotRange -> {{0, 330}, {0, 400}}, ImageSize -> 330]

这里有一个链接,展示了过去可能发生的事情……我曾考虑过使用
网格
,但正如您所说,这可能不是直接的。我所要做的就是获得与某些期刊相同的样式。我希望有一个MMA8的例子,展示如何创建包含文本、数学公式和示例代码的两列。我想如果我可以导出到Latex,然后使用两列样式就可以了。我没有想到这种可能性。不幸的是,我还没有弄清楚如何正确使用mathematica中的交叉引用,以便将其导出到latex。我按照你之前的建议给他们发了电子邮件,但他们没有回复。我想我只是想给wolfram的人发封电子邮件。我希望有人回答。无论如何,我想在mathematica中创建一个2列文档是不可能的。谢谢。克里斯,这看起来不错,但我认为写文档效率不高。我想要的是一种让mathematica用两列打印文档的方法。在这种情况下,我们只关心添加内容。使用图形对象太麻烦了。@jmlopez-是的,没有文字处理效率高。使用图形将其分为两个阶段:1。设置文本和2。运行页面布局。此外,很难计算在何处打断这两列的文本。但除此之外,这是一个有用的过程。与自动化相关:。不完全是两列,但相关: