Как сделать отступ для нескольких строк в разметке Markdown?


360

Я хочу написать несколько строк текста. Они должны быть отформатированы нормально, за исключением того, что каждая строка должна начинаться с 6-го столбца. Т.е. я не хочу, чтобы правило форматирования блока кода делало этот фрагмент текста похожим на код, поскольку я буду использовать другое форматирование, например жирный шрифт и т. Д. Как это сделать в Markdown?


12
Обидно, что Markdown не поддерживает это. Это фундаментальная особенность, которая отсутствует.
Джош


4
Использование: для списков определений не универсально в реализациях Markdown, но если ваш вариант Markdown поддерживает это, это работает отлично. Вы должны сделать это реальным ответом.
Алекс

Ответы:


383

Там нет никакого способа сделать это в нативных функциях уценки. Однако уценка позволяет встроенный HTML, поэтому написание

      This will appear with six space characters in front of it

будет производить:

      Это появится с шестью пробелами перед ним

Если у вас есть контроль над CSS на странице, вы также можете использовать тег и стилизовать его, встроенный или с правилами CSS.

В любом случае, разметка не предназначена в качестве инструмента для верстки, она предназначена для упрощения процесса написания для Интернета, поэтому, если вы обнаружите, что расширяете ее набор функций, чтобы делать то, что вам нужно, вы можете посмотреть, действительно ли вы ' Вы используете правильный инструмент здесь. Проверьте документы Грубера:

http://daringfireball.net/projects/markdown/syntax#html


12
Можно вставить  (Unicode: \ 2002) в файл уценки, и они не будут отображаться как  в источнике - только при рендеринге файла. Просто нажмите сочетание клавиш в вашей ОС, чтобы вставить этот символ.
vaughan

1
Блочные кавычки - хороший способ сделать это (см. Ответ @ ChrisV)
drevicko

Что делать, если я хочу использовать отступ для выравнивания текста. Например, я хочу, чтобы 2-е слово в двух строках начиналось в одном и том же месте (как кодировщики, которым нравится оператор присваивания =).
Рой

3
 просто отлично подходит для простого и простого отступа. Без изменений стиля / шрифта, только отступ 👍
Зеленый

5
Обернутые строки в длинном тексте не имеют отступов, которые могут не отображаться в макете. Измените размер визуализированного представления для проверки. Также,  ближе к табл.
Диммех

76

Один из способов сделать это - использовать маркеры, которые позволяют указать несколько уровней отступа. Точки с маркерами вставляются с использованием кратных двух пробелов, звезды, другого пробела, например:

this is a normal line of text
  * this is the first level of bullet points, made up of <space><space>*<space>
    * this is more indented, composed of <space><space><space><space>*<space>

Этот метод имеет большое преимущество, так как он имеет смысл при просмотре необработанного текста.

Если вы заботитесь о том, чтобы не видеть сами точки маркера , вы должны (в зависимости от того, где вы используете уценку), чтобы иметь возможность добавить li {list-style-type: none;}к CSS всю область уценки .


5
Хороший трюк, но я хочу отключить только видимые маркеры для части Markdown (и его результирующего HTML), но не для целого. Есть ли чистый способ сделать это?
Мэн Лу

@MengLu У меня такое же требование. Вы выяснили это вообще?
спасательный баланс

1
Гораздо лучше по структуре, чем принятый ответ
августа

Помните, что уценка может принимать HTML - это часть спецификации. Поэтому для определенного списка ничто не мешает вам использовать HTML для решения этой проблемы. Просто помните, что у вас может быть HTML в уценке, но не уценка в ваших HTML-фрагментах. <ul> <li style = "list-style-type: none;"> Ваш контент с отступом, который должен быть полностью HTML </ li> </ ul>
Хэмиш Вилли,

2
Это кажется намного лучше, чем принятый мне ответ. Это дает вам более детальный контроль над текстом с отступом, не говоря уже о том, что он более
читабелен

36

Это старая ветка , но я бы подумал, что для этого лучше всего использовать blockquotes ('>') Markdown:


21
Это хорошее решение, если вам не нужно делать отступ для заданного количества, и вам не нужно получать другой цвет фона или другие стили, которые могут сочетаться с кавычками. В конечном счете, цитаты имеют семантическую цель, и они лучше всего подходят, если вы действительно хотите что-то выдать за цитату.
alegscogs

20
Неправильно. Blockquotes (>) предназначены для создания кавычек, а не простого отступа. Это совершенно разные стили.
Зеленый

25

Посмотрите, помогает ли это ">":

Line 1
> line 2 
>> line 3

