From 0d06a59b910c706ac1aa4061c13444acabcb6094 Mon Sep 17 00:00:00 2001 From: "Wesley R. Elsberry" Date: Mon, 6 Oct 2025 10:09:18 -0400 Subject: [PATCH] Initial files from ChatGPT. --- .github/workflows/build.yml | 31 ++++++++++++++++++++++++++ README.md | 44 ++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100755 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100755 index 0000000..720eb6d --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,31 @@ +name: Build PolyPaper + +on: [push, pull_request, workflow_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: { venue: [arxiv, ieee, elsevier, acm] } + steps: + - uses: actions/checkout@v4 + - name: Build Docker image + run: docker build -f Dockerfile.full -t polypaper:full . + - name: Validate metadata (in container) + run: docker run --rm -v ${{ github.workspace }}:/work -w /work polypaper:full bash -lc 'chmod +x scripts/check_metadata.py && scripts/check_metadata.py' + - name: Build PDFs and HTML (${{ matrix.venue }}) + run: | + docker run --rm -v ${{ github.workspace }}:/work -w /work polypaper:full bash -lc 'make VENUE=${{ matrix.venue }}' + docker run --rm -v ${{ github.workspace }}:/work -w /work polypaper:full bash -lc 'make supplement VENUE=${{ matrix.venue }}' + docker run --rm -v ${{ github.workspace }}:/work -w /work polypaper:full bash -lc 'make camera-ready VENUE=${{ matrix.venue }}' + docker run --rm -v ${{ github.workspace }}:/work -w /work polypaper:full bash -lc 'make site VENUE=${{ matrix.venue }}' + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: polypaper-${{ matrix.venue }} + path: | + paper-${{ matrix.venue }}.pdf + paper-supplement-${{ matrix.venue }}.pdf + paper-camera-ready-${{ matrix.venue }}.pdf + public/paper.html diff --git a/README.md b/README.md index 8ee3ccf..0d2a4f8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,45 @@ # PolyPaper -PolyPaper is a set of tools for scientific manuscript production that combines a single source tree coherently with targeting documents for multiple venues. \ No newline at end of file +PolyPaper is a set of tools for scientific manuscript production that combines a single source tree coherently with targeting documents for multiple venues. + +## Rationale + +Scientific research has uncertainties about publication venues that +have varying restrictions on page length, numbers of figures or +tables, or other restrictions. Being prepared for shifts in these +sorts of conditions has mostly required building entire variants of +manuscripts separate from one another. Besides additional effort, this +means that updates to content may need to be applied in multiple +different places, increasing the likelihood of drift between the +variants in statements, tone, or other properties. PolyPaper aims to +help keep similar content together leveraging the capabilities of +Emacs Org-Mode documents that provide literate programming capability +with LaTeX typesetting and Markdown/Pandoc flexible document type +generation. + +## How it works + + +The first step is to have 'venues', which are simply the possible ways +in which the material can be presented for publication, as separate +Org-Mode documents. These will incorporate the metadata needed for +LaTeX production or Pandoc target. + +The manuscript content will reside in an Emacs Org-Mode document. The +user can choose whether to keep that as a single document or use +include statements so that sections might have their own Org-Mode +document, depending on the research group's preferences on ways to +merge changes. + +Figures and tables are also specified in the source document, and can +be updated through Org-Mode commands. All the necessary processing can +be accomplished via use of command-lines and thus Makefiles can +automate repeated tasks. + +## Generative AI Disclosure + +This repository was largely derived by Wesley R. Elsberry prompting OpenAI's ChatGPT +with GPT 5. + +The associated chat session is at https://chatgpt.com/share/68e3c7d6-ef60-8007-b56c-8f221b8250da +