Créer un tableau sans en-tête dans Markdown


141

Est-il possible de créer un tableau sans en-tête dans Markdown?

Le HTML ressemblerait à ceci:

<table>
<tr>
    <td>Key 1</td>
    <td>Value 1</td>
</tr>
<tr>
    <td>Key 2</td>
    <td>Value 2</td>
</tr>
</table>

Réponses:


92

La plupart des analyseurs Markdown ne prennent pas en charge les tableaux sans en-têtes. Cela signifie que la ligne de séparation pour les en-têtes est obligatoire.

Analyseurs qui ne prennent pas en charge les tableaux sans en-têtes

Analyseurs qui prennent en charge les tableaux sans en-têtes.

  • Kramdown : un analyseur en Ruby
  • Texte :: MultiMarkdown : module CPAN Perl.
  • MultiMarkdown : application Windows.
  • ParseDown Extra : un analyseur en PHP.
  • Pandoc : Un convertisseur de document pour la ligne de commande écrite en Haskell (prend en charge les tables sans en-tête via ses extensions simple_tableset multiline_tables)
  • Flexmark : un analyseur en Java.

Solution CSS

Si vous êtes capable de changer le CSS de la sortie HTML, vous pouvez cependant utiliser la :emptypseudo-classe pour masquer un en-tête vide et donner l'impression qu'il n'y a pas d'en-tête du tout.


28
L'analyseur de Github pourrait être ajouté à la liste de ceux qui ne le supportent pas.
Quantum7


80

