Pandoc, а в расширении R Markdown просто хранит необработанный HTML-код ссылок.Необработанные фрагменты HTML выводятся в форматы, поддерживающие HTML (например, epub), но не для LaTeX (который используется для генерации PDF).Pandoc просто проанализирует содержимое ссылки, поэтому она работает, если текст вашей ссылки является URL-адресом.
Самым простым решением, конечно, будет использование синтаксиса Markdown для ссылок, чтовыразительный как HTML: [Cygwin](https://www.cygwin.com){target="_blank"}
.Однако, если это не вариант, то все становится немного странно.
Вот метод, который все еще анализирует эти ссылки.Он использует Lua filter для преобразования необработанного HTML в правильную ссылку.Просто сохраните следующий скрипт как parse-html-links.lua
в том же каталоге, что и ваш Rmd-файл, и добавьте '--lua-filter=parse-html-links.lua'
в список pandoc_args
.
local elements_in_link = {}
local link_start
local link_end
Inline = function (el)
if el.t == 'RawInline' and el.format:match'html.*' then
if el.text:match'<a ' then
link_start = el.text
return {}
end
if el.text:match'</a' then
link_end = el.text
local link = pandoc.read(link_start .. link_end, 'html').blocks[1].content[1]
link.content = elements_in_link
-- reset
elements_in_link, link_start, link_end = {}, nil, nil
return link
end
end
-- collect link content
if link_start then
table.insert(elements_in_link, el)
return {}
end
-- keep original element
return nil
end