Use `last_modified_at` rather than `last_updated`. So that the
jekyll-sitemap plugin automatically looks for the standard
`last_modified_at` front matter field to generate the `<lastmod>` tag in
your `sitemap.xml`.
It fixes [#2598](https://github.com/alshedivat/al-folio/issues/2598)
Also, it preserves backward compatibility, as the updated metadata logic
prioritizes the `page.last_modified_at`, and defaults to
`page.last_updated`.
This pull request significantly expands and clarifies the documentation
for the al-folio Jekyll theme, focusing on improved file structure
explanations, enhanced quick reference guides, and the addition of a
comprehensive analytics setup guide. The changes make it easier for
users and contributors to understand the project organization, available
features, and configuration options, especially regarding CV formats,
teaching pages, and analytics integration.
**Key documentation and structure improvements:**
*Expanded file and collection structure:*
- The file structure documentation in
`.github/agents/customize.agent.md` and `.github/agents/docs.agent.md`
now details all major directories, including new and existing
collections such as `_books/`, `_teachings/`, `_scripts/`, `_plugins/`,
and expanded `assets/` subdirectories. It also covers new configuration
and utility files, making it easier for users to locate and understand
the purpose of each file or folder.
[[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L24-R66)
[[2]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L17-R58)
*Documentation and quick reference enhancements:*
- The quick reference table in `.github/agents/customize.agent.md` has
been updated to include new actions like adding teaching pages, setting
up analytics, improving SEO, and ensuring accessibility, with more
precise documentation links.
- The documentation map now lists all major guides (e.g.,
`QUICKSTART.md`, `INSTALL.md`, `TROUBLESHOOTING.md`, `ACCESSIBILITY.md`,
`ANALYTICS.md`, `SEO.md`), providing a clearer overview of available
resources.
[[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L58-R110)
[[2]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L17-R58)
**Feature and configuration documentation updates:**
*CV/resume format guidance:*
- The CV documentation now clarifies that users can maintain both
RenderCV and JSONResume formats simultaneously, with clear instructions
on switching between them and deleting unused files if desired.
[[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L139-R185)
[[2]](diffhunk://#diff-52f2a9488bfe4177d1f1d01120859dad0b3e2d087283ded68f72d47b4f183391L291-R291)
*Teaching pages and new collections:*
- Adds documentation for the new `_teachings/` collection, including
required frontmatter and support for course materials, as well as
updates to enable/disable teaching and books pages via `_config.yml`.
[[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L180-R252)
[[2]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L24-R66)
*Analytics integration:*
- Introduces a new `ANALYTICS.md` guide with detailed setup instructions
for Google Analytics, privacy-friendly alternatives (Plausible, Pirsch,
Openpanel, GoAccess), GDPR considerations, and a comparison table to
help users choose the right analytics provider.
- The configuration documentation now references analytics setup and
related configuration options.
[[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L180-R252)
[[2]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L479-R550)
These updates collectively make the documentation more comprehensive,
actionable, and user-friendly for both new and advanced users.
**References:**
[[1]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L24-R66)
[[2]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L58-R110)
[[3]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L139-R185)
[[4]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L180-R252)
[[5]](diffhunk://#diff-15864f2655921f50a97689076e3b8feba0da320463750845be6a76eb2e30bfe4L479-R550)
[[6]](diffhunk://#diff-961a46180ce568ce43c20bf7129dc5e4926a9aa4e0d7bc19926ca5ee3ff95cd0L17-R58)
[[7]](diffhunk://#diff-0967e840631a541bb95e057e1c6d4884274cf56d5a217d7fee2eb7223b6b4c0dR1-R268)
[[8]](diffhunk://#diff-52f2a9488bfe4177d1f1d01120859dad0b3e2d087283ded68f72d47b4f183391L291-R291)
---------
Signed-off-by: George Araújo <george.gcac@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Fixes#2787 as an alternative to #2969. It was getting too cumbersome to
have 2 different data sources for CV and also a lot of different layout
files, so I decided to unify them all.
Main changes:
- synchronized the information inside RenderCV (`_data/cv.yml`) and
JSONResume (`assets/json/resume.json`)
- unified layout files for CV information
- added the option to set the "data source" in the CV page
---------
Signed-off-by: George Araújo <george.gcac@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Implements the course schedule feature requested in issue
#[2258](https://github.com/alshedivat/al-folio/issues/2258).
This PR adds a new course schedule feature to the al-folio theme,
allowing academics to easily create and display structured course
information.
**Changes:**
- Added a `courses` collection to organize and display academic courses
- Created course layout and display templates with responsive design
- Implemented organization by year and term with automatic sorting
- Added support for weekly schedule with topics and course materials
- Simplified documentation with a README for course creation
This feature makes it easier for academics to showcase their teaching
materials with a consistent, organized display of course schedules,
helping users create professional teaching pages without custom
implementation.
---------
Signed-off-by: George Araújo <george.gcac@gmail.com>
Co-authored-by: George Araújo <george.gcac@gmail.com>
Adds a HAL button in the same spirit as the arXiv button.
- add HAL button to `_layouts/bib.liquid`
- add `hal` to the filtered keywords in `_config.yml`
- add `hal` to the documentation in `CUSTOMIZE.md`
Fixes#3386 (the part about the wrong months; the other part (layouting
of bibtex) is fixed in #3387)
## Summary
- Fixes incorrect month shown for bibliography entries that do not
specify a `month` in BibTeX.
- Ensures `month`/`year` do not persist between entries in
`_layouts/bib.liquid`.
## Root Cause
- In Liquid, captured variables persist across iterations if not
reinitialized.
- `entrymonth` and `entryyear` were only set when
`entry.month`/`entry.year` existed, causing values from a previous entry
to leak into the next one when those fields were missing.
## Changes
- Reinitialize date-related variables per entry before conditional
captures:
## Behavior
- Before: Entries without a `month` could display the previous entry's
month.
- After: Entries without a `month` display only the `year`; entries with
a `month` display the correct month and year.
<img width="1956" height="918" alt="image"
src="https://github.com/user-attachments/assets/7a9682e7-55ab-43b7-8f82-f638d14ce08e"
/>
## Summary
This PR introduces an automated mechanism to update the citation count
for authors' publications.
- Inspired by @BernardoCama’s suggestion in #3150.
- Resolves#3150.
## Key Changes
- Adds an action to update publication citation counts.
- Note: This action creates a commit on the main branch.
- To trigger further GitHub Actions workflows from this commit, a
Personal Access Token (PAT) must be used (the default GitHub Actions
token cannot trigger subsequent workflows).
- Adds and manages citation data in `_data/citations.yml`.
- Adds and adapts `bin/update_scholar_citations.py` to handle citation
updates.
## Usage Examples
### Timeout
<img width="758" height="415" alt="image"
src="https://github.com/user-attachments/assets/0a330d35-b386-4670-8668-62701f2dc68b"
/>
### Success
<img width="1684" height="857" alt="image"
src="https://github.com/user-attachments/assets/44aa0558-e02a-4f00-b8cb-9e0ce16dd53c"
/>
This PR adds a few stylistic improvements to the distill-style blog
posts:
- Update distill blog post example to showcase sidenotes as an
alternative to styles in PR #3077
- Showcase equations in sidenotes (closes#1242)
- Add `overrides.js` to match footnotes and citation styles with global
theme styling
- Add "related posts" sections if enabled to distill style posts
- Add "giscus" section if enabled to distill style posts
https://github.com/user-attachments/assets/b19a9cd9-779d-4d89-a4fb-eb14fb384480
As described in https://github.com/alshedivat/al-folio/issues/300,
standard Markdown code highlighting doesn't work in the Distill template
because it is clobbered by the Distill "Prism" syntax highlighting. This
PR will allow d-code tags (distill-specific code tags) to function with
the Distill syntax highlighter, but will default `highlight` and
Markdown code blocks to use the Jekyll/Rouge highlighter.
This PR also removes overrides.js, which is currently broken because
jquery isn't loaded.
Hi,
I noticed an issue where the CV page fails to link to the correct custom
PDF when the `{% unless site.data.resume %}` block is executed in
`cv.liquid`. To resolve this, I updated the code to align its logic with
the else block to make it consistent.
---------
Co-authored-by: Maruan Al-Shedivat <maruan@genesistherapeutics.ai>
While using the distill template, I noticed it lacked many features
available in the regular post template, such as typograms, echarts, and
other interactive elements. To address this, I **included the necessary
scripts and dependencies for these features in** _distill.liquid_,
referencing them from misc.liquid. Now, the distill template offers the
same interactive functionality as the post template.
[INSPIRE](http://inspirehep.net/) is a trusted community hub that
facilitates the sharing and discovery of accurate scholarly information
in high energy physics. By integrating the social and citation count
badge, al-folio users within this community will gain significant
benefits.
In continuation of #2634, I am creating this pull request.
## Details
### Social Icon
- Add your INSPIRE author ID in the `config.yml` under `inspirehep_id`.
### Citation Count
- Enable this feature by setting `inspirehep` to `true` under
`enable_publication_badges` in your `config.yml` file.
- In your bibliography file (e.g., `papers.bib`), add `inspirehep_id =
{the literature's recid}` under the citation of a literature source.
## The issue
Currently Altmetric and Dimension publication badge elements have
non-obvious attributes that hide badges when some conditions are not met
,e.g.:
```
data-hide-no-mentions="true"
data-hide-less-than="15"
```
resulting in seemingly strange behavior where badges are enabled in
`config.yml` but don't show up consistently, as reported in #2443 :
Altmetric badges don't display for some pubs.
## This PR
- removes these hidden nondisplay conditions in favor of more
predictable website behavior;
- adds documentation links to point users interested in customizing
badge behavior to the right resources.
To reproduce the bug:
```bibtex
@inproceedings{Vaswani2017AttentionIA,
title = {Attention is All you Need},
author = {Ashish Vaswani and Noam M. Shazeer and Niki Parmar and Jakob Uszkoreit and Llion Jones and Aidan N. Gomez and Lukasz Kaiser and Illia Polosukhin},
booktitle = {Neural Information Processing Systems},
year = {2017},
doi = {10.48550/arXiv.1706.03762},
altmetric = {21021191}
}
```
The bug is
1. It seems to be some weird property of the liquid template that [line
252-254](8d82670ff1/_layouts/bib.liquid (L252-L254))
doesn't work at all. According to [this
post](https://stackoverflow.com/questions/59887447/liquid-how-to-assign-the-output-of-an-operator-to-a-variable)
and [this issue](https://github.com/Shopify/liquid/issues/236), liquid
doesn't support assign the output of operator to a variable nor a
ternary operator. So based on my console log, the value of
`entry_has_altmetric_badge` is always a string value of
`entry.altmetric` when altmetric is provided in bibtex.
```liquid
{% assign entry_has_altmetric_badge = entry.altmetric or entry.doi or entry.eprint or entry.pmid or entry.isbn %}
{% assign entry_has_dimensions_badge = entry.dimensions or entry.doi or entry.pmid %}
{% assign entry_has_google_scholar_badge = entry.google_scholar_id %}
{% if entry_has_altmetric_badge or entry_has_dimensions_badge or entry_has_google_scholar_badge %}
<div class="badges">
{% if site.enable_publication_badges.altmetric and entry_has_altmetric_badge %}
<span
...
```
Note that this could be problematic that a string in liquid is always
evaluated as true as long as it is defined regardless if it is "" or
"false".
[reference](https://shopify.github.io/liquid/basics/truthy-and-falsy/)
2. when altmetric is defined in bibtex, now the order of set attribute
to badge is eprint > doi > altmetric id > pmid > ISBN, and the badge
doesn't work when an arxiv doi is provided.
I think the expected behavior should be
1. as documented in CUSTOMIZE.md, only render the badge when the entry
is set to either "true" or the altmetric id. (It could also implement to
always render the badge whenever doi or other related attribute is set,
and set altmetric to "false" to disable it)
```md
- `altmetric`: Adds an [Altmetric](https://www.altmetric.com/) badge (Note: if DOI is provided just use `true`, otherwise only add the altmetric identifier here - the link is generated automatically)
```
2. if the almetric id is set, use it first.
This PR fixes a very niche bug.
If there is a co-author that is not *me* (=`<em>` tagged) and does not
have a `coauthor_url` (=`<a>` tagged), there will be a leading
whitespace before the separating comma. If the author list is split into
multiple lines (due to long author lists or a small view), the
whitespace can lead to a line beginning with a comma.
As I said, very niche, but interestingly, the other cases already did
the same whitespace handling. Just the case not-me/no-url was mising.
Currently, we do not have this case on vanilla al-folio, but you can see
it for example on [my website](https://christianmainka.de/publications/)
if the view is small (e.g., 430px).
Related to #1502.