Si cela ne vous dérange pas de gaspiller une ligne en la laissant vide, considérez le hack suivant (c'est un hack, et ne l'utilisez que si vous n'aimez pas ajouter de plugins supplémentaires).

| | | |
|-|-|-|
|__Bold Key__| Value1 |
| Normal Key | Value2 |

Pour voir à quoi pourrait ressembler ce qui précède, copiez ce qui précède et visitez https://stackedit.io/editor

Il a travaillé avec gitlab ce / GitHub de Markdown mises en œuvre.


1
Avec quelle mise en œuvre cela fonctionne-t-il? Cela ne fonctionne pas avec Text :: MultiMarkdown de Perl mais je pense que cela pourrait fonctionner avec certaines implémentations de PHP MultiMarkdown.
RedGrittyBrick

2
Cela fonctionnait avec les implémentations de markdown de gitlab / github. Je ne suis pas sûr du texte de Perl :: MultiMarkdown
Gowda

8
Cela créera un en-tête de tableau vide et une ligne vide.
Gajus

Cela fonctionne très bien avec le pandocdémarquage en pdf.
Alex Baranowski

Merci! Cela fonctionne également avec le démarquage (multi) de Laravel 5.8. Aucun en-tête n'est visible - seulement une ligne. Ressemble à un diviseur, qui peut être supprimé en utilisant du CSS dans le thème.
user2966991

17

Je l'ai fait fonctionner avec Markdown de Bitbucket en utilisant un lien vide:

[]()  | 
------|------
Row 1 | row 2

2
Invitera également une ligne d'en-tête vide. Au moins sa moitié seulement de la hauteur d'une ligne normale. A travaillé pour moi en tant que Hack dans github aussi
Londane

Ce hack a fonctionné pour moi lors de l'écriture de documentation dans Insomnia. Crée toujours une ligne d'en-tête, mais c'est beaucoup plus court que si j'y mets du texte. Merci!
jkmartindale

Brillant! Je vois encore un petit espace vertical avec Github Markdown, mais c'est mieux qu'avant.
Keith Bennett

15

Solution universelle

La plupart des suggestions ne fonctionnent malheureusement pas pour tous les lecteurs / éditeurs Markdown, par exemple la populaire extension Markdown Viewer Chrome, mais elles fonctionnent avec iA Writer .

Ce qui semble fonctionner dans ces deux programmes populaires (et pourrait fonctionner pour votre application particulière) est d'utiliser HTML comment blocks ('<!-- -->'):

| <!-- -->    | <!-- -->    |
|-------------|-------------|
| Foo         | Bar         |

Comme certaines des suggestions précédentes, cela ajoute une ligne d'en-tête vide dans votre visionneuse / éditeur Markdown. Dans iA Writer, il est esthétiquement suffisamment petit pour ne pas trop me gêner.


Cela dégrade complètement l'intérêt d'utiliser Markdown, car lorsqu'ils sont considérés comme du texte uniquement, les commentaires seront supprimés et les colonnes ne seront même plus alignées.
hackel

Je pense que @hackel a mal compris. Cela n'aligne pas les colonnes en utilisant des largeurs fixes. Au contraire, cela donne une bonne solution de contournement pour avoir des en-têtes de colonne valides mais vides. C'était une excellente solution de contournement dans ma situation. Le tableau est toujours rendu comme prévu / attendu; il n'avait simplement pas de ligne d'en-tête.
mdahlman

8

Ce qui suit fonctionne bien pour moi dans GitHub. La première ligne n'est plus en gras car ce n'est pas un en-tête:

<table align="center">
    <tr>
        <td align="center"><img src="docs/img1.png?raw=true" alt="some text"></td>
        <td align="center">Some other text</td>
        <td align="center">More text</td>
    </tr>
    <tr>
        <td align="center"><img src="docs/img2.png?raw=true" alt="some text"></td>
        <td align="center">Some other text 2</td>
        <td align="center">More text 2</td>
    </tr>
</table>

Vérifiez un exemple de tableau HTML sans en-tête ici .


5
C'est exactement ce que l'interlocuteur a dit ne pas vouloir.
Neil Mayhew

Les tableaux HTML ne semblent pas fonctionner dans Bitbucket ( community.atlassian.com/t5/Bitbucket-questions/… ) - il affiche le HTML lui-même plutôt que le rendu d'un tableau.
jsaven

7

Omettre l'en-tête au-dessus du diviseur produit une table sans en-tête dans au moins Perl Text :: MultiMarkdown et dans FletcherPenney MultiMarkdown

|-------------|--------|
|**Name:**    |John Doe|
|**Position:**|CEO     |

Voir la demande de fonctionnalité PHP Markdown


Les en-têtes vides dans PHP Parsedown produisent des tableaux avec des en-têtes vides qui sont généralement invisibles (selon votre CSS) et qui ressemblent donc à des tableaux sans en-tête.

|     |     |
|-----|-----|
|Foo  |37   |
|Bar  |101  |

À propos de l'utilisation de Parsedown, en fait l'en-tête est toujours là, il suffit de vérifier le HTML. Si vous avez un remplissage CSS sur les cellules, vous verrez les cellules d'en-tête. Mais je suppose que cela table th:empty { padding: 0; }réglerait ce problème.
AymDev

6

Au moins pour le GitHub Flavored Markdown , vous pouvez donner l'illusion en mettant en gras toutes les entrées de ligne sans en-tête avec le format normal __ou **:

|Regular | text | in header | turns bold |
|-|-|-|-|
| __So__ | __bold__ | __all__ | __table entries__ |
| __and__ | __it looks__ | __like a__ | __"headerless table"__ |

Je cherchais quelque chose qui fonctionnerait dans GFM et ce hack est créatif!
Mrchief le

3
$ cat foo.md
Key 1 | Value 1
Key 2 | Value 2
$ kramdown foo.md
<table>
  <tbody>
    <tr>
      <td>Key 1</td>
      <td>Value 1</td>
    </tr>
    <tr>
      <td>Key 2</td>
      <td>Value 2</td>
    </tr>
  </tbody>
</table>

Cela ne semble pas fonctionner avec github.com/chjj/marked . Y a-t-il une référence, dans laquelle je peux rechercher si c'est même le comportement attendu?
adius

@AdrianSieber J'utilise Kramdown, je ne peux pas en parler d'autre.
Steven Penny

2

Vous pourrez peut-être masquer un en-tête si vous pouvez ajouter le CSS suivant:

<style>
    th {
        display: none;
    }
</style>

C'est un peu lourd et ne fait pas de distinction entre les tables, mais cela peut le faire pour une tâche simple.


La seule astuce CSS qui fonctionne pour moi pour une raison quelconque (j'utilise VNote avec le moteur de rendu Markdown-it). Aucune des solutions données ici: stackoverflow.com/questions/12023771/hide-empty-cells-in-table n'a fonctionné.
quoi le

1

J'utilise <span>dans le premier en-tête de colonne:

 <span> |
---     |    ---
Value   |  Value
Value   |  Value

Il crée un en-tête vide avec une bordure, mais avec la moitié de la taille.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.