Markdown: tiếp tục đánh số danh sách


474

Trong mã đánh dấu sau đây, tôi muốn item 3bắt đầu với danh sách số 3. Nhưng do khối mã ở giữa đánh dấu bắt đầu mục danh sách này dưới dạng một danh sách mới. Có cách nào để ngăn chặn hành vi đó?

Sản phẩm chất lượng:

1. item 1
2. item 2

```
Code block
```

3. item 3

Sản lượng sản xuất:

  1. Mục 1
  2. mục 2

Code block

  1. mục 3

4
Đây là giải pháp chính xác . Ba backticks trong câu trả lời của Maccraft thực sự chỉ tạo ra một <code>phần tử HTML với các dòng mới, không phải là cú pháp nổi bật và có thêm một dòng trống phía trên được đánh dấu rõ ràng dưới dạng mã.
Dan Dascalescu

1
Nếu bạn thực sự tuyệt vọng, bạn có thể tra cứu mã ký tự HTML cho các số bạn muốn sử dụng (và cho mọi mục tiếp theo) ... như trong &#50;&#57;. this is list item number 29. Điều này có thể không hoạt động trong tất cả các trình phân tích cú pháp đánh dấu mặc dù.
Roy Tinker

Câu trả lời:


621

Sử dụng bốn khoảng trắng để thụt lề nội dung giữa các dấu đầu dòng

1. item 1
2. item 2

    ```
    Code block
    ```
3. item 3

Sản xuất:

  1. Mục 1
  2. mục 2

    Code block

  3. mục 3

5
Có, thụt lề làm cho trình phân tích cú pháp rõ ràng rằng khối mã thuộc về mục danh sách 2. Mặt khác, nó chỉ là một đoạn bình thường và sẽ kết thúc danh sách.
Maccraft

42
Nhưng ... nếu bạn không muốn thụt ở đó thì sao? Markdown không có giải pháp, theo như tôi biết. Việc bắt đầu một danh sách thường là một điều tự nhiên, sau đó dừng lại và cung cấp một số văn bản là nhận xét meta về danh sách - những gì chúng ta vừa làm và những gì tiếp theo - không có văn bản, một cách hợp lý, và một phần của danh sách - và sau đó tiếp tục danh sách. Markdown không muốn chúng tôi làm điều đó. Đó là một dạng suy nghĩ mà Markdown không muốn mọi người bày tỏ - rằng Markdown không biết cách thể hiện, mà Markdown cho rằng quá ... miễn phí. Công cụ nên theo suy nghĩ. Thở dài. Tôi có thể viết bằng HTML hoặc tạo tệp PDF.
Sao Hỏa

2
Dường như không làm việc cho tôi. Tôi có một danh sách đánh số đơn giản, và thụt lề và xếp hàng mới như hình trên. Vẫn khởi động lại lúc 1.
Ray

10
Trong một số trình soạn thảo Markdown mà tôi đã thử (Bitbucket, Tumblr), điều này không hoạt động - nó hiển thị mã nội tuyến thay vì khối mã được thụt lề đúng cách.
thdoan

2
Trong IntelliJ, điều này tạo ra sự khác biệt có bao nhiêu dòng trống ở dưới cùng của mỗi khối được đánh số. Nếu bạn để lại 2 dòng trống, nó sẽ khởi động lại đánh số; chỉ để lại một và nó tiếp tục.
hoàng

36

Lưu ý cách giải pháp của Maccraft, bạn có thể thấy một dòng mã bổ sung phía trên "Khối mã".

Đây là hai giải pháp tốt hơn:

  1. Thụt khối mã bằng thêm 4 khoảng trắng (thường là 8, trong ví dụ danh sách lồng nhau này, 12). Điều này sẽ đặt mã trong một <pre>phần tử. Trên SO, bạn thậm chí có thể chỉ định tô sáng cú pháp với
    <!-- language: lang-js -->thụt lề bởi 4 khoảng trắng (+1 ở đây do danh sách lồng nhau).

    1. Mục 1
    2. mục 2

      Code.block('JavaScript', maybe)?
    3. mục 3

  2. Hoặc, chỉ cần đặt khối Mã trong backticks và thụt lề theo 4 khoảng trắng (ở đây, thêm 1 vì danh sách lồng nhau). Bạn sẽ nhận được một đoạn văn bản thụt lề thông thường, với một <code>yếu tố bên trong nó. Cái này bạn không thể đánh dấu cú pháp:

    1. Mục 1
    2. mục 2

      Code block

    3. mục 3

Lưu ý: bạn có thể nhấp vào "chỉnh sửa" trên câu trả lời này để xem mã Markdown bên dưới. Không cần phải tiết kiệm;)


27
Đây là một giải pháp cho vấn đề cụ thể này, nhưng nó không phải là giải pháp chung cho vấn đề khởi động lại danh sách Markdown ở số tiếp theo sau một số văn bản can thiệp. Dường như không có cách nào để làm điều này, khiến tôi phát điên. Mọi thứ khác về Markdown đều tuyệt vời.
Sao Hỏa

@Mars như bạn có thể thấy từ câu trả lời của DavidT , giải pháp chung là thụt lề văn bản với bất kỳ số lượng khoảng trắng nào. Chẳng hạn, việc thêm một khoảng trắng thay vì bốn sẽ cho phép bạn chèn bất kỳ văn bản can thiệp nào mà không phải tạo khối mã.
ClydeTheGhost

