diff --git a/.github/workflows/pretext-cli.yml b/.github/workflows/pretext-cli.yml new file mode 100644 index 0000000..28bbbb5 --- /dev/null +++ b/.github/workflows/pretext-cli.yml @@ -0,0 +1,117 @@ +# This file was automatically generated with PreTeXt 2.32.0. +# If you modify this file, PreTeXt will no longer automatically update it. +# +# This workflow file can be used to automatically build a project and create +# an artifact for deployment. It can also be used to deploy the project to +# GitHub Pages or Cloudflare Pages. +# +# The workflow is triggered on pull requests or can be run manually. You can uncomment +# the `push` event to have it run on pushes to the main branch as well. +name: PreTeXt-CLI Actions +on: + # Runs on pull requests + pull_request: + branches: ["*"] + ## Runs on pushes to main + #push: + # branches: ["main"] + # Runs on demand + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + container: oscarlevin/pretext-full + + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: install deps + run: pip install -r requirements.txt + + - name: set up node + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: install local ptx files + run: pretext --version + + - name: build deploy targets + run: | + version="$(pretext --version)" + major="$(echo $version | cut -d '.' -f 1)" + minor="$(echo $version | cut -d '.' -f 2)" + if [ "$major" -ge 2 -a "$minor" -ge 5 ]; then + echo "PreTeXt version is 2.5 or greater; using new build command" + pretext build --deploys + else + echo "PreTeXt version is less than 2.5, using old build command" + pretext build + fi + - name: stage deployment + run: pretext deploy --stage-only + + - name: Bundle output/stage as artifact + uses: actions/upload-artifact@v4 + with: + name: deploy + path: output/stage + + deploy-cloudflare: + runs-on: ubuntu-latest + needs: build + if: vars.CLOUDFLARE_PROJECT_NAME != '' + permissions: + contents: read + deployments: write + + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: deploy + path: deploy + - name: Create 404.html + run: echo "404 page not found" >> deploy/404.html + - name: Publish to Cloudflare + uses: cloudflare/pages-action@v1 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + projectName: ${{ vars.CLOUDFLARE_PROJECT_NAME }} + gitHubToken: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ github.head_ref || github.ref_name }} + directory: deploy + + deploy-ghpages: + runs-on: ubuntu-latest + needs: build + if: vars.PTX_ENABLE_DEPLOY_GHPAGES == 'yes' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) + permissions: + contents: read + pages: write + id-token: write + concurrency: + group: "page" + cancel-in-progress: false + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Download website artifact + uses: actions/download-artifact@v4 + with: + name: deploy + path: deploy + - name: Setup GitHub Pages + id: check + uses: actions/configure-pages@v4 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: deploy + - name: Deploy to Github Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/pretext-deploy.yml b/.github/workflows/pretext-deploy.yml new file mode 100644 index 0000000..1c3acc8 --- /dev/null +++ b/.github/workflows/pretext-deploy.yml @@ -0,0 +1,68 @@ +# This file was automatically generated with PreTeXt 2.32.0. +# If you modify this file, PreTeXt will no longer automatically update it. +# + +name: Build and Deploy +on: + # Currently, this workflow only runs when manually selected (the `workflow_dispatch` event). + # If you would like it to run on other events, uncomment some of the lines below. + + # # Runs on pull requests + # pull_request: + # branches: ["*"] + + # # Runs on pushes to main + # push: + # branches: ["main"] + + # # Runs every day at 00:00 UTC + # schedule: + # - cron: '0 0 * * *' + + # Runs on demand + workflow_dispatch: + +permissions: + contents: write + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + container: oscarlevin/pretext-full + + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: set up node + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: add gh-cli + run: | + apt-get update + apt-get install gh jq -y + + - name: setup git config + run: | + git config --global --add safe.directory $(pwd) + git config user.name "${{ github.actor }} via GitHub Actions" + git config user.email "${{ github.actor }}@github_actions.no_reply" + + - name: install deps + run: pip install -r requirements.txt --break-system-packages + + - name: install local ptx files + run: pretext --version + + - name: build deploy targets + run: pretext build --deploys + + - name: run deploy + run: pretext deploy --no-push + + - name: push gh-pages branch + run: git push origin gh-pages --force + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 706f068..4ce1d16 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,60 @@ -# PreTeXt Codespace +# My PreTeXt Book -Use this template repository to quickly start a new [PreTeXt](https://pretextbook.org) project entirely in the cloud, using GitHub Codespaces. +This README was generated by running `pretext new book`. You should feel free to edit this to describe your project. -## Instructions -Look for the green button at the very top right of this page. The button should say `Use this template` (if not make sure you are logged in to GitHub). - -Click on the button and select "Create a new repository". On the next page, give your project a name, select public or private (this can be changed later), and click the "Create repository from template" button. +The main source file is `source/main.ptx`. This includes the other chapters of the book. -You now have a GitHub repository saved in your account. You can come back to that page any time you want to work on your project (note the URL or else find it in the list of your repositories when you log in to GitHub). +To compile the book as an accessible website, run `pretext build web` in a terminal from any directory of this project. -To start work on your project, go to the green button at the top of *your* repository's page, which will say `<> Code`. +To preview your output, run `pretext view web`. -1. Click on this button. -2. Click on the tab that says "Codespaces." -3. Click "Create codespace on main." +To deploy your output to GitHub pages, run `pretext deploy`. -This will open a new tab with a browser version of VS Code including everything set up to start working. (When you first create a codespace for a project, it may take 5-10 minutes; when you restart a codespace it will be much faster). The first thing you should do is create a new PreTeXT project. +To compile a pdf, run `pretext build print`. -### Creating a New Project +--- -1. Open the command palette by hitting `Ctrl+Shift+P` (or `F1`) and start typing "pretext new". You will see a command titled "PreTeXt: New Project". -2. Hit `Enter` and select what sort of project you would like to create. -3. Select the current suggested folder for the location of your project. +Below you will find some advice for working with PreTeXt, including help with using the [PreTeXt Codespace](https://github.com/PreTeXtBook/pretext-codespace) online editor through GitHub if you don't want to install the required software on your own computer. -The window should reload and you will have your project there. This readme will be gone, but you will get a new one with some new hints. -Next time you want to work on your book, return to your newly created repository, go to the green `<> Code` button, and select the codespace you previously created. If you don't see that codespace (perhaps you deleted it to save space), you can always create a new codespace. +## Learning PreTeXt + +See the [PreTeXt documentation](https://pretextbook.org/documentation.html) for links to a variety of resources. + +We also recommend browsing through the [annotated sample article](https://pretextbook.org/examples/sample-article/annotated) and [annotated sample book](https://pretextbook.org/examples/sample-book/annotated/) if you want to find examples and see the PreTeXt source for those examples quickly. + +## Using GitHub Codespaces + +GitHub Codespaces are a way to set up your whole authoring system entirely in your browser. In case you are not already reading this inside a codespace, you can create one specifically designed for authoring in PreTeXt by using [this template](https://github.com/PreTeXtBook/pretext-codespace). + +### Important: how to save your files + +The most important thing to remember when authoring in a codespace is that you are making all your edits on a *virtual machine* off in some remote server farm. This means there is an extra step to save your files. You can save files in the editor (in your browser), but this just saves them to that virtual machine. To make sure you can access these files, even if the virtual machine goes away, you need to sync them to github.com. This is done by *committing* your changes and then *pushing* those commits (or "syncing" them). You might see a warning when you restart your codespace that you have "uncommitted changes" -- make sure you commit them when you are done working. + +### Troubleshooting: Latex-images and pdfs + +We have tried to keep the codespace small (so it starts up quickly and doesn't eat through your monthly storage allotment), so we do not include a full TeXLive distribution. We have tried to include most packages and fonts you are likely to need to generate images using `` elements, and to generate PDF print output. However, if you run into a situation where the LaTeX gives errors about packages missing (like it cannot find a `mypackage.sty` file), here is what you should do. + +1. To quickly resolve the issue yourself, open a terminal (``Ctrl+Shift+` ``) and use the TeXLive Package Manager to install the missing package. + a. If you know that the package is called `mypackage` then enter the following two lines: + + ```bash + tlmgr install mypackage + tlmgr path add + ``` + b. If you don't know the name of the package, but know it should contain `mypackage.sty`, then you can search using + + ```bash + tlmgr search --global --all "mypackage.sty" + ``` + +2. To ensure that you don't have to repeat this step every time you recreate the codespace, add the package name to the list of installs inside the file `.devcontainer/installLatex.sh` which gets run every time a codespace is created. + +3. Better yet, post the name of the missing package to this [GitHub issue](https://github.com/PreTeXtBook/pretext-codespace/issues/21) and we will add it to the devcontainer. This has the advantage that you will still get updates that other authors submit (if you edit the `installLatex.sh` file, then it won't be updated when you run `pretext update`). + +### Troubleshooting: sageplot images + +By far the largest space-hog in a PreTeXt authoring environment is SageMath, which is only required if you generate images using sageplots. By default, SageMath is not installed in a PreTeXt codespace, but it should be easy to install if you need it. + +Just open the command palette (`Ctrl+Shift+P` of `F1`) and search for "PreTeXt: Install SageMath". This will also update the `.devcontainer/devcontainer.json` file so that the next time you create a codespace for this project, it should install automatically. \ No newline at end of file diff --git a/project.ptx b/project.ptx new file mode 100644 index 0000000..9771e7b --- /dev/null +++ b/project.ptx @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/publication/publication.ptx b/publication/publication.ptx new file mode 100644 index 0000000..92d6e51 --- /dev/null +++ b/publication/publication.ptx @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2637652 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +# This file was automatically generated with PreTeXt 2.32.0. +pretext == 2.32.0 diff --git a/source/backmatter.ptx b/source/backmatter.ptx new file mode 100644 index 0000000..d9fc197 --- /dev/null +++ b/source/backmatter.ptx @@ -0,0 +1,23 @@ + + + + + + + + + Backmatter + + + + + + + + + + +

