How to generate an academic pdf from a markdown research paper
- Step 1Paste or drop your manuscript — Paste your research paper Markdown into the editor, or drop a single
.md/.markdownfile. This tool takes one document at a time — it does not merge multiple files. - Step 2Strip YAML frontmatter first — If your file starts with a
---YAML block (title, authors, date), remove it or run it through the Frontmatter Builder — the academic renderer does not strip frontmatter and will render it as a stray horizontal rule plus a garbled heading. - Step 3Render to the academic theme — Run the tool.
markedconverts your Markdown to HTML and wraps it in the serif academic stylesheet, then loads it into a sandboxed preview frame so you can read it exactly as it will print. - Step 4Review the preview — Scan the preview for the known limitations: inline math and footnote markers appear as raw text, and code fences get a gray box but no syntax colouring. Fix anything in the source and re-run.
- Step 5Print to PDF — Click 'Print to PDF'. The tool calls the preview frame's print method; in the browser dialog choose 'Save as PDF' as the destination to produce the file.
- Step 6Set print options in the dialog — Paper size (A4 vs Letter), background graphics, and headers/footers are controlled by your browser's print dialog, not by this tool. Enable 'Background graphics' if you want table header shading and code-block backgrounds to print.
What the academic theme actually does to your Markdown
The exact CSS the tool injects — these values are fixed, not configurable in the UI.
| Element | Rendered as | Notes |
|---|---|---|
| Body text | Georgia → Times New Roman serif, 12pt, line-height 1.7, color #111 | The 'academic' look; the Modern variant uses a sans-serif stack at 10.5pt instead |
# H1 | 2em, with a 2px bottom border | Use a single H1 for the paper title |
## H2 | 1.5em, with a 1px bottom border | Natural fit for section headings (Introduction, Methods…) |
| GFM pipe table | Bordered <table>, header row shaded #f0f0f0 | Real table rendering — results and data tables survive |
| Fenced code block | Gray #f6f8fa box, monospace, 0.85em | No syntax highlighting — the language-* class is set but not colourised |
> blockquote | Left 4px gray border, indented, color #555 | Good for epigraphs or pulled-out quotations |
| Page margins | @page { margin: 25mm 20mm } | Applies when you print; not editable in the tool |
Supported vs. not supported in the source Markdown
Grounded in the marked v14 default parser this tool uses — verify before relying on a feature.
| Markdown feature | Status | What you see in the PDF |
|---|---|---|
| Headings, bold, italic, lists | Supported | Standard rendering |
| GFM pipe tables | Supported | Real bordered table |
Task lists - [x] | Supported | Rendered checkboxes (disabled) |
Strikethrough ~~text~~ | Supported | Struck-through text |
Inline/block math $…$ | Not rendered | Appears as literal $E = mc^2$ text |
Footnotes [^1] | Not rendered | Appears as literal [^1] text |
| BibTeX / citation keys | Not processed | Keys pass through unchanged |
| Code syntax highlighting | Not applied | Plain monospace in a gray box |
| YAML frontmatter | Not stripped | Renders as <hr> + garbled heading |
Manuscript size limits by plan
Markdown family limits. Note the character limit is separate from the byte size — a paper can hit the char cap before the MB cap.
| Plan | File size | Character limit | Files per run |
|---|---|---|---|
| Free | 1 MB | 500,000 chars | 1 |
| Pro | 10 MB | 5,000,000 chars | 10 |
| Pro-media | 50 MB | 20,000,000 chars | 50 |
| Developer | 500 MB | Unlimited | Unlimited |
Cookbook
Real research-paper scenarios with the exact source-to-output behaviour. Author names and data are illustrative.
A results section with a GFM table renders cleanly
Pipe tables are first-class in this tool. Your numeric results table becomes a bordered table with a shaded header row in the academic theme.
Markdown source: ## 3. Results | Condition | n | Mean (SD) | p | |-----------|----|-------------|-------| | Control | 42 | 4.1 (0.8) | — | | Treatment | 41 | 5.6 (0.9) | 0.003 | PDF output: 3. Results (Georgia serif heading, 1.5em, underlined) [ bordered table, header row shaded gray, monospace-free body ]
Inline math is NOT typeset — it prints literally
This is the most common surprise. There is no KaTeX/MathJax step. A dollar-delimited equation is passed straight through to the page as text.
Markdown source: The energy relation is $E = mc^2$ for rest mass. PDF output (literal — note the dollar signs survive): The energy relation is $E = mc^2$ for rest mass. Fix: keep equations as images, or render math elsewhere (run md-math-normalizer to standardise delimiters first).
Footnotes appear as raw markers
The default parser does not implement the footnote extension, so reference markers and definitions both render as plain text rather than superscripts and a notes section.
Markdown source: Prior work disputes this[^1]. [^1]: See Smith (2019), p. 14. PDF output (literal): Prior work disputes this[^1]. [^1]: See Smith (2019), p. 14. Fix: inline the citation as plain text, or convert footnote markers with md-footnote-linker before exporting.
Strip the YAML header block before rendering
The academic case feeds the raw file to the parser without removing frontmatter. The --- fences become horizontal rules and the metadata lines collapse into a malformed heading.
Markdown source: --- title: On Diffusion Models author: J. Rivera --- # 1. Introduction PDF output (broken): [ horizontal rule ] title: On Diffusion Models author: J. Rivera <- garbled H2 1. Introduction Fix: delete the --- block, or build it with md-frontmatter-builder and keep it out of the printable body.
Code listings get a box but no colour
Useful for reproducibility appendices: your code stays readable in a monospace box, but reviewers will not get language-aware syntax colours.
Markdown source:
```python
def sample(n):
return rng.normal(size=n)
```
PDF output:
[ gray #f6f8fa box, monospace 0.85em, no keyword colouring ]
def sample(n):
return rng.normal(size=n)
Note: enable 'Background graphics' in the print dialog or the
gray box will print white.Edge cases and what actually happens
Inline and display math is not rendered
Not rendered$E = mc^2$, $$…$$, and \(…\) all pass through as literal characters. There is no KaTeX or MathJax stage in this tool. For a paper that is equation-heavy, keep equations as images, or render the math in a LaTeX/Pandoc workflow and use this tool only for prose-style drafts.
Footnote syntax prints as raw markers
Not renderedThe marked default parser does not enable the footnote extension. [^1] markers and [^1]: … definitions both appear verbatim. Convert them to inline parenthetical citations, or use md-footnote-linker before exporting.
YAML frontmatter leaks into the page
By design (not stripped)Unlike some other tools in the suite, the academic PDF path does not call frontmatter splitting. A leading --- block renders as a horizontal rule followed by a garbled setext heading. Remove the block from the body or manage it with md-frontmatter-builder.
Code blocks have no syntax highlighting
By designFences get the correct language-* class but no colourising library runs, so code prints as plain monospace inside a gray box. This is intentional — it keeps the bundle small and the output deterministic.
Trying to convert several chapters at once
RejectedThis tool accepts a single document per run (it is not a multi-file tool). To assemble a multi-chapter manuscript into one PDF, combine the files first with md-merger, then run the merged file through this tool.
File exceeds the character limit
ErrorEven under the byte ceiling, a document over your plan's character limit (500,000 chars on Free) is refused with a clear message naming the count and the cap. A very long thesis with embedded base64 images is the usual culprit; split it or upgrade.
Page size and headers look wrong
Expected (browser-controlled)A4 vs Letter, page numbers, and running headers/footers come from your browser's print dialog, not this tool. The tool only fixes content margins via @page { margin: 25mm 20mm }. Set the rest in the dialog before saving.
Table-header shading and code boxes print white
Expected (browser-controlled)Browsers strip background colours from print output by default. Enable 'Background graphics' (Chrome) or 'Print backgrounds' (Firefox/Safari) in the print dialog so the #f0f0f0 header shading and #f6f8fa code boxes appear.
Relative image paths show as broken images
Broken (expected)Images render at max-width: 100%, but a relative src like ./figs/fig1.png has nothing to resolve against in the preview frame. Use absolute https:// URLs, or rewrite paths first with md-image-path-rewriter.
Output is HTML rendered for print, not a saved .pdf
ExpectedThe tool produces styled HTML in a print frame; the actual .pdf is created by your browser's 'Save as PDF' print destination. There is no server-side PDF renderer, which is exactly why your manuscript never leaves the browser.
Frequently asked questions
Does this typeset LaTeX math like a real journal template?
No. Math written as $E = mc^2$ or $$…$$ is passed through as literal text — there is no KaTeX/MathJax stage. For equation-heavy papers, keep equations as images or render them in a LaTeX/Pandoc pipeline and use this tool for prose drafts. You can run md-math-normalizer first to make your delimiters consistent for whatever downstream renderer you do use.
Will my BibTeX citations be resolved?
No. There is no bibliography engine here. Citation keys and [^1] footnote markers print as raw text. This tool is the final styling pass, not a reference manager — process citations with Pandoc/BibTeX beforehand if you need resolved references.
Are GFM tables supported?
Yes. The tool uses the marked parser with GFM defaults, so pipe tables render as real bordered <table> elements with a shaded header row. Results and data tables come through cleanly.
Is this suitable for journal submission?
It is best for working drafts, co-author review, and conference handouts. Most journals require LaTeX or DOCX. For a Word-format manuscript, use md-to-docx; for a sans-serif corporate look, use md-to-pdf-modern.
Does my unpublished paper get uploaded anywhere?
No. Conversion runs in your browser via the marked engine, and the final PDF is produced by your browser's print dialog. Nothing is sent to a server, which is the point for embargoed or under-review work.
Why does the start of my document show a horizontal line and garbled text?
That is your YAML frontmatter. This tool does not strip the --- block, so it renders as a horizontal rule plus a malformed heading. Delete the block from the printable body, or manage metadata with md-frontmatter-builder.
What font and margins does it use?
Body text is Georgia with a Times New Roman fallback at 12pt and 1.7 line-height; page margins are a fixed 25mm 20mm. These are baked into the academic theme and are not adjustable in the UI.
Can I convert multiple chapters into one PDF?
Not directly — this tool takes one file per run. Merge your chapters first with md-merger, then run the combined Markdown through this tool to get a single PDF.
Why is my code not syntax-highlighted?
By design. Fenced code gets a gray box and the correct language-* class but no colourising library runs, so it prints as plain monospace. If you want highlighted code in a web context instead, use md-to-html.
How big a paper can I convert?
On the Free plan, up to 1 MB and 500,000 characters in a single file — longer than a typical manuscript. Pro raises this to 10 MB / 5,000,000 characters. The character cap is separate from the byte size, so a base64-image-heavy file can hit the char limit first.
My tables and code boxes print without their backgrounds — why?
Browsers omit background colours from print by default. Turn on 'Background graphics' / 'Print backgrounds' in the print dialog so the table-header shading and code-block boxes appear in the saved PDF.
How do I get A4 vs Letter or page numbers?
Those are browser print-dialog settings, not tool options. Choose your paper size and toggle headers/footers in the dialog before selecting 'Save as PDF'. The tool only controls the content margins and the serif theme.
Privacy first
All Markdown processing runs locally in your browser using JavaScript. No file is ever uploaded to JAD Apps servers — only metadata counters are saved for signed-in dashboard stats.