это сладкий билет в ноутбуках jupyter с использованием латексной разметки
vwvan

2
См. Комментарий выше: «Неправильно. Blockquotes (>) предназначены для создания кавычек, а не простого отступа. Он полностью отличается по стилям»
пользователь, который не является пользователем

22

сделать вкладку, затем знак +, затем пробел, затем ваш контент

Так

* level one + level two tabbed


Уценка github / bitbucket поддерживает аналогичное правило отступа, без +:[tab][space]your-text-goes-here
roblogic

13

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

$\qquad$ My line of text ...

Это работает для меня и надеюсь работать для вас тоже.


10

Если вы действительно должны использовать вкладки и не обращаете внимания на серый цвет фона и отступы, <pre>теги могут работать (если они поддерживаются):

<pre>
This        That        And             This
That        This        And             That    
</pre>
Это то и это
Это Это И Это    

7

Пожалуйста, используйте жесткие (неразрывные) пробелы

Зачем использовать другой язык разметки? (Я согласен с @cz выше).
Одна из целей Markdown - сделать документы читабельными даже в текстовом редакторе.

Тот же результат, два подхода

Код

Sample code
&nbsp;&nbsp;&nbsp;&nbsp;5th position in an really ugly code  
    5th position in a clear an readable code  
    Again using non-breaking spaces :)

Результат

Пример кода
    5-ая позиция в действительно некрасивом коде
    5-ая позиция в четком читаемом коде
    Снова используя неразрывные пробелы :)

Визуальное представление неразрывного пробела (или жесткого пробела) обычно является нормальным пробелом "", однако его представление в Юникоде - U + 00A0.
Unicode-представление обычного пространства - U + 0020 (32 в таблице ASCII).
Таким образом, текстовые процессоры могут вести себя по-разному, в то время как визуальное представление остается тем же.

Вставьте жесткое пространство

| OS        | Input method                      |
|===========| ==================================|
| macOS     | OPTION+SPACE (ALT+SPACE)          |
| Linux     | Compose Space Space or AltGr+Space|
| Windows   | Alt+0+1+6+0                       |

Some text editor use Ctrl+Shift+Space.

вопрос

Некоторые текстовые редакторы могут преобразовывать жесткие пробелы в общие пробелы при копировании и вставке, поэтому будьте осторожны.


OPTION + SPACE активировал поиск прожекторов
wander95

Не может быть, только если вы изменили ярлыки по умолчанию. Поле поиска Spotlight запускается командой COMMAND-SPACE (клавиша COMMAND является аналогом клавиши Windows). Неразрывный пробел вводится с OPTION-SPACE (опция аналога ALT)
ePi272314

На моем Mac у меня есть ярлык Option + Space, но Shift + Option + Space работает хорошо.
Даг Хайдал

Строки с длинными предложениями выглядят ужасно.
Майк Корменди

4

Проверьте, можете ли вы использовать HTML с вашей уценкой. Может быть, это работает для вас:

  • Запись в списке одна <br/>
    строка с отступом <br/>
    <br/>
    И еще немного ..
  • Вторая запись
    • Подстатья <br/>
      Привет!

6
Для этого вам просто нужно завершить строку двумя пробелами.
Пьетро

4

Для кавычек / абзацев с абзацами этот хак может работать (в зависимости от движка рендеринга):

| | | |
|-|-|-|
|  | _"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."_ | |
|

который отображается как:

введите описание изображения здесь


2

Используйте пробел напрямую  (не то же самое, что !).

(Вы можете вставить HTML или некоторый эзотерический код уценки, но я могу придумать более веские причины нарушить совместимость со стандартной уценкой.)


2

Чтобы ответить на вопросы MengLu и @ lifebalance в ответ на ответ SColvin (который я предпочитаю общепринятому ответу для элемента управления, который он предоставляет), кажется, что вы могли бы просто настроить таргетинг на родительский элемент списков при установке отображения на none, добавив окружающий элемент при необходимости. Поэтому, если мы предположим, что мы делаем это для оглавления, мы можем расширить ответ SColvin:

HTML

<nav class="table-of-contents">
  this is a normal line of text
  * this is the first level of bullet points, made up of <space><space>*<space>
    * this is more indented, composed of <space><space><space><space>*<space>
</nav>

CSS

.table-of-contents ul {
  list-style-type: none;
}

2

Как отмечает @AlexDupuy в комментариях, для этого могут использоваться списки определений.

Это поддерживается не всеми процессорами уценки, но широко доступно: Руководство по уценке - Списки определений

Term 1
: definition 1
: definition 2

