3

プロジェクトの 1 つで MarkdownSharp を使用していますが、Url のいずれかにアンダースコア文字のペアが含まれている場合、斜体として扱われ、_ が に置き換えられることに気付きました<em>

私はグーグルを見てきましたが、この問題の振る舞いへの参照を見つけることができません.MarkdownSharpコードのコメントのいくつかを読むことから、これが起こらないようにコードが書かれていることが示唆されています. 以下のマークダウン コードのスニペットを参照してください。

ここで他のサブルーチンが呼び出される順序は重要です。a および img タグ内の * または _ がエンコードされるように、EscapeSpecialChars() の前にリンクおよび画像の置換を行う必要があります。

    public string Transform(string text)
    {
        if (String.IsNullOrEmpty(text)) return "";

        Setup();

        text = Normalize(text);

        text = HashHTMLBlocks(text);
        text = StripLinkDefinitions(text);
        text = RunBlockGamut(text);
        text = Unescape(text);

        Cleanup();

        return text + "\n";
    }

この動作に対する既知の回避策はありますか?

** 更新: MarkdownSharp のバージョンを使用していると思われる StackOverflow で URL を入力することをテストしました (そして、私のプロジェクトに従って AutoHyperlink が有効になっています)。 URLに表示されると壊れます。

4

2 に答える 2

4

MarkdownSharpには、まさにこの理由で作成された構成オプションがあります。

/// <summary>
/// when true, bold and italic require non-word characters on either side  
/// WARNING: this is a significant deviation from the markdown spec
/// </summary>
public bool StrictBoldItalic { get; set; }

背景情報については、https://blog.stackoverflow.com/2008/06/three-markdown-gotcha/のポイント1を参照してください。

于 2011-11-30T11:36:29.917 に答える
1

_バックスラッシュを使用して、保持したい文字をエスケープしてみましたか?

参照:http ://daringfireball.net/projects/markdown/syntax#backslash

記事から:

たとえば、単語を(HTML <em>タグの代わりに)リテラルアスタリスクで囲みたい場合は、次のようにアスタリスクの前に円記号を使用できます。

\*literal asterisks\*

Markdownのアスタリスクは、アンダースコアとほぼ同じです。


編集:私が行ったこのコメントにより、回答は受け入れられました。OPは、自動ハイパーリンクを無効にし、HTMLマークアップまたはマークダウンリンク構文のいずれかを使用してリンクを手動で挿入することを決定しました。

その機能は十分に考え抜かれていなかったようです。標準のマークダウンに準拠していないことをシステムに実行させるという警告が表示されます。これは、これらの機能のすべての問題を解決できなかったという警告のように思えます。そのようなバグを修正するには、ライブラリを変更する必要があるかもしれません...

于 2011-11-28T11:16:25.500 に答える