This book was authored in .

+
+
+ diff --git a/source/ch-chapter-title.ptx b/source/ch-chapter-title.ptx new file mode 100644 index 0000000..f824667 --- /dev/null +++ b/source/ch-chapter-title.ptx @@ -0,0 +1,13 @@ + + + + Chapter Title + + +

Text before the first section.

+
+ + + + +
\ No newline at end of file diff --git a/source/docinfo.ptx b/source/docinfo.ptx new file mode 100644 index 0000000..f5a7698 --- /dev/null +++ b/source/docinfo.ptx @@ -0,0 +1,35 @@ + + + + + + + + changeme + + A simple string (no markup is allowed) to describe your book. + + + + + + + + + + + + \newcommand{\N}{\mathbb N} \newcommand{\Z}{\mathbb Z} \newcommand{\Q}{\mathbb Q} \newcommand{\R}{\mathbb R} + + + + \usepackage{tikz, pgfplots} \usetikzlibrary{positioning,matrix,arrows} \usetikzlibrary{shapes,decorations,shadows,fadings,patterns} \usetikzlibrary{decorations.markings} + + + + + + + + + diff --git a/source/frontmatter.ptx b/source/frontmatter.ptx new file mode 100644 index 0000000..eab9ebd --- /dev/null +++ b/source/frontmatter.ptx @@ -0,0 +1,39 @@ + + + + + + + + + + You + Your department + Your institution + + + + + + + My Website + + + + 20202024 + You + This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit CreativeCommons.org + + + + + + + + + + + + + + diff --git a/source/main.ptx b/source/main.ptx new file mode 100644 index 0000000..356f02a --- /dev/null +++ b/source/main.ptx @@ -0,0 +1,22 @@ + + + + + + + + Andy's Book + An example to get you started + + + + + + + + + + + + + diff --git a/source/sec-section-name.ptx b/source/sec-section-name.ptx new file mode 100644 index 0000000..924b3fe --- /dev/null +++ b/source/sec-section-name.ptx @@ -0,0 +1,8 @@ + + +
+ Section Title + +

Text of section.

+ +
\ No newline at end of file