2017-02-21 2 views
1

In Kramdown ist es im Allgemeinen einfach, eine Klasse zu etwas Text hinzuzufügen. Hier zum Beispiel, ist ein Zitat:Klasse zu Tabellenzeilen hinzufügen in Kramdown

> This is a blockquote. 
{:.example} 

HTML-Ausgabe:

<blockquote class="example">This is a blockquote.</blockquote> 

Während diese Technik in vielen Orten arbeitet, scheint es nicht mit Tabellen zu arbeiten. Ich möchte eine Klasse für eine Tabellenzeile festlegen. Ich erwarte, dass die folgenden, den Trick zu tun:

... 
|one|two|three|{:.example} 
... 

Mit anderen Worten, erwarte ich, dass die folgenden Teilleistung:

<tr class="example"> 
... 
</tr> 

Was ich tatsächlich bekommen, ist dies:

<tr> 
    <td>one</td> 
    <td>two</td> 
    <td>three</td> 
    <td>{:.example}</td> 
</tr> 

I merke, dass ich die Tabelle einfach in HTML schreiben könnte, aber ich hätte lieber den Lesbarkeitsvorteil von kramdown. Kann ich in kramdown machen, was ich will? Wenn nicht, gibt es eine bessere Lösung als das Ablegen in HTML?

+0

Nicht unbedingt ein "Duplikat" wie für eine andere Bibliothek (Kramdown vs. Python-Markdown), aber die Antwort ist meistens die gleiche: [Python Markdown Klasse zur Tabelle hinzufügen] (http://stackoverflow.com/ a/21885984/866026) – Waylan

Antwort

1

Dies ist derzeit nicht möglich in kramdown: siehe Ausgaben #417 und #436. Wenn Sie in reinem kramdown bleiben wollen, müssen Sie HTML verwenden.

Wenn Sie dies nicht tun möchten und kleinere Nachbearbeitungen vornehmen möchten, können Sie einige reguläre Ausdrücke verwenden. Zum Beispiel, wenn Sie nur die zweite Zeile in der Tabelle

| foo | bar | baz | 
| xyzzy | plugh | thud | 

dann

$ kramdown file.md | perl -pe 's{tr}{++$n == 2 ? "tr class=\"waldo\"" : $&}ge' 

oder

$ kramdown file.md | tr '\n' '^' | sed 's/<tr/<tr class="waldo"/2' | tr '^' '\n' 

beiden Produkte stylen:

<table> 
    <tbody> 
    <tr> 
     <td>foo</td> 
     <td>bar</td> 
     <td>baz</td> 
    </tr> 
    <tr class="waldo"> 
     <td>xyzzy</td> 
     <td>plugh</td> 
     <td>thud</td> 
    </tr> 
    </tbody> 
</table> 

ändern 2 zu welchem ​​auch immer Nummer, die du magst. Es ist ein Kludn, aber mir sind keine anderen Lösungen bekannt, die beide kramdown verwenden und nicht auf HTML-Tabellen zurückgreifen.

Verwandte Themen