在Github gist markdown的中心有没有可能有一张桌子? [英] Is it possible to have a table in the center in Github gist markdown?

查看:258
本文介绍了在Github gist markdown的中心有没有可能有一张桌子?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以在Github gist markdown的中心有一张表吗?如果是这样,怎么做?

以下语法可以在降价文件上创建一个表:

 不知何故,表总是被刷新到左边! 

| Column1 | Column1 | Column1 |
|:---- |:----:| ----:|
| Column1 | Column1 | Column1 |

但是表格被刷新了,请参阅

解决方案首先,请注意,没有提及将任何样式应用于GitHub Flavored Markdown 规范(请参阅 tables 部分)。正如您的示例所示,您知道可以将表格中的文本居中,但仅适用于单元格,并且不会影响父表格(这是HTML和CSS的工作方式,并非特定于Markdown或GitHub)。

有几种方法可以为HTML定义自定义样式(Markdown生成的样式),但GitHub不允许它们使用。



其中一种方法是定义CSS规则。然而,在规范中,GitHub明确声明他们的行为不允许< style> 标签。另外一种方法是在Markdown文档中包含原始HTML内联样式)。然而,出于安全原因,GitHub对他们允许的内容非常有选择性。在标记项目中,他们定义了适用于所有支持的标记语言的过滤器(包括,但不限于Markdown)。在相关的部分,文档解释(加入强调):



  1. HTML被消毒,积极地删除可能伤害您和您亲属的内容(如 script 标记,内嵌样式 class id 属性。查看完整的消毒过滤器白名单。


鉴于上述情况,根本无法为托管文档定义自己的样式在GitHub上。也就是说,有些人希望能够在Markdown语法本身中定义样式。但是,原始的Markdown 规则解释(强调增加):


Markdown的语法是为了一个目的:用作为网络写作的格式。

Markdown不是HTML的替代品,甚至不接近它。它的语法非常小,仅对应于HTML标签的一小部分。这个想法并不是创建一个使插入HTML标签更容易的语法。在我看来,HTML标签已经很容易插入。 Markdown的理念是让阅读,编写和编辑散文变得容易。 HTML是一种发布格式; Markdown是一种书写格式。因此,Markdown的格式化语法只能解决以纯文本形式传达的问题。



对于Markdown's未涵盖的任何标记语法,您只需使用HTML本身。


因为它不是发布格式,所以提供一种样式化文档的方式Markdown的范围。这给我们留下了GitHub明确禁止的方式。因此,不可能在GitHub上放置一个表格(或者应用任何其他的自定义样式)。






另外,虽然GitHub使用CommonMark规范(带有扩展名)而不是原始的Markdown规则,但我引用了原始规则,因为我引用的部分讨论了创建Markdown时做出的各种设计决策背后的原理。 Markdown(和CommonMark's)的行为直接关系到这一理念。虽然CommonMark规范没有涉及设计决策(期望它与Markdown不同),但它的确如此参考上面引用的第一段讨论的一些观点。这与哲学没有任何矛盾。因此,我认为这与我们对CommonMark不属于什么和不属于什么的期望是相关的,并且通过扩展GitHub Flavored Markdown。




为了完整性,让我们来看看OP提供的每个例子。
$ b


  1. 第一个例子只是一个中间列对齐中心的表格。如果我们查看源代码(或使用浏览器的检查工具),我们看到以下HTML生成了:

     << ;表> 
    < thead>
    < tr>
    < th align =left> Column1< / th>
    < th align =center> Column1< / th>
    < th align =right> Column1< / th>
    < / tr>
    < / thead>
    < tbody>
    < tr>
    < td align =left> Column1< / td>
    < td align =center> Column1< / td>
    < td align =right> Column1< / td>
    < / tr>
    < / tbody>
    < / table>

    注意 align =center是只在每行的中间单元格上定义。由于这种样式只能由子元素而不是父元素继承,因此这不会作为整体应用于表格。
    另外,在 align 属性。 rel =noreferrer> HTML5规范(我可以找到);但是,在 HTML 4.01规范中,您可以在元素或其任何子元素上定义一个 align 属性,然后由该元素的子元素继承只要。
    当然,如上所述,Markdown不提供一种机制来定义除单元格以外的任何对齐方式。但即使您可以在元素上定义 align ,该规范解释了[t]他的属性指定了数据的对齐和单元格中文本的理由。
    因此,如果仍然不会影响表格在其父元素中的位置。

  2. 第二个例子是一个封装在< center> 元素中的表。查看源代码HTML可以发现,< center> 标签已被删除。
    其实,看一下GitHub的列入白名单的元素显示 center 元素不被允许并被删除。


  3. 第三个示例尝试将表格封装在段落中,使用 align =center在段落中定义。但是,请注意(解释)HTML:

     < p align =center>< / p> 
    < table>
    < thead>
    < tr>
    < th align =left> Column1< / th>
    < th align =center> Column1< / th>
    < th align =right> Column1< / th>
    < / tr>
    < / thead>
    < tbody>
    < tr>
    < td align =left> Column1< / td>
    < td align =center> Column1< / td>
    < td align =right> Column1< / td>
    < / tr>
    < / tbody>
    < / table>
    < p>< / p>

    根据 HTML5规范


    A <如果 p 元素后面紧跟一个... 元素的结束标记, table ...元素。

    因此,段落实际上并不包含 table ,但是被表格的开始标签隐式关闭。



    但这让我好奇。如果您使用 div 而不是段落。但是没有任何区别。正如我们前面所建立的那样, align 属性只影响单元格文本。您需要指定样式来更改页面上表格的位置,并且Github明确禁止定义自己的样式。



Is it possible to have a table in the center in Github gist markdown? If so, how?

I've used the following syntax to create a table on a markdown file:

 Somehow the table is always flushed to the left!!!

|Column1|Column1|Column1|
|:----|:----:|----:|
|Column1|Column1|Column1|

But the table is flushed left, see https://gist.github.com/alvations/5095d3bcc0eec357c78f1c21a49e334f

Is it possible to have the table at the center of the page when viewing?

I've tried the suggestion from https://stackoverflow.com/a/24639508/610569 to use:

Somehow the table is always flushed to the left!!!

<center>

|Column1|Column1|Column1|
|:----|:----:|----:|
|Column1|Column1|Column1|

</center>

And the table disappears when viewing, see https://gist.github.com/alvations/cd3495e7107b7701cf1cf1da2a839534

I've also tried https://stackoverflow.com/a/12118349/610569 :

Still on the left!!!
<p align="center">

|Column1|Column1|Column1|
|:----|:----:|----:|
|Column1|Column1|Column1|
</p>

But it's still on the left, see https://gist.github.com/alvations/23c18681df7a6bbf175d0e8c2cfccba3

Images for all 3 versions above:

解决方案

In short, it's not possible. GitHub does not allow you to define your own styling.

First, note that there is no mention of the ability to apply any styling to any block level types in the GitHub Flavored Markdown spec (see the tables section). As your examples show, you are aware that you can center text within table cells, but that only applies to the cells and has no effect on the parent table (which is how HTML and CSS work and is not specific to Markdown or GitHub).

There are a few ways to define custom styles for HTML (which Markdown generates), but GitHub does not permit them.

One such way is to define CSS rules. However, right in the spec, GitHub explicitly states that they do not allow <style> tags.

Another way is to include raw HTML right in the Markdown document (with inline styles). However, for security reasons, GitHub is very selective about what they allow. In the Markup project they define the filters they apply to all markup languages they support (including, but not limited to Markdown). In pertinent part, the docs explain (emphasis added):

  1. The HTML is sanitized, aggressively removing things that could harm you and your kin—such as script tags, inline-styles, and class or id attributes. See the sanitization filter for the full whitelist.

Given the above, it is simply not possible to define your own styling for documents hosted on GitHub. That said, some expect to be able to define styling within the Markdown syntax itself. However, the original Markdown rules explain (emphasis added):

Markdown’s syntax is intended for one purpose: to be used as a format for writing for the web.

Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags. The idea is not to create a syntax that makes it easier to insert HTML tags. In my opinion, HTML tags are already easy to insert. The idea for Markdown is to make it easy to read, write, and edit prose. HTML is a publishing format; Markdown is a writing format. Thus, Markdown’s formatting syntax only addresses issues that can be conveyed in plain text.

For any markup that is not covered by Markdown’s syntax, you simply use HTML itself.

As it is not a "publishing format," providing a way to style your document is out-of-scope for Markdown. Which leaves us with the ways which GitHub explicitly disallows. Therefore it is not possible to center a table (or apply any other custom styling) on GitHub.


As an aside, while GitHub uses the CommonMark spec (with extensions) rather than the original Markdown Rules, I make reference to the original rules as the section I quote from discusses the philosophy behind various design decisions made when creating Markdown. Markdown's (and CommonMark's) behaviors are directly related to that philosophy. While the CommonMark spec does not get into the design decisions (expect when it differs from Markdown), it does make reference to some of the points discussed in the very paragraph I quoted above. And nowhere does it contradict that philosophy. Therefore, I consider it relevant to the expectations we should have about what is and what is not part of CommonMark, and by extension, GitHub Flavored Markdown.


For completness, let's examine each of the examples provided by the OP.

  1. The first example is simply a table with the middle column aligned "center". If we "view source" (or use the browser's "inspect" tool), we see the following HTML was generated:

    <table>
        <thead>
            <tr>
                <th align="left">Column1</th>
                <th align="center">Column1</th>
                <th align="right">Column1</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td align="left">Column1</td>
                <td align="center">Column1</td>
                <td align="right">Column1</td>
            </tr>
        </tbody>
    </table>
    

    Note that align="center" is only defined on the middle cell of each row. As such styling is only inherited by children elements, not parent elements, this does not get applied to the the table as a whole. As an aside, the align attribute is not even mentioned in the HTML5 spec (that I could find); however, in the HTML 4.01 spec, you can define an align attribute on a table element or any of its children which is then inherited by the children of that element only. Of course as established above, Markdown does not provide a mechanism to define alignment on anything except the cells. But even if you could define align on the table element, the spec explains that "[t]his attribute specifies the alignment of data and the justification of text in a cell." Therefore, if would still have no effect on how the table is positioned in its parent element.

  2. The second example is a table wrapped in a <center> element. A look at the source HTML reveals that the <center> tag was stripped out. In fact, a look at GitHub's whitelisted elements reveals that center elements are not allowed and stripped out.

  3. The third example attempts to wrap the table in a paragraph with align="center" defined on the paragraph. However, note the (interpreted) HTML:

    <p align="center"></p>
    <table>
        <thead>
            <tr>
                <th align="left">Column1</th>
                <th align="center">Column1</th>
                <th align="right">Column1</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td align="left">Column1</td>
                <td align="center">Column1</td>
                <td align="right">Column1</td>
            </tr>
        </tbody>
    </table>
    <p></p>
    

    According to the HTML5 spec:

    A p element's end tag may be omitted if the p element is immediately followed by an... table... element.

    Therefore, the paragraph does not actually wrap the table, but is implicitly closed by the table's opening tag.

    But that got me curious. What if you used a div instead of a paragraph. But that makes no difference. As we've established earlier, the align attribute only effects cell text. You need to assign a style to change the position of a table on the page and Github explicitly disallows defining your own styles.

这篇关于在Github gist markdown的中心有没有可能有一张桌子?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