Module:Cite:修订间差异
武外梗百科 爱国好学自强图新的百科全书
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第57行: | 第57行: | ||
-- 帽注样式:灰色、斜体、小字号、开头空一点 | -- 帽注样式:灰色、斜体、小字号、开头空一点 | ||
---------------------------------------------------------------- | ---------------------------------------------------------------- | ||
local hatnote = '<div style="color:#555;font-size: | local hatnote = '<div style="color:#555;font-size:80%;font-style:italic;margin-bottom:0.5em;"> 主条目:[[' .. page .. ']]</div>' | ||
return hatnote .. "\n\n" .. body | return hatnote .. "\n\n" .. body | ||
2026年2月10日 (二) 11:20的版本
此模块的文档可以在Module:Cite/doc创建
local p = {}
function p.include(frame)
local page = mw.text.trim(frame.args[1] or frame.args.page or "")
local section = mw.text.trim(frame.args[2] or frame.args.section or "")
if page == "" or section == "" then
return ""
end
local title = mw.title.new(page)
if not title or not title.exists then
return ""
end
local content = title:getContent()
if not content then
return ""
end
-- 转义标题名
local safeSection = mw.ustring.gsub(section, "([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1")
-- 找目标标题
local startPos, endPos, eqs =
mw.ustring.find(content, "\n(=+)%s*" .. safeSection .. "%s*%1%s*\n")
if not startPos then
startPos, endPos, eqs =
mw.ustring.find(content, "^(=+)%s*" .. safeSection .. "%s*%1%s*\n")
end
if not endPos or not eqs then
return ""
end
local level = mw.ustring.len(eqs)
-- 从标题结束后开始逐行扫描
local after = mw.ustring.sub(content, endPos + 1)
local lines = {}
for line in mw.ustring.gmatch(after, "([^\n]*)\n?") do
-- 检查是否是标题行
local m_eqs, m_name = mw.ustring.match(line, "^(=+)%s*(.-)%s*%1%s*$")
if m_eqs then
local nextLevel = mw.ustring.len(m_eqs)
if nextLevel <= level then
break -- 遇到同级或更高级标题就停止
end
end
table.insert(lines, line)
end
local body = table.concat(lines, "\n")
----------------------------------------------------------------
-- 帽注样式:灰色、斜体、小字号、开头空一点
----------------------------------------------------------------
local hatnote = '<div style="color:#555;font-size:80%;font-style:italic;margin-bottom:0.5em;"> 主条目:[[' .. page .. ']]</div>'
return hatnote .. "\n\n" .. body
end
return p