36

Như một phần mở rộng cho các câu trả lời hiện có. Đối với những người cố gắng tiếp tục một danh sách được đánh số sau một cái gì đó ngoài một khối mã. Ví dụ một đoạn thứ hai. Chỉ cần thụt lề đoạn thứ hai ít nhất 1 khoảng trắng.

Đánh dấu

1. one
2. two

 three
3. four

Đầu ra:

  1. một
  2. hai

    số ba

  3. bốn

1
Ngọt! Tôi đã có một loạt các khối mã giả và phương trình MathJax. Đây chính xác là những gì tôi cần.
xtian

Không hoạt động trên GitHub Wiki. Thêm nhiều khoảng trắng ít nhất sẽ làm cho việc đánh số cùng loại với các số ở trên tho. : rofl:
Chaim Eliyah

1
@ChaimEliyah Thats vì tôi chắc chắn 99% wiki không sử dụng đánh dấu hương vị GitHub (tôi chắc chắn tôi đã bắt gặp sự tò mò này trước đây)
DavidT

Điều này cũng sẽ xử lý các tình huống trong đó bạn có một mục nhập danh sách có chứa một số văn bản, một số mã và cuối cùng là nhiều văn bản hơn trước khi kết thúc mục nhập danh sách.
Frotz

14

Nếu bạn sử dụng tab để thụt khối mã, nó sẽ định hình toàn bộ khối thành một dòng. Để tránh điều này, bạn cần sử dụng danh sách theo thứ tự html.

  1. Mục 1
  2. mục 2

Khối mã

<ol start="3">
  <li>item 3</li>
  <li>item 4</li>
</ol>

13

Giải pháp của Maccraft không còn hiệu quả với tôi nữa trên ví dụ Jekyll của tôi trên Trang Github nữa nhưng tôi đã tìm thấy giải pháp này về một vấn đề cho repo kithdown github. Đối với ví dụ của OP, nó sẽ trông như thế này:

1. item 1
2. item 2

```
Code block
```

{:start="3"}
3. item 3

Giải quyết vấn đề của tôi một cách cẩn thận.


3
Thật không may, điều này không hoạt động với các tệp readme GitHub. :(
Norrow.io

7

Nguồn;

<span>1.</span> item 1<br/>
<span>2.</span> item 2
```
Code block
```
<span>3.</span> item 3


Kết quả;

1. mục 1
2. mục 2 Code block 3. mục 3


4

Nếu bạn không muốn các dòng ở giữa danh sách các mục được thụt vào, giống như người dùng Mars nêu trong bình luận của mình, bạn có thể sử dụng pandoc's example_liststính năng. Từ tài liệu của họ :

(@)  My first example will be numbered (1).
(@)  My second example will be numbered (2).

Explanation of examples.

(@)  My third example will be numbered (3).

ĐÚNG! Điều này đã làm việc tuyệt vời. Làm tốt.
javadba

Đây là giải pháp phổ biến nhất cho vấn đề này. Không cần thụt lề và Nó thậm chí hoạt động nếu bạn có các tiêu đề giữa các thành phần danh sách.
lillemets

Các (@)tương ứng với một danh sách tiếp tục toàn cầu (vì vậy có thể chỉ có một Sử dụng. pandoc'S startnumphần mở rộng bạn có thể bắt đầu một danh sách đặt hàng với số lượng bạn muốn và nó chỉ hoạt động.
Abid H. Mujtaba

2

Đặt số danh sách trong ngoặc đơn thay vì theo sau bởi một dấu chấm.

(1) mục 1
(2) mục 2 code block (3) mục 3


5
Đây phá hủy <ol><li>elems và thay vào đó chỉ kết thúc tốt đẹp chúng trong <p>thẻ. Ngoài ra, bạn thực sự nhận được (1).
jmargolisvt

2
Tôi nghĩ đó là ý định.
Gal

1

Tôi đã giải quyết vấn đề này trên Github tách khối phụ được thụt lề bằng một dòng mới, ví dụ, bạn viết mục 1, sau đó nhấn enter hai lần (như nếu đó là một đoạn mới), thụt vào khối và viết những gì bạn muốn (một khối mã, văn bản, vv). Thông tin thêm về danh sách Markdownngắt dòng Markdown .

Thí dụ:

  1. mục một
  2. mục hai

    this block acts as a new paragraph, above there is a blank line

  3. mục ba

    some other code

  4. mục bốn

0

Lưu ý rằng cũng có một số tiện ích mở rộng sẽ khắc phục hành vi này cho các bối cảnh cụ thể của việc sử dụng Markdown.

Ví dụ: phần mở rộng sane_lists của python-markdown (ví dụ được sử dụng trong mkdocs), sẽ nhận ra các số được sử dụng trong danh sách Markdown. Bạn chỉ cần kích hoạt tiện ích mở rộng nàyarkdown.markdown(some_text, extensions=['sane_lists'])


0

Nếu bạn muốn có văn bản được căn chỉnh theo mục danh sách trước nhưng tránh bị ngắt dòng "lớn", hãy sử dụng hai khoảng trắng ở cuối mục danh sách và thụt lề văn bản với một số khoảng trắng.

Nguồn: (dấu chấm là khoảng trắng ;-) tất nhiên)

1.·item1··
····This is some text
2.item2

Kết quả:

  1. mục1
    Đây là một số văn bản
  2. mục2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.