Подтвердить что ты не робот

Уточнение Github, подсветка синтаксиса блоков кода в ячейке таблицы

У Markdown есть синтаксис таблицы каналов, но этого недостаточно для некоторых случаев.

| table | syntax | without multiline cell content |

Итак, мы можем использовать теги HTML-таблицы.

<table>
<tr>
<td>
   ```csharp
   const int x = 3;
   const string y = "foo";
   readonly Object obj = getObject();
   ```
</td>
<td>
  ```nemerle
  def x : int = 3;
  def y : string = "foo";
  def obj : Object = getObject();
  ```
</td>
<td>
  Variables defined with <code>def</code> cannot be changed once defined. This is similar to <code>readonly</code> or <code>const</code> in C# or <code>final</code> in Java. Most variables in Nemerle aren't explicitly typed like this.
</td>
</tr>

Но некоторое время назад подсветка синтаксиса была нарушена, и эта страница

4b9b3361

Ответ 1

Вы можете использовать <pre> в таблицах, как сказал teh_senaus. Но если вы это сделаете, подсветка синтаксиса не будет работать... или будет?

Через случайное экспериментирование я обнаружил, что GitHub позволяет указать его с помощью <pre lang="csharp">. Это имеет тот же эффект, что ```csharp делает установку подсветки синтаксиса на С#.

Это не документировано нигде в справочном центре GitHub, ни в документации linguist. Но он работает даже внутри таблиц.

Итак, для вашей таблицы примеров новый код будет выглядеть следующим образом:

<table>
<tr>
<td>
   <pre lang="csharp">
   const int x = 3;
   const string y = "foo";
   readonly Object obj = getObject();
   </pre>
</td>
<td>
  <pre lang="nemerle">
  def x : int = 3;
  def y : string = "foo";
  def obj : Object = getObject();
  </pre>
</td>
<td>
  Variables defined with <code>def</code> cannot be changed once defined. This is similar to <code>readonly</code> or <code>const</code> in C# or <code>final</code> in Java. Most variables in Nemerle aren't explicitly typed like this.
</td>
</tr>

Ответ 2

Добавьте пустую строку между <td> и блоком кода.

Здесь фиксированная уценка:

<table>
<tr>
<td>

  '''csharp
  const int x = 3;
  const string y = "foo";
  readonly Object obj = getObject();
  '''
</td>
<td>

  '''nemerle
  def x : int = 3;
  def y : string = "foo";
  def obj : Object = getObject();
  '''
</td>
<td>
  Variables defined with <code>def</code> cannot be changed once defined. This is similar to <code>readonly</code> or <code>const</code> in C# or <code>final</code> in Java. Most variables in Nemerle aren't explicitly typed like this.
</td>
</tr>
</table>

и результат:

enter image description here

Ответ 3

Вы можете использовать <pre>. Выделение синтаксиса не будет работать, но, по крайней мере, оно будет отформатировано должным образом.

<td><pre>
   const int x = 3;
   const string y = "foo";
   readonly Object obj = getObject();
</pre></td>

Ответ 4

Другой способ - использовать несколько ` и <br>, но подсветка синтаксиса не будет работать.

|1|2|3
-|-|-
`const int x = 3;`<br>`   const string y = "foo";`<br>`readonly Object obj =getObject();`|`def x : int = 3;`<br>`def y : string = "foo";`<br>`def obj : Object = getObject(); `|Variables defined with `def` cannot be changed once defined. This is similar to `readonly` or `const` in C# or `final` in Java. Most variables in Nemerle aren't explicitly typed like this.explicitly typed like this.