-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Roadmap
Pandoc doesn't have a strict roadmap but this page should serve as an overview about major changes to pandoc that are under consideration.
- Attributes for all elements
- a Figure block element, capable of containing multiple images
- short and long captions for tables, figures, headers
- internal links/references to tables and figures
- PageBreak element
- Handle insertions and deletions (
<ins>
and<del>
) consistently across readers/writers - change Format from String to a sum type
- Endnotes and reusing the same Note
- Comment AST element
- changing JSON serialization format to be more human-readable, less Haskell-ADT-oriented, see this comment
- Specify command-line options using YAML metadata
- Command-line options --css and --include-in-header override corresponding metadata fields instead of accumulating
- Change merge-behaviour of two metadata blocks
John has indicated that the default input reader for pandoc will eventually transition from markdown
to commonmark_x
. One important step along that path will be implementing a sufficient set of markdown extensions in CommonMark. The table below lists the extensions that are available to the markdown
reader (plus a couple new extensions exclusive to CommonMark) and reports on their status in the commonmark
reader. Extensions have one of a few possible statuses:
- Available: implemented as an extension to CommonMark
- Core CommonMark: implemented in the core spec, cannot be disabled
- Incompatible with CommonMark: violates the spec, will never be implemented
- Planned: likely to be implemented as extensions at some future date
-
Unlikely to be implemented: the feature will not be supported under
commonmark
, for a variety of reasons -
Not Currently Implemented: may or may not be supported under
commonmark
—to be determined - Abandoned in favor of…/subsumed by…: Extension behavior implemented in a different extension or in core syntax
Pandoc's Markdown Extensions | Status in commonmark |
---|---|
abbreviations | not currently implemented |
all_symbols_escapable | core commonmark |
angle_brackets_escapable | core commonmark |
ascii_identifiers | available |
attributes | available |
auto_identifiers | abandoned in favor of gfm_auto_identifiers |
autolink_bare_uris | available |
backtick_code_blocks | core commonmark |
blank_before_blockquote | incompatible with commonmark |
blank_before_header | incompatible with commonmark |
bracketed_spans | available |
citations | planned |
compact_definition_lists | unlikely to be implemented |
definition_lists | available |
east_asian_line_breaks | available |
emoji | available |
escaped_line_breaks | core commonmark |
example_lists | planned |
fancy_lists | available |
fenced_code_attributes | subsumed by attributes extension |
fenced_code_blocks | core commonmark |
fenced_divs | available |
footnotes | available |
four_space_rule | incompatible with commonmark |
gfm_auto_identifiers | available |
grid_tables | planned |
gutenberg | not currently implemented |
hard_line_breaks | available |
header_attributes | subsumed by attributes extension |
ignore_line_breaks | not currently implemented |
implicit_figures | available |
implicit_header_references | available |
inline_code_attributes | subsumed by attributes extension |
inline_notes | planned |
intraword_underscores | core commonmark |
latex_macros | not currently implemented |
line_blocks | planned |
link_attributes | subsumed by attributes extension |
lists_without_preceding_blankline | core commonmark |
literate_haskell | not currently implemented |
mark | not currently implemented |
markdown_attribute | unlikely to be implemented |
markdown_in_html_blocks | abandoned in favor of core commonmark syntax |
mmd_header_identifiers | not currently implemented |
mmd_link_attributes | not currently implemented |
mmd_title_block | not currently implemented |
multiline_tables | planned |
native_divs | unlikely to be implemented |
native_spans | unlikely to be implemented |
old_dashes | unlikely to be implemented |
pandoc_title_block | not currently implemented |
pipe_tables | available |
raw_attribute | available |
raw_html | available |
raw_tex | incompatible with commonmark |
rebase_relative_paths | available |
short_subsuperscript | Unlikely to be implemented |
shortcut_reference_links | core commonmark |
simple_tables | planned |
smart | available |
sourcepos | available |
space_in_atx_header | core commonmark |
spaced_reference_links | incompatible with commonmark |
startnum | core commonmark |
strikeout | available |
subscript | available |
superscript | available |
table_captions | planned |
task_lists | available |
tex_math_dollars | available |
tex_math_double_backslash | not currently implemented |
tex_math_single_backslash | incompatible with commonmark |
wikilinks_title_after_pipe | available |
wikilinks_title_before_pipe | available |
yaml_metadata_block | available |
A brief description of John's reasoning for the extensions, see this thread in Pandoc-discuss.
""" XXX DEX PPT Generator - 主入口文件 生成深色科技风格的XXX DEX产品演示PPT """
from fastapi import FastAPI, File, UploadFile, HTTPException from fastapi.responses import FileResponse from fastapi.middleware.cors import CORSMiddleware from src.ppt_generator import XXXDEXPPTGenerator import uvicorn import os import tempfile
app = FastAPI( title="XXX DEX PPT Generator", description="生成XXX DEX产品演示PPT的自动化工具", version="1.0.0" )
app.add_middleware( CORSMiddleware, allow_origins=[""], allow_credentials=True, allow_methods=[""], allow_headers=["*"], )
@app.post("/generate-ppt") async def generate_ppt(): """生成PPTX文件并返回下载链接""" try: generator = XXXDEXPPTGenerator()
# 创建临时文件
with tempfile.NamedTemporaryFile(suffix='.pptx', delete=False) as tmp_file:
tmp_path = tmp_file.name
# 生成PPT
generator.create_presentation(tmp_path)
return FileResponse(
tmp_path,
media_type="application/vnd.openxmlformats-officedocument.presentationml.presentation",
filename="XXX-DEX-产品演示.pptx"
)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/health") async def health_check(): """健康检查接口""" return {"status": "healthy", "service": "XXX DEX PPT Generator"}
if name == "main": uvicorn.run(app, host="0.0.0.0", port=8000)