Skip to content

Conversation

@GreLucie
Copy link

@GreLucie GreLucie commented Nov 29, 2025

Closes #12727

This PR is to add a custom exporter for academicpages.github.io by adding the corresponding layouts.
It also implements a way to export multiple files to this format.

Steps to test

When jabref is running, go to file->Export->Export selected entries ( or all entries) and choose "Academic Pages Markdowns" for the export type.

image

You can then add the markdown file(s) to your academic page to see it on your own page.
image

More information about academic pages on the page : https://academicpages.github.io/

Mandatory checks

@github-actions
Copy link
Contributor

Hey @GreLucie!

Thank you for contributing to JabRef! Your help is truly appreciated ❤️

We have automated checks in place, based on which you will soon get feedback if any of them are failing. In a while, maintainers will also review your contribution. Once that happens, you can go through their comments in the "Files changed" tab and act on them, or reply to the conversation if you have further inputs.

Please re-check our contribution guide in case of any other doubts related to our contribution workflow.

@GreLucie GreLucie changed the title Fix for issue 12727 Added a custom Export for academicpages.github.io Nov 29, 2025

String content = Files.readString(expectedFile);

// Verify YAML front matter fields
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please follow the pattern of other tests in that directory, do a full comparison. of the content

CHANGELOG.md Outdated
### Removed

## [6.0-alpha.3] – 2025-10-30
## [6.0-alpha.3] – 2025-11-29
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please revert this change

…uits avec le format exigé de academic pages
…r-issue-12727

# Conflicts:
#	jablib/src/main/java/org/jabref/logic/exporter/AcademicPagesExporter.java
@github-actions github-actions bot added the status: changes-required Pull requests that are not yet complete label Nov 30, 2025
import org.jabref.model.entry.BibEntry;
import org.jabref.model.metadata.SelfContainedSaveOrder;

import org.jetbrains.annotations.NotNull;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use jspecify nonnull

### Removed

## [6.0-alpha.3] – 2025-11-29
## [6.0-alpha.3] – 2025-10-30
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this some automatic tool that always changes the date?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello, you told me to revert this change so I went back to the unmodified CHANGELOG for now. I know we have to change it eventually but while this PR is just a draft we decided to change it once all the issues have been fixed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can change it at any time - the earlier the better :) -- BUT - do NOT CHANGE RELEASE DATES

Add your change to the "Unreleased" section.

Note: Current diff shows CHANGELOG.md unmodified: https://github.com/JabRef/jabref/pull/14463/files (which is OK at this stage).

@github-actions github-actions bot added the status: changes-required Pull requests that are not yet complete label Dec 6, 2025
@github-actions github-actions bot removed the status: changes-required Pull requests that are not yet complete label Dec 7, 2025
@GreLucie GreLucie requested a review from koppor December 7, 2025 14:39
Copy link
Member

@koppor koppor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The exporter should be "intelligent"

Currently, if no PDF exists, it exports

paperurl: 'https://[insert username].github.io/files/[insert filename].pdf'

This is wrong - it has to omit paperurl if there is no PDF.

slidesurl has to be omitted in all cases, because there is "no standard" in JabRef for this.

bibtexurl can always be provided. -- Write the BibEntry to a file.

Use following method:

public @NonNull String getStringRepresentation(

For InProceedings, the venue has to be read from booktitle. That means: If journal (getFieldOrAlias) is empty, use Booktitleas venue. DO NOT use Unknownleave it empty.

category should also be mapped: InProceedings is conferences, Article is journals, all other can go into manuscripts.

citation needs to be generaed out of the entry preview

Right part at

grafik

paperurl is a file next to the markdown file - just copy the first attached file next to it and link it.

--

insert username is not acceptable. Two options:

  1. Use user from org.jabref.logic.preferences.JabRefCliPreferences#getUserHostInfo - make this method public
  2. Make it configurable in the preferences (for the export for acamdemic pages)
  3. Ask at each export using a dialog

I think, the first option is best.


you can try out the export for yourself using https://github.com/JabRef/jabref-demonstration-libraries/blob/main/chocolate/Chocolate.bib - it has even attached files.

Comment on lines 64 to 67
* @param databaseContext the database to export from
* @param file the directory to write to
* @param entries a list containing all entries that should be exported
* @param abbreviationRepository the built-in repository
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure why not all comments start at the same column

}
}

private @NonNull Path getPath(BibEntry entry, Path exportDirectory) throws SaveException {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can the other parameters be null? I don't think so.

Just remove @NonNull and annotate the whole class as @NullMarked. - I assume, no parameter maybe null or is there one?

/**
* Convert the month name into the corresponding number and return 01 by default
*/
public class NumberMonthFormatter implements LayoutFormatter {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think, it should be called MonthNumberFormatter


@Override
public String format(String fieldText) {
return fieldText.replaceAll("[\\\\/:*?\"<>|]", "");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use org.jabref.logic.util.io.FileUtil#getValidFileName

@github-actions github-actions bot added the status: changes-required Pull requests that are not yet complete label Dec 7, 2025
@github-actions github-actions bot removed the status: changes-required Pull requests that are not yet complete label Dec 8, 2025
@jabref-machine
Copy link
Collaborator

JUnit tests of jablib are failing. You can see which checks are failing by locating the box "Some checks were not successful" on the pull request page. To see the test output, locate "Source Code Tests / Unit tests (pull_request)" and click on it.

You can then run these tests in IntelliJ to reproduce the failing tests locally. We offer a quick test running howto in the section Final build system checks in our setup guide.

@github-actions github-actions bot added the status: changes-required Pull requests that are not yet complete label Dec 8, 2025
@Siedlerchr
Copy link
Member

Please fix the failing tests°!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

first contrib status: changes-required Pull requests that are not yet complete

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Export for academicpages.github.io

7 participants