红地毯脚注扩展不起作用
Redcarpet Footnotes extension not working
我试图让链接的脚注起作用,但不知何故 Redcarpet 根本无法识别我传递给初始化程序的 footnote
扩展。
我是 运行 Redcarpet 版本 3.3.4,它应该将脚注功能合并到 master 中,如这些帖子中所讨论的:Post 1
Post 2
客户渲染器
class CustomMarkdownParser < Redcarpet::Render::HTML
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::AssetTagHelper
include AbstractController::Rendering
def block_code(code, language)
Pygments.highlight(code, lexer: language)
end
def parse_media_link(link)
end
def image(link, title, alt_text)
end
def link(link, title, content)
end
#def footnote_def(content, number)
#end
#def footnote_ref(number)
#end
end
application_helper
中的降价功能
def md_parser(content)
puts "Parsing Markdown"
renderer = CustomMarkdownParser.new(
hard_wrap: true,
filter_html: true,
with_toc_data: true)
options ={
}
markdown = Redcarpet::Markdown.new(renderer,
autolink: true, # detect links and wrap them in link tags
no_intra_emphasis: true, # ensures _ inside words are not repolaced with <em> tags
disable_indented_code_blocks: true, # does not convert lines prefixed with 4 spaces
fenced_code_blocks: true,
lax_spacing: true,
strikethrough: true,
footnotes: true,
superscript: true,
tables: true,
underline: true
)
markdown.render(content).html_safe
end
我查看了 gem 的代码,它列出了以下扩展:
EXTENSION_MAP = {
# old name => new name
:autolink => :autolink,
:fenced_code => :fenced_code_blocks,
:filter_html => :filter_html,
:hard_wrap => :hard_wrap,
:prettify => :prettify,
:lax_htmlblock => :lax_spacing,
:no_image => :no_images,
:no_intraemphasis => :no_intra_emphasis,
:no_links => :no_links,
:filter_styles => :no_styles,
:safelink => :safe_links_only,
:space_header => :space_after_headers,
:strikethrough => :strikethrough,
:tables => :tables,
:generate_toc => :with_toc_data,
:xhtml => :xhtml,
# old names with no new mapping
:gh_blockcode => nil,
:no_tables => nil,
:smart => nil,
:strict => nil
}
我不确定为什么不包括脚注。
我收到的输出是这样的(将 ^ 读作上标,右方括号也带有上标):
大西洋[^1],
[^1] 这是脚注
在您的自定义渲染器中,您覆盖了处理脚注的方法,因此它们什么都不做。只需删除那些方法(footnote_def
和 footnote_ref
)并允许原件 运行.
此外,脚注定义的语法需要一个您似乎遗漏的冒号:
[^1]: This is the footnote
我试图让链接的脚注起作用,但不知何故 Redcarpet 根本无法识别我传递给初始化程序的 footnote
扩展。
我是 运行 Redcarpet 版本 3.3.4,它应该将脚注功能合并到 master 中,如这些帖子中所讨论的:Post 1
Post 2
客户渲染器 class CustomMarkdownParser < Redcarpet::Render::HTML
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::AssetTagHelper
include AbstractController::Rendering
def block_code(code, language)
Pygments.highlight(code, lexer: language)
end
def parse_media_link(link)
end
def image(link, title, alt_text)
end
def link(link, title, content)
end
#def footnote_def(content, number)
#end
#def footnote_ref(number)
#end
end
application_helper
中的降价功能def md_parser(content)
puts "Parsing Markdown"
renderer = CustomMarkdownParser.new(
hard_wrap: true,
filter_html: true,
with_toc_data: true)
options ={
}
markdown = Redcarpet::Markdown.new(renderer,
autolink: true, # detect links and wrap them in link tags
no_intra_emphasis: true, # ensures _ inside words are not repolaced with <em> tags
disable_indented_code_blocks: true, # does not convert lines prefixed with 4 spaces
fenced_code_blocks: true,
lax_spacing: true,
strikethrough: true,
footnotes: true,
superscript: true,
tables: true,
underline: true
)
markdown.render(content).html_safe
end
我查看了 gem 的代码,它列出了以下扩展:
EXTENSION_MAP = {
# old name => new name
:autolink => :autolink,
:fenced_code => :fenced_code_blocks,
:filter_html => :filter_html,
:hard_wrap => :hard_wrap,
:prettify => :prettify,
:lax_htmlblock => :lax_spacing,
:no_image => :no_images,
:no_intraemphasis => :no_intra_emphasis,
:no_links => :no_links,
:filter_styles => :no_styles,
:safelink => :safe_links_only,
:space_header => :space_after_headers,
:strikethrough => :strikethrough,
:tables => :tables,
:generate_toc => :with_toc_data,
:xhtml => :xhtml,
# old names with no new mapping
:gh_blockcode => nil,
:no_tables => nil,
:smart => nil,
:strict => nil
}
我不确定为什么不包括脚注。 我收到的输出是这样的(将 ^ 读作上标,右方括号也带有上标): 大西洋[^1], [^1] 这是脚注
在您的自定义渲染器中,您覆盖了处理脚注的方法,因此它们什么都不做。只需删除那些方法(footnote_def
和 footnote_ref
)并允许原件 运行.
此外,脚注定义的语法需要一个您似乎遗漏的冒号:
[^1]: This is the footnote