如果可以使用类似 TeX 的标记来代替 html 及其变体,那么将会产生巨大的好处,因为需要文档同时具有 (All)TeX 标记和 html 格式。
两种方式都有好处。对于 (All)TeX,浏览器界面无疑是提供灵活、用户友好的用户界面的最佳方式,而且只需要最少的编程。可以对要通过交互式屏幕捕获的设置进行编程,以管理包和变量设置。最后计算,一个复杂的文档可能需要超过 700 个变量设置,虽然我们大多数人通过类选择解决了这个问题,但困难仍然存在。另一个好处是可以通过可视化界面(而不是控制台)来组织文档数据并管理文件和目录,最后,也许是最重要的考虑因素之一是可以使用服务器和脚本语言进行计算以及访问网络文档和数据库,而 (All)TeX 在这方面受到限制。
对于html
宏语言来说,它可用于生成复杂的 HTML 模式,例如代码块、复杂的图像视觉显示(需要大量divs
)等。此外,如果标记采用 (All)TeX,则可以即时生成文档。
这是问题所在,在提供更多背景信息以满足规则并让封堵小组满意之前。
您的看法是什么?TeX 类标记是构造文档的好方法吗?我个人认为答案是肯定的,但表格除外。什么样的标记适合表格?
更多背景知识。我有一个用 CodeIgniter 构建的个人 CMS,用于保存大量文档和个人笔记,尤其是关于编程的。
代码块中的任何代码都可以交互运行,并在浏览器中查看结果。我有多种语言的代码,例如 javascript、lua、php、haskell、perl 等。标记最初基于使用硬编码的 html、markdown 和 wiki 样式标记。我现在添加了一个过滤器,它可以解析 LaTeX 代码并html
在简单的环境中生成相关代码,例如。我还为大多数常用命令和一些图像\begin{jscodeblock}..\end{jscodeblock}
添加了代码。LaTeX
按下“texify”按钮会将文档发送到过滤器,该过滤器会解析任何 markdown 和类似 wiki 的标签并生成 pdf,可直接在浏览器中查看。
对我来说,以及可能对任何习惯将长文档分成不同文件的人来说,一个主要优点是,该系统可以在浏览器中“整理”所有文件并生成完整文档pdf
。左侧的菜单代表所有单个文件main
,如果需要完整文档,则使用一个文件,否则只打印页面。自动“菜单”系统有助于解决管理数百个文件的噩梦。(第一张图片左侧)。
我一直在使用 markdown 及其变体,并且熟悉pandoc
和LaTeX2html
包。它们都有其局限性和用法。到目前为止,仅通过 LaTeX 命令进行标记已经改善了我的工作流程和工作效率。我已设法为大多数宏提供过滤器,以便在浏览器中很好地显示 - 表格除外。解析和翻译简单的表格标记(例如 mark-down 提供的标记)没有问题,但是任何更复杂和解析的东西几乎是不可能的。
我相信答案可能在于重新定义我们在 LaTeX 中标记表格的方式,我欢迎您提出想法。
数学标记,用 MathJax 和一个小过滤器解决了。系统中还有更多我可以在问题中描述的内容,例如管理设置、封面图片、样式等。
由于我们缺少标签experimental
,我已将帖子标记为mark-up
。
编辑:实践中类似的想法作者让它旋转。
答案1
我觉得这一切的目的是为了尽可能地提供人性化的输入,使用 markdown 或其衍生产品是有意义的(旁注:我以前也曾追求过这个想法)。
出于这种格式,我想提出表格作为 kramdowns markdown 扩展的示例:
| city | age_range | gender | marketing_target |
|----------|-----------|--------|------------------|
| New York | < 30 | M | Y |
| Chicago | < 30 | M | Y |
| Chicago | < 30 | F | Y |
| New York | < 30 | M | Y |
| New York | < 30 | M | Y |
它看起来确实像一张桌子,对吧?
答案2
稍微描述一下我迄今为止尝试提供的一些答案并扩展该主题。
考虑表格的结构,而不考虑它如何以及在何处显示或打印。一个简单的表格通常会包含某种形式的数据集。例如,
DATA_LABELS = ['city', 'age_range', 'gender', 'marketing_target'];
DATA_SET = [
['New York', '<30', 'M', 'Y'],
['Chicago', '<30', 'M', 'Y'],
['Chicago', '<30', 'F', 'Y'],
['New York', '<30', 'M', 'Y'],
['New York', '<30', 'M', 'Y'],
...
['Chicago', '>80', 'F', 'Y']];
这当然与 csv 文件非常相似。对于熟悉 JavaScript 的人来说,只要在变量前面添加 var,上面的代码就是有效的,使用一些简短的代码,您就可以生成一个表格,例如如下所示:
纯html
表格使用我们熟悉的混乱标签代码,其优点是具有良好的“结构”,可以将表示与标记分开。html 的问题在于冗长,这导致了一些解决方案,例如各种版本的 markdown。
由于基于 TeX 的系统提供了强大的机制,因此中间标记语言可以提供帮助。例如,
\begin{table}
\tablecaption{\captionlorem}
\begin{tabular}{lllp{2.5cm} };
\tr
\th heading 1
\th heading 2
\th heading 3
\th heading 3
\tr
\td test
\td test
\td test
\td test
\tr
\td test
\td test
\td test
\td test
\end{tabular}
\end{table}
这可以在浏览器和 pdfLaTeX 中轻松转换,我们得到:
表头可以简化为:
\begin{Table}[class= \simple_table]
...
\end{Table}
其中类定义一些 css,并且相同的名称用于定义表头定义的 LaTeX 代码。以进一步复杂化解析为代价,可以这样说:
\begin{Table}[class= \simpletable]
\datalabels{...,...,...,}
\dataset{...,...,...,}
\end{Table}
然后就大功告成了。数据应该放在它应该放的地方,样式留给类。多行和多列仍然是一个问题;一种观点是,多列指的是展示细节,应该添加到类中,而不是数据标记中。另一种观点是,标记为的数据意味着[...,'F' + 'F',]
两个相邻的单元格共享相同的值,它们应该被解析为跨越两个单元格的多列。
表格的 ConTeXt 编码与我上面使用等的示例非常相似\td
,\tr
但它仍然有混合数据、演示和标签的缺点。