Term 2
: definition 1
: definition 2

Отображается как (HTML):

<dl>
    <dt>Term 1</dt>
    <dd>definition 1</dd>
    <dd>definition 2</dd>
    <dt>Term 2</dt>
    <dd>definition 1</dd>
    <dd>definition 2</dd>
</dl>

Обычно DTон отображается в формате заголовка, и каждый из DDних отображается как текст с отступом.

Если вам не нужен заголовок / термин, просто используйте неразрывный пробел вместо термина определения:

&nbsp;
: This is the text that I want indented.  All text on the same line as the preceding colon will be included in this definition.
: If you include a second definition you'll get a new line; potentially separated by a space. <br />Some inline HTML may be supported within this too, allowing you to create new lines without spaces.
: Support for other markdown syntax varies; e.g. we can add a bullet list, but each one's wrapped in a separate definition term, so the spacing may be out.
: - item 1
: - item 2
: - item 3

Вы можете увидеть это в действии, скопировав приведенные выше примеры на этот сайт: Stack Edit Markdown Editor

Снимок экрана рендеринга DL в стеке


1
& Nbsp; работал отлично. Спасибо
Кевин Мейсон

0

Некоторые реализации Markdown используют ~символ для отступа.


0

Другой альтернативой является использование редактора уценки, такого как StackEdit . Он преобразует HTML (или текст) в уценку в редакторе WYSIWYG. Вы можете создавать отступы, заголовки, списки в редакторе, и он покажет вам соответствующий текст в формате уценки. Затем вы можете сохранить, опубликовать, поделиться или загрузить файл. Вы можете получить к нему доступ на своем веб-сайте - загрузка не требуется!


0

Хорошо, с небольшим HTML в вашем коде R, я сделал следующий код для генерации чистого текста в R Markdown. В <h3 style="text-indent: 15em;">абзацах текст 15 мест. Для исходного вопроса измените 15 на 6.

## Option: Du Pont Ratio Concept - (ROE Decomposition)
### (Closed Quotes/Total Premium) = (Closed Quotes/Quotes Issued) X <br>
<h3 style="text-indent: 15em;">
 (Quotes Issued/Renewal Premium) X <br></h3>
<h3 style="text-indent: 15em;">
 (Renewal Premium/Total Premium)</h3>

Таким образом, полученный код дает желаемый формат вывода. Я использую вкладки для документа Markdown и хотел выстроить текст (), который работал.

р выход


0

Для полноты, более глубокие маркированные списки:

Nested deeper levels: ---- leave here an empty row * first level A item - no space in front the bullet character * second level Aa item - 1 space is enough * third level Aaa item - 5 spaces min * second level Ab item - 4 spaces possible too * first level B item

Вложенные более глубокие уровни:

  • первый уровень предмет - нет места перед персонажем пули
    • второй уровень предмета Аа - достаточно 1 места
      • Aaa предмет третьего уровня - мин 5 пробелов
    • Второй уровень Ab item - возможно также 4 пробела
  • предмет первого уровня B

    Nested deeper levels:
     ...Skip a line and indent eight spaces. (as said in the editor-help, just on this page)
    * first level A item - no space in front the bullet character
     * second level Aa item - 1 space is enough
         * third level Aaa item - 5 spaces min
        * second level Ab item - 4 spaces possible too
    * first level B item
    
            And there
            could be even more
            such octets of spaces.
    

0

Если вы работаете с точками, попробуйте это:

<ul>
  <li>Coffee</li>
  <li>Tea
    <ul>
      <li>Black tea</li>
      <li>Green tea</li>
    </ul>
  </li>
  <li>Milk</li>
</ul>

Это метод, который я использую при стилизации уценки.


0

На gitlab.com один пробел en (U + 2002), за которым следует пробел em (U + 2003), работает прилично.

Предположительно других повторений или комбинаций не точно учитываемых пробелов также будет достаточно.


0

Одна из проблем, возникающих при запуске строки с неразрывными пробелами, заключается в том, что если ваша строка достаточно длинная, чтобы ее переносить, то при ее перетекании во вторую строку первый символ строки переполнения с начальным жестким левым краем вместо запуска под первым символом линии над ним.

Если ваша система позволяет вам смешивать HTML с вашей уценкой, дешевый и веселый способ получить отступ выглядит так:

<ul>
My indented text goes here, and it can be long and wrap if you like.
And you can have multiple lines if you want.
</ul>

Семантически в вашем HTML это бессмыслица (раздел UL без каких-либо элементов LI), но все браузеры, которые я использовал, просто с радостью делают отступы между этими тегами.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.