Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 27 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,12 +256,15 @@ __Using this template? Share your site and I'll add it here!__
- **Auto-generated from BibTeX** via Jekyll Scholar — just edit `assets/ref.bib`
- **Search bar** — filter publications by title, author, or year
- **Year badges** — small accent-colored pills for quick scanning
- **Pill buttons** — PDF, DOI, arXiv, BIB, Abstract
- **Pill buttons** — PDF, DOI, arXiv, Link, Code, Slides, Video, Poster, Data, BIB, Abstract, all driven by BibTeX fields
- **Selected publications** on the home page — add `selected={true}` to an entry

### For New Users
- **Interactive setup script** — run `./setup.sh` to fill in your name, title, and institution
- **Interactive setup script** — `./setup.sh` fills in your name, title, and institution; `./setup.sh --clean` also strips the demo content
- **Talks, teaching, and software as data** — edit a YAML list, not HTML
- **5-step `_config.yml`** — numbered sections with inline comments guide you through setup
- **Well-commented data files** — every field in `_data/*.yml` is explained with examples
- **Analytics, your choice** — Google Analytics, Plausible, Umami, or GoatCounter, each a one-line setting
- **Smart link handling** — empty links in config are automatically hidden (no broken icons)

### Technical
Expand Down Expand Up @@ -291,7 +294,8 @@ __Using this template? Share your site and I'll add it here!__
2. **Install** [Jekyll](https://jekyllrb.com/docs/installation/) and run `bundle install`
3. **Configure** your site:
```bash
./setup.sh # interactive setup, or
./setup.sh --clean # remove the demo content and fill in your details, or
./setup.sh # keep the demo content as examples, or
vim _config.yml # edit Steps 1-5 directly
```
4. **Add your publications** to `assets/ref.bib`
Expand Down Expand Up @@ -373,11 +377,24 @@ Edit `assets/ref.bib` with your BibTeX entries. The publications page is auto-ge
volume = {42},
pages = {1--10},
doi = {10.1234/example},
arxiv = {2401.01234},
code = {https://github.com/jsmith/novel-approach},
file = {smith2024.pdf}, % place PDF in papers/
selected = {true}, % also show on the home page
abstract = {We present...}
}
```

Every link is a BibTeX field; use the ones you have:

| Field | Button |
|-------|--------|
| `file` | PDF (file in `papers/`) |
| `doi`, `arxiv`, `url` | DOI, arXiv, Link |
| `code`, `slides`, `video`, `poster`, `data` | Code, Slides, Video, Poster, Data |
| `abstract` | Abstract (expandable) |
| `selected = {true}` | Listed under "Selected publications" on the home page |

Your name is bolded automatically in the publication list. Set it in `_config.yml` exactly as it appears in the rendered list (`Last, F. M.`), longest form first:

```yaml
Expand Down Expand Up @@ -417,15 +434,16 @@ Each page in `_pages/` is a Markdown file. Edit the content directly:

- `home.md` — your welcome text and bio
- `research.md` — describe your research areas
- `software.md` — list your software projects
- `teaching.md` — list your courses

Talks, teaching, and software are lists in `_data/` (see below); their pages need no editing.

To remove a page from the navbar, comment it out in `_config.yml`:

```yaml
nav_pages:
- name: about
- name: publications
label: Papers # optional: navbar text (URL stays /publications)
# - name: talks # hidden from navbar
- name: research
```
Expand Down Expand Up @@ -461,7 +479,7 @@ The config file is organized into 5 numbered steps:
|------|---------|-----------------|
| 1 | **Your Identity** | Name, title, institution, email, photo |
| 2 | **Your Links** | Google Scholar, GitHub, ORCID, Twitter, LinkedIn, CV |
| 3 | **Site Settings** | Accent color, dark mode toggle, analytics |
| 3 | **Site Settings** | Accent color, dark mode, math, analytics (GA4, Plausible, Umami, GoatCounter) |
| 4 | **Your Pages** | Comment out any pages you don't need |
| 5 | **Publications** | Your name (for bolding) and Jekyll Scholar options |

Expand All @@ -475,7 +493,9 @@ The config file is organized into 5 numbered steps:
| `_data/awards.yml` | Awards and honors |
| `_data/grants.yml` | Grants and funding |
| `_data/funders.yml` | Funder logos |
| `_data/people.yml` | Students and mentees |
| `_data/talks.yml` | Invited and contributed talks |
| `_data/teaching.yml` | Courses |
| `_data/software.yml` | Software projects |
| `_data/pi.yml` | Optional: detailed education for About page |

Each file has inline comments explaining every field. Entries marked `# EXAMPLE` should be replaced or deleted.
Expand Down
4 changes: 4 additions & 0 deletions UPGRADING.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,8 @@ If you copied the template before September 2026, note these changes:
- MathJax loads only on pages with `math: true` in their front matter (or `math: true` in `_config.yml`).
- Bootstrap's JavaScript is no longer shipped; the mobile menu is handled in `assets/js/site.js`. Bootstrap's `buttons`, `card`, `dropdown` and `close` SCSS modules are no longer imported.
- Page titles are `# Title` (h1) instead of `## Title`; section headings remain `##`.
- Talks moved from `@incollection` BibTeX entries to `_data/talks.yml`; teaching and software pages are generated from `_data/teaching.yml` and `_data/software.yml`.
- `_data/people.yml` and the About page's "Students and Mentoring" list were removed (they duplicated `alumni.yml`).
- Publication links come from BibTeX fields (`arxiv`, `url`, `code`, `slides`, `video`, `poster`, `data`); an arXiv id in the `doi` field of an `@unpublished` entry still works. The year badge is taken from the `year` field. `selected = {true}` lists an entry on the home page.
- URLs are no longer printed inside the reference text (`citesty.csl`); they appear as buttons.
- `favicon.ico` was removed from the repository; the deploy workflow now rasterizes it (and `apple-touch-icon.png`) from the generated `favicon.svg`.
12 changes: 10 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,19 @@ description: "Academic webpage of Dr. Richard Feynman"
url: ""
baseurl: ""

# Google Analytics -- paste your GA4 measurement ID, or leave blank
# Analytics -- fill in whichever service you use; leave the rest blank.
analytics:
google_id: ""
google_id: "" # Google Analytics 4 measurement ID, e.g. G-XXXXXXXXXX
plausible_domain: "" # Plausible: your site's domain, e.g. jsmith.github.io
umami_website_id: "" # Umami: website ID (and umami_src if self-hosted)
umami_src: "" # default https://cloud.umami.is/script.js
goatcounter: "" # GoatCounter: your code, e.g. jsmith (for jsmith.goatcounter.com)

# ============================================================
# STEP 4: Choose Your Pages (comment out any you don't need)
# ============================================================
# Each name is a page in _pages/. Add `label: Papers` to change the
# navbar text without changing the URL.
nav_pages:
- name: about
- name: publications
Expand Down Expand Up @@ -70,6 +76,8 @@ scholar:
query: "@*"
bibliography_list_attributes:
reversed: "reversed"
# Template-only fields, kept out of the copyable BibTeX
bibtex_skip_fields: [abstract, month_numeric, file, selected, code, slides, video, poster, data]

# ============================================================
# Advanced Settings (you probably don't need to change these)
Expand Down
6 changes: 1 addition & 5 deletions _data/alumni.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
# Former lab members.
# Former lab members, shown in a table on the Team page.
# Each entry needs: name, duration, info
# Optional: photo, email

- name: Albert Hibbs
photo: team/albert-hibbs.svg
duration: 1951-55
info: Now at Jet Propulsion Laboratory

- name: William Frazer
photo: team/william-frazer.svg
duration: 1954-58
info: Now Professor at UC San Diego

- name: Robert Hellwarth
photo: team/robert-hellwarth.svg
duration: 1952-56
info: Now Professor at USC
31 changes: 0 additions & 31 deletions _data/people.yml

This file was deleted.

21 changes: 21 additions & 0 deletions _data/software.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Software projects, shown on the Software page in the order listed.
# Each entry needs: name, description
# Optional: authors, website, repo, docs, paper

- name: Path Integral Monte Carlo
authors: R. P. Feynman, A. Hibbs
website: https://example.com
repo: https://github.com
description: >-
A Monte Carlo simulation code for computing quantum mechanical path integrals
in many-body systems. Used to study the lambda transition in liquid helium
and other quantum statistical mechanics problems.

- name: QED Diagram Calculator
authors: R. P. Feynman
website: https://example.com
docs: https://example.com/docs
description: >-
A tool for systematically enumerating and evaluating Feynman diagrams in
quantum electrodynamics calculations, automating the computation of
scattering amplitudes to arbitrary order in perturbation theory.
59 changes: 59 additions & 0 deletions _data/talks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Talks, shown on the Talks page in the order listed (newest first is conventional).
# Each entry needs: title, event, year
# Optional: location, date (free text, e.g. "11 December"), type (invited or contributed;
# anything other than invited is listed as contributed), url, slides, video

- title: Personal observations on the reliability of the Shuttle
event: Rogers Commission
location: Washington, D.C.
year: 1986
type: invited

- title: Simulating physics with computers
event: MIT Conference on Physics and Computation
year: 1981
type: invited
slides: https://example.com/slides

- title: Difficulties in applying the variational principle to quantum field theories
event: Workshop on Variational Calculations in Quantum Field Theory
location: Wangerooge
year: 1987

- title: Los Alamos from below
event: APS Annual Meeting
location: Santa Barbara
year: 1975
video: https://example.com/video

- title: The parton model
event: Third International Conference on High Energy Collisions
location: Stony Brook
year: 1970

- title: The development of the space-time view of quantum electrodynamics
event: Nobel Lecture
location: Stockholm
year: 1965
date: 11 December
type: invited
url: https://www.nobelprize.org/prizes/physics/1965/feynman/lecture/

- title: The relation of mathematics to physics
event: Cornell Messenger Lectures
year: 1964

- title: There's plenty of room at the bottom
event: Annual Meeting of the American Physical Society
location: Caltech
year: 1959
type: invited

- title: The universal Fermi interaction
event: Rochester Conference on High Energy Physics
year: 1957

- title: Atomic theory of liquid helium
event: International Conference on Theoretical Physics
location: Tokyo
year: 1953
21 changes: 21 additions & 0 deletions _data/teaching.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Courses, shown on the Teaching page in the order listed.
# Each entry needs: course, title
# Optional: term, role, url, description

- course: Physics 1, 2, 3
title: The Feynman Lectures on Physics
term: 1961-63
url: https://www.feynmanlectures.caltech.edu/

- course: Physics 219
title: Quantum Computing
term: 1986

- course: Graduate Seminar
title: Quantum Electrodynamics
term: 1953-88

- course: Physics X
title: Informal undergraduate Q&A sessions
term: 1961-78
description: Weekly sessions where undergraduates could ask about anything in physics.
12 changes: 12 additions & 0 deletions _includes/analytics.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,15 @@
gtag('config', '{{ site.analytics.google_id }}');
</script>
{% endif %}
{% if site.analytics.plausible_domain and site.analytics.plausible_domain != "" %}
<!-- Plausible -->
<script defer data-domain="{{ site.analytics.plausible_domain }}" src="https://plausible.io/js/script.js"></script>
{% endif %}
{% if site.analytics.umami_website_id and site.analytics.umami_website_id != "" %}
<!-- Umami -->
<script defer src="{% if site.analytics.umami_src and site.analytics.umami_src != "" %}{{ site.analytics.umami_src }}{% else %}https://cloud.umami.is/script.js{% endif %}" data-website-id="{{ site.analytics.umami_website_id }}"></script>
{% endif %}
{% if site.analytics.goatcounter and site.analytics.goatcounter != "" %}
<!-- GoatCounter -->
<script data-goatcounter="https://{{ site.analytics.goatcounter }}.goatcounter.com/count" async src="https://gc.zgo.at/count.js"></script>
{% endif %}
2 changes: 1 addition & 1 deletion _includes/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</li>
{% for nav in site.nav_pages %}
<li class="nav-item">
<a class="nav-link{% if page.url contains nav.name %} active{% endif %}" href="{{ nav.name | prepend: '/' | relative_url }}">{{ nav.name | capitalize }}</a>
<a class="nav-link{% if page.url contains nav.name %} active{% endif %}" href="{{ nav.name | prepend: '/' | relative_url }}">{% if nav.label %}{{ nav.label }}{% else %}{{ nav.name | capitalize }}{% endif %}</a>
</li>
{% endfor %}
</ul>
Expand Down
14 changes: 14 additions & 0 deletions _includes/talk.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{% assign talk = include.talk %}
<div class="pub-entry">
{% if talk.year %}<span class="year-badge">{{ talk.year }}</span>{% endif %}
{% capture line %}<strong>{{ talk.title }}</strong>{% if talk.event %}. {{ talk.event }}{% endif %}{% if talk.location %}, {{ talk.location }}{% endif %}{% if talk.date %}, {{ talk.date }}{% endif %}{% endcapture %}
{% assign last_char = line | slice: -1 %}
<div class="text-justify">{{ line }}{% unless last_char == "." %}.{% endunless %}</div>
{% if talk.url or talk.slides or talk.video %}
<div class="pub-actions">
{% if talk.url %}<a href="{{ talk.url }}" target="_blank" class="btn-pill btn-link">Link</a>{% endif %}
{% if talk.slides %}<a href="{{ talk.slides }}" target="_blank" class="btn-pill btn-slides">Slides</a>{% endif %}
{% if talk.video %}<a href="{{ talk.video }}" target="_blank" class="btn-pill btn-video">Video</a>{% endif %}
</div>
{% endif %}
</div>
57 changes: 29 additions & 28 deletions _layouts/bibtemplate.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,39 +20,40 @@
{% endfor %}
{% endif %}

{% comment %}
Links come from BibTeX fields:
file PDF in papers/ arxiv arXiv identifier
doi DOI url any web page
code, slides, video, poster, data URLs
For backwards compatibility an arXiv id in the doi field of an
@unpublished entry is still treated as an arXiv link.
{% endcomment %}
{% assign has_pdf = false %}
{% if entry.file %}
{% assign pdf_path = "/papers/" | append: entry.file %}
{% for file in site.static_files %}{% if file.path contains pdf_path %}{% assign has_pdf = true %}{% endif %}{% endfor %}
{% endif %}
{% assign arxiv_id = entry.arxiv %}
{% if arxiv_id == nil or arxiv_id == "" %}
{% if entry.type == 'unpublished' and entry.doi %}{% assign arxiv_id = entry.doi %}{% endif %}
{% endif %}

<div class="pub-entry" data-pub-searchable>
{% if entry.year %}<span class="year-badge">{{ entry.year }}</span>{% endif %}
<div class="text-justify">{{ ref }}</div>

{% assign bibtest = false %}
{% if entry.file %}
{% assign bibfile = "/papers/" | append: entry.file %}
{% for file in site.static_files %}
{% if file.path contains bibfile %}
{% assign bibtest = true %}
{% endif %}
{% endfor %}
{% endif %}

<div class="pub-actions">
{% if bibtest %}
<a href="{{ entry.file | prepend: '/papers/' | relative_url }}" target="_blank" class="btn-pill btn-pdf">PDF</a>
{% endif %}

{% if entry.doi %}
{% if entry.type == 'unpublished' %}
<a href="{{ entry.doi | prepend: 'https://arxiv.org/abs/' }}" target="_blank" class="btn-pill btn-arxiv">arXiv</a>
{% else %}
<a href="{{ entry.doi | prepend: 'https://doi.org/' }}" target="_blank" class="btn-pill btn-doi">DOI</a>
{% endif %}
{% endif %}

{% if entry.type == 'unpublished' or entry.type == 'article' or entry.type == 'thesis' or entry.type == 'inproceedings' or entry.type == 'report' %}
{% if has_pdf %}<a href="{{ entry.file | prepend: '/papers/' | relative_url }}" target="_blank" class="btn-pill btn-pdf">PDF</a>{% endif %}
{% if arxiv_id and arxiv_id != "" %}<a href="https://arxiv.org/abs/{{ arxiv_id }}" target="_blank" class="btn-pill btn-arxiv">arXiv</a>{% endif %}
{% if entry.doi and entry.doi != arxiv_id %}<a href="https://doi.org/{{ entry.doi }}" target="_blank" class="btn-pill btn-doi">DOI</a>{% endif %}
{% if entry.url %}<a href="{{ entry.url }}" target="_blank" class="btn-pill btn-link">Link</a>{% endif %}
{% if entry.code %}<a href="{{ entry.code }}" target="_blank" class="btn-pill btn-code">Code</a>{% endif %}
{% if entry.slides %}<a href="{{ entry.slides }}" target="_blank" class="btn-pill btn-slides">Slides</a>{% endif %}
{% if entry.video %}<a href="{{ entry.video }}" target="_blank" class="btn-pill btn-video">Video</a>{% endif %}
{% if entry.poster %}<a href="{{ entry.poster }}" target="_blank" class="btn-pill btn-poster">Poster</a>{% endif %}
{% if entry.data %}<a href="{{ entry.data }}" target="_blank" class="btn-pill btn-data">Data</a>{% endif %}
<button class="btn-pill btn-bib" data-toggle-target="bib-{{ entry.key }}">BIB</button>
{% endif %}

{% if entry.abstract %}
<button class="btn-pill btn-abstract" data-toggle-target="abs-{{ entry.key }}">Abstract</button>
{% endif %}
{% if entry.abstract %}<button class="btn-pill btn-abstract" data-toggle-target="abs-{{ entry.key }}">Abstract</button>{% endif %}
</div>

<div class="pub-collapse" id="bib-{{ entry.key }}">
Expand Down
Loading