Pandoc documentation说,可以通过多种方式对节标题进行交叉引用。例如,您可以创建自己的ID并引用该ID。例如:
# This is my header {#header}
将创建一个值'#header'的ID,该ID可以在文本中引用,例如:
[Link to header](#header)
这将显示文本“链接到标题”以及指向标题的链接。
当编译为LaTeX文档时,我找不到任何地方如何使链接的文本成为部分编号。
例如,如果我的标题被编译为“ 1.2.3节标题”,我希望对文本的交叉引用显示为“ 1.2.3”。
答案 0 :(得分:3)
自const arr = [
{
date: '2020-05-03',
items: [{}]
},
{
date: '2020-05-02',
items: [{}]
}
]
function checkAndAdd(date) {
const res = arr.find(ob => ob.date === date);
// console.log(res);
// based on the added comments.
// if date is found, push something to the items, list:
if (res) {
res.items.push('Hello');
} else {
arr.push({
date,
items: [{}]
})
}
console.log('finalArray', arr);
}
checkAndAdd('2020-05-03');
checkAndAdd('2020-05-06');
版本2.8起,功能pandoc
已被pandoc.utils.hierarchicalize
取代。这是the @tarleb's answer的更新版本,可与较新的“ pandoc”版本一起使用。
make_sections
答案 1 :(得分:1)
这可以通过定义ID来实现,如之前所做的那样。例如:
# This is my header {#header}
然后在文本中,交叉引用可以写为:
\ref{header}
当编译为LaTeX时,交叉引用文本将为引用标题的节号。
答案 2 :(得分:1)
您可以使用pandoc-secnos过滤器套件中的pandoc-xnos过滤器。
标题
#include <iostream>
int main(int argc, char **argv)
{
std::cout << 25u - 50;
return 0;
}
使用# This is my header {#sec:header}
引用。或者,您可以参考
@sec:header
使用# This is my header
。
@sec:this-is-my-header
调用中添加--filter pandoc-secnos
来处理以此方式编码的Markdown文档。 pandoc
选项也应使用。输出使用LaTeX的本机命令(即--number-sections
和\label
或\ref
)。
此方法的好处是,还可以其他格式(html,epub,docx等)输出。
答案 3 :(得分:0)
可以利用pandoc Lua filters来构建适用于所有受支持的输出格式的通用解决方案:函数pandoc.utils.hierarchicalize
可用于获取文档层次结构。我们可以使用它来将区段ID与区段编号相关联,以后可以使用这些编号将这些编号添加到没有链接描述的链接中(例如[](#myheader)
)。
local hierarchicalize = (require 'pandoc.utils').hierarchicalize
local section_numbers = {}
function populate_section_numbers (doc)
function populate (elements)
for _, el in pairs(elements) do
if el.t == 'Sec' then
section_numbers['#' .. el.attr.identifier] = table.concat(el.numbering, '.')
populate(el.contents)
end
end
end
populate(hierarchicalize(doc.blocks))
end
function resolve_section_ref (link)
if #link.content > 0 or link.target:sub(1, 1) ~= '#' then
return nil
end
local section_number = pandoc.Str(section_numbers[link.target])
return pandoc.Link({section_number}, link.target, link.title, link.attr)
end
return {
{Pandoc = populate_section_numbers},
{Link = resolve_section_ref}
}
以上内容应保存到文件中,然后通过--lua-filter
选项传递给pandoc。
使用问题中的示例
# This is my header {#header}
## Some subsection
See section [](#header), especially [](#some-subsection)
使用上述过滤器,最后一行将显示为“请参见第1节,尤其是1.1”。
不要忘记使用选项--number-sections
调用pandoc,否则标题将不会编号。