Spaces:
Sleeping
Sleeping
| import re | |
| def reindex_citations(content): | |
| """ | |
| 将content中所有形如[collection_name]的引用标记,全局重编号为[1]、[2]、[3]...。 | |
| 返回: | |
| new_content: 替换后的文本 | |
| source_map: {collection_name: index, ...} | |
| """ | |
| pattern = r"\[([^\[\]]+)\]" | |
| source_map = {} | |
| current_index = 1 | |
| def replace_func(match): | |
| source = match.group(1) | |
| nonlocal current_index | |
| if source not in source_map: | |
| source_map[source] = current_index | |
| current_index += 1 | |
| return f"[{source_map[source]}]" | |
| new_content = re.sub(pattern, replace_func, content) | |
| return new_content, source_map | |
| def generate_references_section(source_map): | |
| """ | |
| 根据source_map生成References部分的文本。 | |
| source_map: {collection_name: index, ...} | |
| 返回值: | |
| str: | |
| "References\n1 collection_name_1\n2 collection_name_2\n..." | |
| """ | |
| # 将source_map按index排序 | |
| index_to_source = sorted(source_map.items(), key=lambda x: x[1]) | |
| refs_lines = ["References"] | |
| for source, idx in index_to_source: | |
| refs_lines.append(f"{idx} {source}") | |
| return "\n".join(refs_lines) | |