【发布时间】:2011-08-21 00:26:17
【问题描述】:
Mathematica 可用于编写非常好的文档。有谁知道是否可以编写包含 2 列的文档?如果是这样,您能否提供一些示例或指向其他显示这种风格的笔记本的链接。
【问题讨论】:
-
不完全是两列,但相关:Creating "margin" graphics
标签: layout formatting wolfram-mathematica
Mathematica 可用于编写非常好的文档。有谁知道是否可以编写包含 2 列的文档?如果是这样,您能否提供一些示例或指向其他显示这种风格的笔记本的链接。
【问题讨论】:
标签: layout formatting wolfram-mathematica
我认为 Mathematica 不支持任何好的多列实现 - 它与笔记本界面的结构并不真正兼容。 publicon 不支持正确的多列这一事实可能很好地暗示了 Mathematica 不支持。
Q: Does Publicon support multi-column layout?
公共文件是 面向类似于 HTML 的垂直滚动范例,而不是 而不是在页面布局程序中找到的逐页配置。 可以在表中配置多个列,但不能保持为 流动。 Publicon 的重点是文档结构,允许干净 翻译成 LaTeX 或 XML 以提交给出版商。出版商 然后可以使用利用自己特定的页面布局工具 生成自己的单列或双列布局的格式 规格。
当然,像Bilateral Cells(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
请注意,我只是通过将前者除以 18 进行了从像素到 em 的巧妙转换。真正的转换将取决于系统和字体。此外,仅将CellLabels 添加到输入和输出单元格是行不通的。因此In[n]:=Out[n]= 可能需要使用中间的小列手动添加。
最后,应该可以构建类似作者工具包使用的双边单元格代码,该代码抓取一个 Text/MathCaption 单元格,然后是一个输入和输出单元格,并将它们组合成一个两列结构。
【讨论】:
Graphics 和 Inset 可用于布局,例如:-
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]
【讨论】:
这显然曾经可以使用版本 5 的 AuthorTools 包(参见 this reference in the Mathematica users wiki)。
但是,版本 8 中没有这样的调色板,并且“写作助手”调色板和选项检查器似乎都没有相关选项。
也许可以使用 Grid 和其中的文本样式 Cells 来做某事,但我怀疑这会很简单。
【讨论】:
Grid,但就像你说的那样,它可能不是直截了当的。我想做的就是获得与某些期刊相同的样式。我希望有一个 MMA8 示例,展示如何在其中创建包含文本、数学公式和示例代码的 2 列。