Publish Pipeline
Activates when research documents need to be converted to publication formats and deployed to the live site.
Build Chain
Markdown (.md) → pandoc → Standalone HTML (branded template)
→ LaTeX PDF (xelatex, branded template)
Prerequisites
~/.local/bin/pandoc(v3.6+)xelatex(texlive-xetex)- DejaVu fonts (for PDF)
- Templates at the project level:
template.tex,html-template.html build.shscript in the project directory
Build Command
bash www/$SITE_DOMAIN/Research/PROJECT/build.sh
Template Setup
Each research project needs:
template.tex— LaTeX template (branded header/footer, colors, title page)html-template.html— Standalone HTML template (dark theme, navigation)build.sh— Iterates research/*.md, builds both formats
FTP Sync
# Full site sync
bash scripts/sync-research-to-live.sh
# Single project sync (direct to FTP root)
lftp -f /tmp/lftp-PROJECT.sh
# Where remote path is /PROJECT (NOT /Research/PROJECT)
Critical: The web server maps $DEPLOY_HOST/Research/X/ to FTP root /X/, not to /Research/X/. Always upload to root-level project directories.
Series Integration
After publishing, add the project to series.js:
{ id: 'CODE', name: 'Project Name', path: 'CODE/index.html' },
Alphabetical insertion by ID.