Так есть ли способ убедить Пандока просто сохранить мои ссылки «как написано»?
Короче говоря нет , поскольку Пандок не сохраняет этоинформация.
С помощью команды pandoc --from markdown --to native
вы можете заставить Pandoc вывести Абстрактное синтаксическое дерево (AST), которое является внутренним собственным представлением Pandoc документа.Для вашего образца документа AST выглядит следующим образом (см. Также онлайн-демонстрацию ):
[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Space,Str "file,",Space,Str "created",Space,Str "by",Space,Str "Tim",Space,Str "at",Space,Link ("",[],[]) [Str "Tigra",Space,Str "Astronomy"] ("http://tigra-astronomy.com","Tigra home page"),Str "."]
,Para [Str "This",Space,Str "is",Space,Str "another",Space,Str "line."]]
Как видите, ссылка не сохраняет «имя», которое вы ей присвоили,Поэтому, когда Pandoc преобразует AST обратно в Markdown, он не может использовать ваше «имя», поскольку он недоступен.Первоначально я думал, что, возможно, вы могли бы использовать фильтр или пользовательский писатель , чтобы включить ваше ссылочное имя, но это также не сработает, поскольку имя просто недоступно.
В конце концов, это не должно удивлять.Pandoc не обещает сохранять все метаданные, включенные в документы.На самом деле документация предупреждает :
Поскольку промежуточное представление документа pandoc менее выразительно, чем многие форматы, между которыми он конвертируется, не следует ожидать идеальных конверсий между всеми форматамии любой другой.Pandoc пытается сохранить структурные элементы документа, но не форматирует такие детали, как размер поля.И некоторые элементы документа, такие как сложные таблицы, могут не вписываться в простую модель документа pandoc.Хотя преобразования из Markdown pandoc во все форматы стремятся быть совершенными, можно ожидать, что преобразования из форматов, более выразительных, чем Markdown pandoc, будут с потерями.
Конечно, ссылочное имя является специфической функцией Markdown.Тем не менее, Markdown поддерживает представление ссылок несколькими способами, и поддержка имен ссылок не требуется для поддержки действительного документа Markdown.Поэтому ссылочные имена - это одна из вещей, которую Pandoc теряет.
Но почему Pandoc нужно проходить через AST, если он просто выводит тот же формат.Потому что так оно и спроектировано.См. документацию API для получения дополнительной информации об этом.