【问题标题】:HTML inside MarkdownMarkdown 中的 HTML
【发布时间】:2019-12-14 07:36:29
【问题描述】:

我正在尝试使用一堆文本文件 + vim + Markdown.pl 作为高效的笔记平台。到目前为止,我对 Markdown.pl 解析器很满意。但是像这样的一行,

<link href="style.css" rel="stylesheet"></link>

转换成:

<p><link href="style.css" rel="stylesheet"></link></p>

我有什么遗漏的吗?

【问题讨论】:

  • 不熟悉 Markdown,但据我所知,它非常以 p 为中心,是的。这是一个问题吗?如果您自己将其包装在 &lt;div&gt; 中会发生什么?是否仍然添加&lt;p&gt;

标签: html css markdown


【解决方案1】:

您缺少的主要内容是 Markdown 并不是真正设计为模板系统,而​​是纯文本格式语法。如果您想包含样式表之类的 HTML 内容,最好使用 Haml 之类的内容。

另一种解决方案是围绕 Markdown 格式的内容创建一个纯 HTML 模板,如下所示(PHP 示例,但当然可以是任何语言)。

<html>
<head>
    <title>My Notes</title>
    <link href="style.css" rel="stylesheet">
</head>
<body>
    <h1>My notes</h1>
    <?php markdown(file_get_contents('your_content.md')); ?>
</body>

【讨论】:

  • ⁺¹ 用于制作带有格式选项的标题并包含降价文件的想法。 «Office 工具» 对于编写一堆格式化文本并没有真正的用处,所以 Markdown 来这里寻求帮助,至少对我来说☺
【解决方案2】:

如果markdown.pl 符合规范应该是可以的。

文档markdown syntax 的“内联 HTML”部分指出,您的 html“必须用空行与周围内容分隔,并且块的开始和结束标记不应使用制表符或空格缩进” .

【讨论】:

    【解决方案3】:

    Markdown 将它认为是一个段落的所有内容包装到 &lt;p&gt;&lt;/p&gt; 中。在这里试试:

    试试这个降价:

     hello **this is going to be bold**<link href="style.css" rel="stylesheet"></link>
    

    这将被转换为:

    <p>hello
    <strong>this is going to be bold</strong><link href="style.css" rel="stylesheet"></link></p>
    

    如果你能把所有东西都变成一个块,你会得到一个&lt;p&gt;&lt;/p&gt;。我不确定您是否可以通过降价来避免这种情况。

    【讨论】:

      【解决方案4】:

      Markdown.pl 在其最新版本中不接受链接标签作为块标签,因此它尝试将它们包装在 &lt;p&gt; 标签中。

      要纠正这个问题,请将单词“链接”添加到第 323 行的块标记正则表达式列表中,因此它们最终看起来像这样:

      my $block_tags_a = qr/p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del|link/;
      my $block_tags_b = qr/p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|link/;
      

      你可能不必同时做这两个,但结果是工作链接标签。

      【讨论】:

        【解决方案5】:

        一种简单的解决方法是在 HTML 标记之前插入 &lt;/p&gt;,在 HTML 标记之后插入 &lt;p&gt;

        </p><link href="style.css" rel="stylesheet"></link><p>
        

        这将被转换为:

        <p></p><link href="style.css" rel="stylesheet"></link><p></p>
        

        它仍然会添加段落,但可以帮助您的标签进入正确的层次结构。有些浏览器可能需要它。需要注意的一件事是不要使用双换行符或任何特定于 Markdown 的标点符号。

        【讨论】:

          【解决方案6】:

          你需要

          <link href="style.css" type="text/css" rel="stylesheet"></link>
          

          如果您尝试将其用作样式表(如果您是,请尝试查看 here)(我不确定 markdown 的来源,我对 markdown 一无所知)。

          这就是你想要使用它的方式吗?

          【讨论】:

          • 我认为这与正确使用 HTML 没有任何关系。据我检查,大多数 HTML 标记无缘无故地被包裹在 &lt;p&gt;&lt;/p&gt; 中。不过我确实检查了你的方法。
          • 这个问题和markdown有关。他可能已经知道如何输入&lt;link&gt;。问题是 Markdown 正在用一个额外的 &lt;p&gt; 来解析它。我认为这个答案不会有帮助。
          • 我只是说以防万一,因为如果 HTML 元素不起作用,我真的看不出有什么理由。我确实说过“如果你想将它用作样式表”,并且它被标记为“css”。
          猜你喜欢
          • 2015-07-03
          • 1970-01-01
          • 2017-03-13
          • 1970-01-01
          • 2010-11-14
          • 2011-11-24
          • 2011-06-30
          • 1970-01-01
          • 2017-05-27
          相关资源
          最近更新 更多