我正在使用Pandoc为我的网站生成出版物列表。我仅将其用于与出版物一起生成html,以便随后可以将原始html粘贴到jekyll中。这部分工作正常。
当我tty生成html以便我的名字在所有条目中显示为黑体字时,就会出现复杂问题。我正在尝试为此使用this solution,当我将其应用于要生成的纯Latex文档时,它可以工作。但是,当我尝试应用相同的Pandoc时,会生成没有任何黑体字的html。
这是我的Pandoc文件:
---
bibliography: /home/tomas/Dropbox/cv/makerefen4/selectedpubs.bib
nocite: '@'
linestretch: 1.5
fontsize: 12pt
header-includes: |
\usepackage[
backend=biber,
dashed=false,
style=authoryear-icomp,
natbib=true,
url=false,
doi=true,
eprint=false,
sorting=ydnt, %Year (Descending) Name Title
maxbibnames=99
]{biblatex}
\renewcommand{\mkbibnamegiven}[1]{%
\ifitemannotation{highlight}
{\textbf{#1}}
{#1}}
\renewcommand*{\mkbibnamefamily}[1]{%
\ifitemannotation{highlight}
{\textbf{#1}}
{#1}}
...
这是我的Makefile的相关部分:
PANDOC_OPTIONS=--columns=80
PANDOC_HTML_OPTIONS=--filter=pandoc-citeproc --csl=els-modified.csl --biblatex
再次:此代码可以很好地生成引用。它只是没有按照预期的方式加粗字体。
有什么想法吗?
编辑
围兜条目看起来像这样
@MISC{test,
AUTHOR = {Last1, First1 and Last2, First2 and Last3, First3},
AUTHOR+an = {2=highlight},
}
版本是 -Biblatex 3.12 -Biber 2.12
答案 0 :(得分:1)
您可以使用 lua 过滤器来修改 AST。以下内容对我有用,可以在参考文献 (see here) 中突出显示姓氏和首字母 (Smith, J.)。您可以用 pandoc.Underline 或 pandoc.Emph 替换 pandoc.Strong。用您的姓名/首字母替换 Smith 和 J.,将其另存为 myname.lua 并使用以下内容:
pandoc --citeproc --bibliography=mybib.bib --csl.mycsl.csl --lua-filter=myname.lua -o refs.html refs.md
即把过滤器放在最后。
local highlight_author_filter = {
Para = function(el)
if el.t == "Para" then
for k,_ in ipairs(el.content) do
if el.content[k].t == "Str" and el.content[k].text == "Smith,"
and el.content[k+1].t == "Space"
and el.content[k+2].t == "Str" and el.content[k+2].text:find("^J.") then
local _,e = el.content[k+2].text:find("^J.")
local rest = el.content[k+2].text:sub(e+1)
el.content[k] = pandoc.Strong { pandoc.Str("Smith, J.") }
el.content[k+1] = pandoc.Str(rest)
table.remove(el.content, k+2)
end
end
end
return el
end
}
function Div (div)
if 'refs' == div.identifier then
return pandoc.walk_block(div, highlight_author_filter)
end
return nil
end
注意事项:
Span = function(el)
if el.t == "Span" then
function Div (div)
if 'refs' or 'refs_biblio1’ or 'refs_biblio2’ == div.identifier then
对于pdf输出,如果您使用数字格式csl,您还需要在pandoc命令中添加-V csl-refs
。
if el.content[k].t == "Str”…etc
。首先转换为 .json 有助于检查 AST 中的格式是否正确。