У меня есть файл rtf, который в конечном итоге я хочу преобразовать в фрагментированный HTML, разделив его на заголовки уровня 1.
Мой первый шаг — преобразовать rtf в один html-файл, что очень просто:
pandoc -f rtf -t html -o inputfile.html inputfile.rtf
Полученный html-файл имеет заголовки, определенные <strong></strong>
, а не <h1></h1>
, поэтому мне придется отредактировать файл в текстовом редакторе, чтобы изменить все это. Вот образец из файла:
<p><strong>George Stewart</strong></p>
<p>Title: George Stewart</p>
<p>Type: Task</p>
<p>Date:1734</p>
<p>Description: Christening</p>
<p>Status: +open</p>
<p>Repository: LDS Library</p>
<p>Last action: 8 May 2024</p>
<p><strong>Ann Hill</strong></p>
<p>Title: Ann Hill</p>
<p>Type: Task</p>
<p>Date: 1799</p>
<p>Description: Family</p>
<p>Status: +ToDo</p>
<p>Repository: LDS Library</p>
который нужно отредактировать так:
<p><h1>George Stewart</h1></p>
<p>Title: George Stewart</p>
<p>Type: Task</p>
<p>Date:1734</p>
<p>Description: Christening</p>
<p>Status: +open</p>
<p>Repository: LDS Library</p>
<p>Last action: 8 May 2024</p>
<p><h1>Ann Hill</h1></p>
<p>Title: Ann Hill</p>
<p>Type: Task</p>
<p>Date: 1799</p>
<p>Description: Family</p>
<p>Status: +ToDo</p>
<p>Repository: LDS Library</p>
Затем я могу выполнить следующий шаг: разбить HTML на множество файлов, разделив их на уровне h1 с помощью другой команды Pandoc.
pandoc -t chunkedhtml --split-level=1 -o RN_File inputfile.html
Я хотел бы иметь возможность выполнять это преобразование заголовков внутри команды Pandoc. Возможно, это возможно с помощью фильтра (json/lua?), но я не могу разобраться с синтаксисом.
В идеале я бы также хотел объединить два шага Pandoc, но не знаю, возможно ли это. Кажется, что может быть способ сделать это с помощью функции канала, но, возможно, кто-то сможет подтвердить это примером.
Руководство Pandoc Lua filter предполагает, что мне нужен блок кода, например:
function Strong(elem)
return pandoc.SmallCaps(elem.content)
end
но мне нужно захватить <p><strong>
и заменить на <h1>
, это не работает, но может дать представление о том, чего я пытаюсь достичь...
function Para+Strong(elem)
return pandoc.Header(1)
end
🤔 А знаете ли вы, что...
HTML предоставляет атрибуты для задания альтернативного текста и описания изображений и мультимедиа.
Вы можете использовать sed
в inputfile.html
между двумя командами pandoc
.
#!/bin/bash
pandoc -f rtf -t html -o inputfile.html inputfile.rtf
cat inputfile.html | sed 's/<p><strong>\(.*\)</strong></p>/<h1>\1</h1>/g' > inputfile-fixed.html && rm inputfile.html
pandoc -t chunkedhtml --split-level=1 -o RN_File inputfile-fixed.html
Сохранить как: fix_heading.sh
Изменить режим исполняемого файла: chmod +x fix_heading.sh
Использование: ./fix_heading.sh
Я использовал cat
в качестве меры предосторожности. Если вы хотите напрямую редактировать файл, замените строку cat
на:
sed -i 's/<p><strong>\(.*\)</strong></p>/<h1>\1</h1>/g' inputfile.html
Это устранит необходимость в промежуточном файле.