разрыв страницы в уценке при создании PDF

85

Я создаю PDF текстовый файл уценки с помощью doxygen (1.8.6). Теперь я хочу получить разрыв страницы на определенном этапе в файле разметки, я использовал эту ссылку .

В данной ссылке они упомянули использовать '>' для переноса строки. Но они не упомянули о разрыве страницы. Да, я могу использовать '>' и для разрыва страницы, но я должен написать этот символ 5 или более раз в текстовом файле уценки, и это делает файл уценки странным. Есть ли другие способы получить разрывы страниц в файлах разметки?

user2760375
источник
1
Вы попробовали такой код: Моя главная страница {#mainpage} ============ Это текст на первой странице \ latexonly \ newpage \ endlatexonly Это текст на второй странице
Альберт
@albert Я не нашел ни одного ключевого слова
главной страницы
1
В приведенном мной примере создается главная страница, состоящая из двух страниц. Важной частью для вас будет \ latexonly .... \ endlatexonly. Когда вы помещаете мой пример в файл (например, aa.md), вы можете увидеть 2 страницы, когда вы сгенерировали латексный вывод.
Альберт
@albert да, теперь я получил это раньше Я не использовал команду latexonly в текстовом файле. Теперь я получил это спасибо
user2760375

Ответы:

61

Я столкнулся с таким же и решил его, вставив

\разрыв страницы

На самом деле это команда LaTeX, а не Markdown.

роненкозен
источник
1
это хорошо работает с pandoc. вставляет разрыв страницы в латексный PDF-файл, не мешая рендерингу html.
joelostblom
2
спасибо, я просто искал это :) Это работает и в R's knit tool.
Тетланеш
3
Markdown изначально не поддерживает Latex, тогда как он поддерживает HTML и CSS. Вот почему ответ @tomodian ниже набрал больше голосов. Это решение работает в некоторых случаях (особенно в R Markdown, как упоминает Тетланеш), ​​но не во всех. Выберите ответ Tomodian ниже ... он более переносимый.
Майк Уильямсон
Поскольку вопрос OP касается общей уценки, я чувствую, что этот ответ не будет работать / быть полезным для большинства людей. Ответ @ Tomodian - лучший ИМО.
Briford Wylie
207

Поскольку Markdown принимает обычный HTML и CSS, просто добавьте эту строку туда, где вы хотите принудительно разрывать страницу.

<div style="page-break-after: always;"></div>

Если ваш редактор Markdown не может правильно экспортировать PDF-файл, сначала попробуйте экспортировать как HTML, затем откройте в браузере и распечатайте как PDF.

Tomodian
источник
5
Это правильный ответ. Вероятно, именно из-за таких стилевых «хаков» Джон принял HTML / CSS
CousinCocaine
3
Это правильный ответ. И это хорошо работает с дерзкими огненными шарами Markdown
Дмитрий К.
3
Это было наиболее применимое и широко поддерживаемое решение, которое я тестировал.
Бейтан Курт
1
Запись w3schools в page-break-before говорит: «Примечание: вы не можете использовать это свойство для пустого <div> или для абсолютно позиционированных элементов». Я бы использовал его, если бы он работал (но, увы, не в Jupyter).
FutureNerd
1
Я использую это с кукольником, отлично работает. <hr style = "page-break-after: always;" />
generic-user
15

Я знаю, что это мертвый вопрос, но я нашел способ, который, как мне кажется, может быть полезен не только мне.

Вы можете использовать команду \ pagebreak внутри невидимого элемента. Таким образом он работает с латексом и с html.

<div style="page-break-after: always; visibility: hidden"> 
\pagebreak 
</div>
Ноэ Мурр
источник
Почему бы вместо этого трюка не использовать команды doxygen, например, \htmlonlyс <div>etc. и \latexonly´ with \ pagebrak`.
Альберт
3
потому что этот трюк переносится за пределы doxygen, и вы можете использовать его даже с pandoc.
Noè Murr
10

Цитаты и разрывы строк

>не используется для разрывов строк в Markdown. Используется для цитат. Например, следующий код Markdown

> A man provided with paper, pencil, and rubber, and
> subject to strict discipline, is in effect a universal machine.

становится

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

(Это цитата Алана Тьюринга .)

Обратите внимание, как он отображается на желтом фоне с помощью Stack Overflow. Если вы изучите сгенерированную разметку, вы найдете<blockquote> что используются теги.

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

123 Fake Street␣␣
Springfield, USA

становится

123 Fake Street
Springfield, США

Разрывы страниц

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

Doxygen использует LaTeX для создания своих PDF-файлов . Кажется, он не поддерживает встроенный LaTeX¹, но вы должны иметь возможность изменить промежуточный .texфайл, а затем использовать его pdflatexдля создания вашего PDF:

  1. Используйте Doxygen для создания .texфайла
  2. Отредактируйте .texфайл вручную и добавьте \newpageтуда, где хотите, разрывы страниц
  3. Бежать pdflatex documentation.tex
  4. Изучить documentation.pdf

Этот вопрос может быть полезной ссылкой для шага 3 выше.

¹Doxygen поддерживает встроенные формулы LaTeX , но я не смог найти упоминания о произвольных встроенных командах LaTeX, подобных тем, \newpageкоторые работают в текстовой среде.

Крис
источник
Привет, сначала я использовал подход к файлам .tex, хотя я все равно хотел использовать чистый подход уценки для создания pdf, и да, я также пробовал \ newpage, но это не сработало.
user2760375
1
Не существует чистого подхода Markdown, поскольку Markdown не включает синтаксис для разрывов страниц. Хотя существует множество расширений Markdown, я не знаю ни одного, добавляющего поддержку разрывов страниц. Вы можете попробовать что-то вроде Pandoc, который поддерживает встроенный LaTeX , но я полагаю, что вы используете Doxygen из-за его способности извлекать блоки документации из исходного кода, чего Pandoc не делает. Может быть , я ошибаюсь , об этом ...
Chris
4

Хотя эти ответы работают - они как бы нарушают одну из целей Markdown (MD), которая заключается в том, чтобы быть легко читаемым как обычный текстовый документ, а также иметь возможность форматировать в более насыщенные презентации.

Как только вы начинаете встраивать кучу HTML / CSS в текст, вы теряете первый аспект MD. Вы также можете использовать Word, Libre, HTML / CSS и т. Д.

Я думаю, что MD не мешало бы добавить последовательность разрыва страницы. Что-то вроде: <<<<>>>>или аналогично операторам форматирования. Я использую это в моем тексте MD. Это не вызывает разрыв страницы в конвертерах PDF или HTML, но распознается как в этих, так и в текстовых формах.

Эд С
источник
3

В крайнем случае обходной путь - вручную отредактировать вывод HTML для рендеринга в PDF по своему усмотрению.

Томас Ромеро
источник