This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal academic website of Paul Escande (CNRS, IMT Toulouse), built with the Julia static site generator Franklin.jl. Deployed at https://pescande.perso.math.cnrs.fr/. Git remote is on plmlab.math.cnrs.fr (GitLab). The README.md is the unmodified GitLab template and contains nothing useful.
# Live-reloading local preview (http://localhost:8000); also regenerates __site/
julia --project=. -e 'using Franklin; serve()'
# Production build (minification + KaTeX/highlight.js prerendering; needs NodeJS + highlight.js)
julia --project=. -e 'import Pkg; Pkg.instantiate(); using NodeJS; run(`$(npm_cmd()) install highlight.js`); using Franklin; optimize()'
# Deploy: rsync the built __site/ to the CNRS web host (requires SSH access)
./deploy.sh
__site/ is build output (git-ignored); never edit it directly. The actual deployment is deploy.sh; .gitlab-ci.yml (GitLab Pages) and .github/workflows/Deploy.yml (gh-pages) are leftovers from the Franklin template.
Pages are top-level Markdown files, each mapping to a URL: index.md (home), research.md (/research/: projects, students, fundings), publications.md (/publications/), teaching.md (/teaching/), 404.md. Page vars are set with @def title = "...".
Navigation menu is hard-coded in _layout/header.html — adding a new page requires adding a nav entry there.
_assets/ is served at /assets/ (e.g. _assets/publis/foo.pdf → /assets/publis/foo.pdf). Publication PDFs go in _assets/publis/, named YEAR_Title_Authors.pdf.
_css/basic.css holds the custom styles; _css/franklin.css is the template base.
Custom LaTeX-style commands are defined in config.md and used throughout the content pages:
\pubformat{title}{authors}{venue} — a publication entry (styled via .pub_title, .author_list, .journal_title).
\url{href}{label} — a link button (.pub_link, opens in new tab), appended after \pubformat.
\twoline{line1}{line2} — two-line entry used for teaching, talks, and events.
Styled blocks use Franklin's @@classname ... @@ div syntax (e.g. @@list_publis, @@short_list, @@logo_list); these classes are defined in _css/basic.css. Raw HTML is embedded with ~~~ ... ~~~.
To put a picture on the left of a research topic in research.md, wrap the section body in @@topic ... @@ and start it with @@topic_img  @@. Images go in _assets/research/, resized to ~320px wide JPEG (displayed at 160px). Note _css/franklin.css gives every content img width: 70%; padding-left: 10%, so custom image classes must override both.
In publications.md, publications are grouped under ## <year> headings (newest first, ## Preprint at top) inside the @@list_publis block; new entries follow the pattern:
- \pubformat{Title}{A. Author, P. Escande}{Journal Year} \url{/assets/publis/file.pdf}{PDF}
utils.jl only contains unused Franklin template examples (hfun_bar, hfun_m1fill, lx_baz).