我正在写一点 wiki 并浏览我所有的语法高亮选项。在 wiki 语法 (mediawiki) 和 markdown + 白名单标签之间进行辩论。我想我更喜欢后者,但我认为我的用户需要表格。为什么 Stackoverflow 上不允许使用表格?
<table> <tr> <td> </td> </tr> </table>
它们在问答形式中毫无用处。至少我想不出我需要使用表格来回答某人的问题或自己问一个人的原因。
另外,无论如何你都可以这样做:
cell 1-1 cell 1-2
cell 2-1 cell 2-2
编辑:所以在阅读了我的回复的评论后,我发现在某些情况下,表格可以提供更好的视觉帮助。所以我要推荐一个类似于CSV的markdown;我认为这很容易输入和实现。
如果您的网站建立在表格之上,并且您无法编写足以验证用户 html 语法正确的正则表达式,那么禁用表格将是一个好主意,否则您的布局可能会受到影响。
即使您的网站不是表格布局,在评论帖子等中有两组格式错误的表格 html 也可能导致您的网站被污损。
三个原因:
标准 Markdown不支持表格。它旨在就像电子邮件一样。SO 使用标准 Markdown,所以没有表格。
一些Markdown 扩展支持表格,但它们之间不兼容,这使 Markdown 的想法无效,因为内容变得依赖于特定的 Markdown 实现。
因此,只能使用 HTML-inside-Markdown 制作表格。这也不好。我确信 Markdown2PDF、Markdown2TeX 和 Markdown2TheNextBigML 转换器很容易编写。将带有嵌入 HTML 的 Markdown 转换为 HTML 以外的任何东西都不是一件容易的事。因此,如果允许(某些)嵌入 HTML,则将所有内容存储在 Markdown(纯文本)中是没有意义的。
清理所有用户提交的 HTML 的另一个原因是显而易见的,正确解析太困难和昂贵,并且会破坏布局(例如<table width="10000" height="10000">
)。
最后,轻量级(纯 Markdown)标记有一个巨大的好处:它不依赖于特定的站点布局(屏幕宽度、填充、边距、对齐方式、列宽等)。因此,如果一年后进行 SO 重新设计,则不需要编辑内容(HTML 片段隐含地依赖于特定的 CSS)。额外好处:更易于在第三方应用程序(如手机客户端)中使用。
我认为这是任意的。它们可能有很多用途,但这里似乎首选手动对齐固定宽度的文本(我认为这是一种黑客行为)。
就个人而言,我更喜欢 BBCode 风格的语法。
“显式”意味着任何预期的效果几乎可以用任何组合来表达,并且没有意外的效果(如在降价中,当使用许多特殊字符之一时)。例如,我不知道如何让这个站点以非固定字体 (*word*) 显示星号中的单词。摩尔斯电码不能使用下划线,因为它也是一个特殊字符。在 BBCode 中,只有一个特殊字符:[
此外,输入清理变得更加简单。
考虑到 Wisiwyg javascript 编辑器 (WMD) 必须实时呈现您正在输入的内容
(Jeff 从 SO 开始就想要的一个重要功能)
因此,我认为表格的动态更新对于 parse/display 来说太复杂了,因为 HTML 翻译器在您键入它们时必须解释不完整的表格结构。
这意味着要应对 colspan、rowspan、不正确的标题结构等功能。
因此,为了获得更好的动态预览体验,表格完全是从零开始的。
在许多情况下表格会很有用:数据表格、显示矩阵、显示算法的可能结果等。
我认为您不需要像 HTML 表(包含行跨度和所有)那样复杂的东西,我认为纯 CSV 足以满足 99% 的用例。它还将允许 javascript 动态渲染器轻松完成其工作。
CSV 是众所周知的、轻量级的、易于键入和理解的。除此之外,唯一需要的是 CSV 数据的开始和结束标记。例如 [csv]...[/csv] 或 ||...||。下面是它的样子:
[csv]
**XOR**,**true**,**false**
**true**, false, true
**false**, true, false
[/csv]
这将产生一个像这样的表:
XOR true false
true false true
false true false
(第一行第一列用粗体字)