Compare commits

...

5 Commits
v1.2.1 ... main

Author SHA1 Message Date
John Haverlack 9db4082835 Roadmap & License Update 2026-02-12 09:01:43 -09:00
John Haverlack 90d7564013 Font Fix 2026-02-12 08:49:58 -09:00
John Haverlack 8384c47f11 v1.2.3 2026-02-05 17:36:18 -09:00
John Haverlack da0e59bd22 v1.2.3: MathJax refactor 2026-02-05 16:02:15 -09:00
John Haverlack 5e0ffff98d v1.2.2 2026-02-05 15:41:34 -09:00
129 changed files with 1954 additions and 3424 deletions

View File

@ -4,17 +4,21 @@
"type": "split",
"children": [
{
"id": "f0990ffd7a67a2ec",
"id": "2d8c08f76d34c644",
"type": "tabs",
"children": [
{
"id": "9f4cd104c7d85619",
"id": "24988c076d2f30d6",
"type": "leaf",
"state": {
"type": "empty",
"state": {},
"type": "markdown",
"state": {
"file": "chapters/04_Design.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "New tab"
"title": "04_Design"
}
}
]
@ -264,33 +268,35 @@
"obsidian-kanban:Create new board": false
}
},
"active": "9f4cd104c7d85619",
"active": "24988c076d2f30d6",
"lastOpenFiles": [
"README.md",
"conf/sedTQLO9w",
"chapters/02_Usage.md",
"conf/sedufgozC",
"conf/sedQ287QU",
"conf/sedq3LRZz",
"chapters/03_Features.md",
"chapters/Appendix.md",
"conf/sedkKV6c0",
"conf/sedAqcSmo",
"conf/sedk8YBK0",
"conf/sedzF3xOr",
"conf/sedtZNObL",
"chapters/AppendixB.md",
"chapters/Bibliography.md",
"chapters/AppendixA.md",
"conf/sed6ZdLUq",
"chapters/04_Design.md",
"conf/sedtBb3Os",
"conf/sedRcZh0D",
"conf/sed1CDdq2",
"conf/sedzZKUYL",
"conf/sedGlYwid",
"conf/sedB61nJB",
"conf/sedkPk5Sn",
"conf/seddNGzeb",
"chapters/01_Getting_Started.md",
"conf/sedBapyXA",
"conf/sedYZ2rBJ",
"conf/sedbEPwZC",
"chapters/02_Usage.md",
"chapters/Bibliography.md",
"chapters/Index.md",
"chapters/00_Introduction.md",
"chapters/AppendixB.md",
"chapters/04_Design.md",
"package/README.md",
"README.md",
"chapters/Appendix.md",
"chapters/AppendixA.md",
"conf/frontmatter-docx.md",
"templates/frontmatter-docx.md",
"chapters/02_Features.md",
"chapters/Preface.md",
"chapters/Index.md",
"chapters/Glossary.md",
"lib/img/unit-circle-with-tau.png",
"lib/img/unit-circle-with-pi.png.png",
@ -309,7 +315,6 @@
"build/basic-book-builder.md",
"LICENSE.md",
"pm/Book Action Items.md",
"chapters/Unitfication.md",
"chapters/03_Cylindrical_Spacetime.md"
"chapters/Unitfication.md"
]
}

View File

@ -1,155 +1,7 @@
# Creative Commons Attribution-NoDerivatives 4.0 International
MIT License
Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
**Using Creative Commons Public Licenses**
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors).
* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensors permission is not necessary for any reasonfor example, because of any applicable exception or limitation to copyrightthen that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees).
## Creative Commons Attribution-NoDerivatives 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
### Section 1 Definitions.
a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
b. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
c. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
d. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
e. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
f. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
g. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License.
h. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
i. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
j. __You__ means the individual or entity exercising the Licensed Rights under this Public License. __Your__ has a corresponding meaning.
### Section 2 Scope.
a. ___License grant.___
1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
A. reproduce and Share the Licensed Material, in whole or in part; and
B. produce and reproduce, but not Share, Adapted Material.
2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
3. __Term.__ The term of this Public License is specified in Section 6(a).
4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
5. __Downstream recipients.__
A. __Offer from the Licensor Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
b. ___Other rights.___
1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this Public License.
3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
### Section 3 License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
a. ___Attribution.___
1. If You Share the Licensed Material, You must:
A. retain the following if it is supplied by the Licensor with the Licensed Material:
i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of warranties;
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material.
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
### Section 4 Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database, provided You do not Share Adapted Material;
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
### Section 5 Disclaimer of Warranties and Limitation of Liability.
a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__
b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
### Section 6 Term and Termination.
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
### Section 7 Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
### Section 8 Interpretation.
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
> Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
>
> Creative Commons may be contacted at creativecommons.org
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -4,9 +4,9 @@
| --- | --- |
| **Author** | John Haverlack |
| **Copyright** | 2026 John Haverlack |
| **License** | CC BY-ND 4.0 |
| **Version** | 1.1.0 |
| **Date** | 2026-02-05 |
| **License** | MIT |
| **Version** | v1.2.4 |
| **Date** | 2026-02-12 |
This is a basic book (article) builder template based on a Pandoc build process in conjunction with a number of other tools to generate PDF, DOCX, ODT, HTML, LaTeX, Markdown, and Epub book formats all from a single set of Markdown source content in an Obsidian vault.
@ -66,7 +66,7 @@ cd basic-book-builder
### Setup Build Environment
> NOTE: For Debian based systems.
> NOTE: b3 has only been tested on Debian based systems.
```
scripts/setup-linux-deb.sh
@ -99,3 +99,17 @@ cd <PATH_TO_PROJECT>
4. Build your book
# Roadmap
## Documentation
- [ ] Zotero Integration
## Bugs
- [ ] TBD
## Features
- [ ] Windows Build Environment Support
- [ ] Build Workflow Scripts
- [ ] DocX Formatting
- [ ] ODT Formatting

Binary file not shown.

View File

@ -51,7 +51,7 @@
<!-- Title Page -->
<h1 class="titlepage" style="margin-top:3em; font-size:2.4em; text-align:center;">Basic Book Builder</h1>
<h2 style="text-align:center; font-weight:normal;">A Pandoc build process for books, docs and articles</h2>
<h2 style="text-align:center; font-weight:normal;">A Pandoc build process for books, docs and articles.</h2>
<div style="text-align:center; margin:2em 0;">
<img src="lib/img/UAF-ACEP.png" alt="Cover illustration" style="max-width:350px;">
@ -64,12 +64,12 @@
<div style="text-align:left; margin-top:5em;">
<h2>Basic Book Builder</h2>
<i>A Pandoc build process for books, docs and articles</i>
<i>A Pandoc build process for books, docs and articles.</i>
<table style="margin-top:2em; width:50%; border-collapse:collapse;">
<tbody>
<tr><td style="font-weight:bold;">Author</td><td>John Haverlack</td></tr>
<tr><td style="font-weight:bold;">Version</td><td>1.1.0</td></tr>
<tr><td style="font-weight:bold;">Version</td><td>1.2.3</td></tr>
<tr><td style="font-weight:bold;">Date</td><td>2026-02-05</td></tr>
<tr><td style="font-weight:bold;">Affiliation</td><td>Alaska Center for Energy and Power</td></tr>
<tr><td style="font-weight:bold;">Institution</td><td>University of Alaska Fairbanks</td></tr>
@ -130,31 +130,25 @@ window.MathJax = {
<nav id="TOC" role="doc-toc">
<h2 id="toc-title">Contents</h2>
<ul>
<li><a href="#introduction" id="toc-introduction">Introduction</a></li>
<li><a href="#introduction" id="toc-introduction">Introduction</a>
<ul>
<li><a href="#workflow" id="toc-workflow">Workflow</a></li>
</ul></li>
<li><a href="#getting-started" id="toc-getting-started">Getting
Started</a>
<ul>
<li><a href="#cloning-the-basic-book-builder"
id="toc-cloning-the-basic-book-builder">Cloning the Basic Book
<li><a href="#clone-the-basic-book-builder"
id="toc-clone-the-basic-book-builder">Clone the Basic Book
Builder</a></li>
<li><a href="#setting-up-build-environment"
id="toc-setting-up-build-environment">Setting Up Build
Environment</a></li>
id="toc-setting-up-build-environment">Setting Up Build Environment</a>
<ul>
<li><a href="#non-deb-systems" id="toc-non-deb-systems">Non deb
systems</a></li>
</ul></li>
<li><a href="#testing" id="toc-testing">Testing</a></li>
<li><a href="#creating-a-new-project"
id="toc-creating-a-new-project">Creating a New Project</a>
<ul>
<li><a href="#zotero-configuration-optional"
id="toc-zotero-configuration-optional">Zotero Configuration
(Optional)</a></li>
</ul></li>
</ul></li>
<li><a href="#usage" id="toc-usage">Usage</a>
<ul>
<li><a href="#creating-a-project" id="toc-creating-a-project">Creating a
Project</a></li>
<li><a href="#editing-content" id="toc-editing-content">Editing
Content</a></li>
id="toc-creating-a-new-project">Creating a New Project</a></li>
<li><a href="#building" id="toc-building">Building</a>
<ul>
<li><a href="#pdf" id="toc-pdf">PDF</a></li>
@ -175,6 +169,8 @@ Page</a></li>
Illustration</a></li>
<li><a href="#dedication" id="toc-dedication">Dedication</a></li>
</ul></li>
<li><a href="#table-of-contents" id="toc-table-of-contents">Table of
Contents</a></li>
<li><a href="#chapters" id="toc-chapters">Chapters</a></li>
<li><a href="#appendixes" id="toc-appendixes">Appendixes</a></li>
<li><a href="#glossary" id="toc-glossary">Glossary</a></li>
@ -190,7 +186,8 @@ Integration</a></li>
<li><a href="#obsidian-citations" id="toc-obsidian-citations">Obsidian
Citations</a></li>
</ul></li>
<li><a href="#mathjax-equations" id="toc-mathjax-equations">Mathjax
<li><a href="#images" id="toc-images">Images</a></li>
<li><a href="#latex-equations" id="toc-latex-equations"><em>LaTeX</em>
Equations</a>
<ul>
<li><a href="#left-justified-inline" id="toc-left-justified-inline">Left
@ -202,19 +199,26 @@ Markdown</a>
<ul>
<li><a href="#call-outs" id="toc-call-outs">Call-outs</a></li>
</ul></li>
</ul></li>
<li><a href="#appendix-a-build-environment-notes"
id="toc-appendix-a-build-environment-notes">Appendix A: Build
Environment Notes</a>
<li><a href="#advanced" id="toc-advanced">Advanced</a>
<ul>
<li><a href="#installing-pre-requisites"
id="toc-installing-pre-requisites">Installing Pre-Requisites</a>
<ul>
<li><a href="#required" id="toc-required">Required</a></li>
<li><a href="#optional" id="toc-optional">Optional</a></li>
<li><a href="#changing-fonts" id="toc-changing-fonts">Changing
Fonts</a></li>
<li><a href="#adding-filters" id="toc-adding-filters">Adding
Filters</a></li>
</ul></li>
<li><a href="#editing-the-configuration"
id="toc-editing-the-configuration">Editing the Configuration</a></li>
</ul></li>
<li><a href="#design" id="toc-design">Design</a>
<ul>
<li><a href="#directory-structure"
id="toc-directory-structure">Directory Structure</a></li>
<li><a href="#configuration-files"
id="toc-configuration-files">Configuration Files</a>
<ul>
<li><a href="#pandoc-main-config" id="toc-pandoc-main-config">Pandoc
Main Config</a></li>
</ul></li>
<li><a href="#build-workflow" id="toc-build-workflow">Build
Workflow</a></li>
</ul></li>
<li><a href="#glossary-1" id="toc-glossary-1">Glossary</a></li>
<li><a href="#bibliography-1"
@ -222,13 +226,31 @@ id="toc-bibliography-1">Bibliography</a></li>
</ul>
</nav>
<h1 id="introduction">Introduction</h1>
<p>This is a basic book (or article / document) builder template based
on a Pandoc<span class="citation" data-cites="PandocIndex">(<a
<p>This is a <strong>basic book builder</strong> template is based on a
Pandoc<span class="citation" data-cites="PandocIndex">(<a
href="#ref-PandocIndex" role="doc-biblioref"><em>Pandoc - Index</em>,
n.d.</a>)</span> build process in conjunction with a number of other
tools to generate PDF, HTML, LaTex, Markdown, ODT, DOCX, and Epub book
output formats from a single set Markdown source content , which can
optionally be edited as an Obsidian vault.</p>
n.d.</a>)</span> + Makefile build process in conjunction Obsidian to
edit content and Zotero to manage citation, to generate multiple format
of the document including:</p>
<ul>
<li>PDF</li>
<li>HTML</li>
<li><em>LaTeX</em></li>
<li>Markdown</li>
<li>ODT</li>
<li>DOCX</li>
<li>Epub</li>
</ul>
<h3 id="workflow">Workflow</h3>
<ol type="1">
<li>Create a new project</li>
<li>Initialize <code>metadata.yaml</code> with title, copyright, author,
etc.</li>
<li>Customize <code>input-files:</code> in <code>pandoc.yaml</code></li>
<li>Edit <code>chapters</code> Markdown “conent” files using
Obidian</li>
<li>Build your document</li>
</ol>
<p>This <strong>basic book builder</strong><span class="citation"
data-cites="JehaverlackBasicbookbuilderPandoca">(<a
href="#ref-JehaverlackBasicbookbuilderPandoca"
@ -238,8 +260,7 @@ class="citation" data-cites="JohnHaverlackACEP">(<a
href="#ref-JohnHaverlackACEP" role="doc-biblioref"><em>John
<span>Haverlack</span> <span>ACEP</span></em>, n.d.</a>)</span></p>
<h1 id="getting-started">Getting Started</h1>
<h2 id="cloning-the-basic-book-builder">Cloning the Basic Book
Builder</h2>
<h2 id="clone-the-basic-book-builder">Clone the Basic Book Builder</h2>
<div class="callout-cli">
<p><strong>Clone the repository</strong></p>
<pre><code>git clone https://github.com/jehaverlack/basic-book-builder.git</code></pre>
@ -251,56 +272,56 @@ Builder</h2>
<h2 id="setting-up-build-environment">Setting Up Build Environment</h2>
<div class="callout-caution">
<p><strong>~Debian Linux</strong></p>
<p> This script only support Debian based Linux system (Debian, Ubunutu,
Zorin, etc) This script has not been widely tested across platforms</p>
<p> This script only support Debian based Linux system (e.g Debian,
Ubuntu, Zorin). And this script will install several ATP packages on
your system.</p>
</div>
<div class="callout-danger">
<p><strong>Warning</strong></p>
<p> This script <strong>has not</strong> been widely tested across many
platforms</p>
</div>
<p>To initialize your systems build environment run:</p>
<div class="callout-cli">
<p><strong>Setup Build Environment</strong></p>
<pre><code>./scripts/setup-linux-deb.sh</code></pre>
</div>
<h3 id="non-deb-systems">Non deb systems</h3>
<p>For more information on setting up the build environment for your
system see Appendix A.</p>
system see: <strong>TBD: NEEDS DOCUMENTED</strong>.</p>
<h2 id="testing">Testing</h2>
<p>If you can build all format for the <strong>Basic Book Build</strong>
then you have a working build environment.</p>
<p>Once you have set up your build environment, you test by building the
<strong>basic book builder</strong>.</p>
<div class="callout-cli">
<p><strong>Testing Build Environment</strong></p>
<pre><code>make all</code></pre>
</div>
<h2 id="creating-a-new-project">Creating a New Project</h2>
<h3 id="zotero-configuration-optional">Zotero Configuration
(Optional)</h3>
<h1 id="usage">Usage</h1>
<h2 id="creating-a-project">Creating a Project</h2>
<p>To create a new Project based on the Basic Book Builder template:</p>
<ol type="1">
<li>Run the new-project.sh script.</li>
</ol>
<pre><code>./scripts/new-project.sh &lt;PATH_TO_PROJECT&gt;</code></pre>
<ul>
<li><PATH_TO_PROJECT> should be outside of the
<strong>basic-book-builder</strong> directory</li>
</ul>
<pre><code>cd &lt;PATH_TO_PROJECT&gt;</code></pre>
<p>Update:</p>
<ol type="1">
<li><code>metadata.yaml</code></li>
<li><code>templates/pandoc.yaml</code></li>
</ol>
<div class="callout-info">
<p><strong>Suggestion</strong></p>
<p> Create a git repository to version control your new
<PATH_TO_PROJECT> content.</p>
<div class="callout-proposed">
<p><strong>Tip</strong></p>
<p> You do not want to edit your new project document in the
<code>basic-book-builder</code> directory. You will want to create a
<strong>new project</strong> for your document based on this
template.</p>
</div>
<div class="callout-cli">
<p><strong>Create a new project</strong></p>
<pre><code>./scripts/new-project.sh &lt;NEW_PROJECT_DIR&gt;</code></pre>
</div>
<pre><code>cd &lt;NEW_PROJECT_DIR&gt;</code></pre>
<p>Update your project configuration:</p>
<ol type="1">
<li>Edit: <code>metadata.yaml</code>, for title, author, etc</li>
<li>Edit: <code>templates/pandoc.yaml</code></li>
<li>Open: <code>&lt;NEW_PROJECT_DIR&gt;</code> with Obsidian, and edit
<code>chapters</code> documents.</li>
<li>Build: <code>make pdf</code></li>
</ol>
<div class="callout-warning">
<p><strong>Warning</strong></p>
<p> <code>&lt;NEW_PROJECT_DIR&gt;</code> should be outside of the
<strong>basic-book-builder</strong> directory</p>
</div>
<h2 id="editing-content">Editing Content</h2>
<p>Edit your source content Markdown under the <code>chapters</code>
directory.</p>
<p><strong>Optional</strong></p>
<ul>
<li>Open your <code>&lt;PATH_TO_PROJECT&gt;</code> directory as an
Obsidian vault.</li>
<li>Edit your Markdown with Obsidian</li>
</ul>
<h2 id="building">Building</h2>
<h3 id="pdf">PDF</h3>
<pre><code>make pdf</code></pre>
@ -326,31 +347,30 @@ work.</p>
<p>To build all supported formats</p>
<pre><code>make all</code></pre>
<h1 id="features">Features</h1>
<p>The basic book builder template integrates feature from many systems
including Pandoc, MathJax, Obsidian, and Zotero. The following list
covers these features from a functional point of view.</p>
<h2 id="metadata">Metadata</h2>
<p>Metadata for the project is managed in <code>metadata.yaml</code>.
Edit this file to make global changes to variables for your document.
Changes here will propagate to all format builds.</p>
Edit this file to make <strong>global changes</strong> to variables for
your document. Definitions in <code>metadata.yaml</code> will propagate
to all format builds.</p>
<h2 id="front-matter">Front-matter</h2>
<p>Front matter content is manged in:</p>
<p>Front-Matter documents control the Title Page, Metadata and other
pages before the Title of Contents. Front matter content is manged in
these files:</p>
<ul>
<li><code>templates/frontmatter.tex</code></li>
<li><code>templates/frontmatter.html</code></li>
<li><code>templates/frontmatter-md.html</code></li>
</ul>
<div class="callout-caution">
<p><strong>Tip</strong></p>
<p> Unfortunately when you edit one, you need to edit the respective
<p>Unfortunately when you edit one, you need to edit the respective
changes to the other front-matter formats. ### Title Page</p>
</div>
<p>Edit the <strong>Front-matter</strong> files to modify the formatting
of the Title Page.</p>
<div class="callout-caution">
<p><strong>Tip</strong></p>
<p> Youll need to modify the HTML / LaTex.</p>
</div>
of the Title Page. Youll need to modify the HTML / LaTex code.</p>
<h3 id="meta-data-page">Meta Data Page</h3>
<p>Edit the <strong>Front-matter</strong> files to modify the 2nd page
Metadata format.</p>
Metadata format and fields to display.</p>
<h3 id="cover-illustration">Cover Illustration</h3>
<p>Edit the <strong>Front-matter</strong> files to optionally un-comment
the Cover Art Acknowledgement.</p>
@ -361,13 +381,20 @@ the Cover Art Acknowledgement.</p>
<p>Edit the <strong>Front-matter</strong> files to modify un-comment the
Book Dedication.</p>
<ul>
<li>This is disabled by default ## Table of Contents</li>
<li>This is disabled by default</li>
</ul>
<h2 id="table-of-contents">Table of Contents</h2>
<p>The table of contents is auto generated. But can be disabled in
<code>template\pandoc.yaml</code> by setting: -
<code>toc: false</code></p>
<h2 id="chapters">Chapters</h2>
<p>Chapter Markdown source files are located in the
<code>chapters</code> directory. Edit the
<code>template\pandoc.yaml</code> file to control which chapter markdown
files are in what order.</p>
<code>chapters</code> directory. To edit which chapter files are
included the document:</p>
<ul>
<li>Edit the <code>input-file:</code> section of the
<code>template\pandoc.yaml</code></li>
</ul>
<h2 id="appendixes">Appendixes</h2>
<p>TBD</p>
<h2 id="glossary">Glossary</h2>
@ -382,14 +409,38 @@ files are in what order.</p>
<p>TBD</p>
<h3 id="obsidian-citations">Obsidian Citations</h3>
<p>TBD</p>
<h2 id="mathjax-equations">Mathjax Equations</h2>
<p>TBD</p>
<h2 id="images">Images</h2>
<p>You can use basic Markdown Images</p>
<pre><code>![ACEP](lib/img/ACEPLogo.png)</code></pre>
<figure>
<img src="lib/img/ACEPLogo.png" alt="ACEP" />
<figcaption aria-hidden="true">ACEP</figcaption>
</figure>
<h2 id="latex-equations"><em>LaTeX</em> Equations</h2>
<p>You can embed LaTeX equations directly in your Markdown pages.</p>
<h3 id="left-justified-inline">Left Justified / Inline</h3>
<p>TBD</p>
<p>To left justify <em>LaTex</em> surround the code inside single
<code>$</code>:</p>
<div class="callout-code">
<p><strong>Left Justified Equation</strong></p>
<pre><code>$x = \frac{1}{2}$</code></pre>
</div>
<p><span class="math inline">$x = \frac{1}{2}$</span></p>
<div class="callout-code">
<p><strong>Inline</strong></p>
<pre><code>Or inline, $x = \frac{1}{2}$, in a sentence.</code></pre>
</div>
<p>Or inline, <span class="math inline">$x = \frac{1}{2}$</span>, in a
sentence.</p>
<h3 id="centered">Centered</h3>
<p>TBD</p>
<p>To center justify <em>LaTex</em> surround the code inside double
<code>$$</code>:</p>
<div class="callout-code">
<p><strong>Centered Equation</strong></p>
<pre><code>$$x = \frac{1}{2}$$</code></pre>
</div>
<p><span class="math display">$$x = \frac{1}{2}$$</span></p>
<h2 id="custom-markdown">Custom Markdown</h2>
<p>TBD</p>
<h3 id="call-outs">Call-outs</h3>
<p>A few call-out box styles have been custom added to easily highlight
certain types of content.</p>
@ -417,17 +468,6 @@ A blue box</code></pre>
<hr />
<div class="callout-code">
<p><strong>Markdown Example</strong></p>
<pre><code>[!info] Info Box
Same as a blue box</code></pre>
</div>
<p>Will render:</p>
<div class="callout-info">
<p><strong>Info Box</strong></p>
<p> Same as a blue box</p>
</div>
<hr />
<div class="callout-code">
<p><strong>Markdown Example</strong></p>
<pre><code>[!speculative] Purple Call-out Title
A purple box</code></pre>
</div>
@ -493,7 +533,8 @@ fi</code></pre>
A command line example
&#39;&#39;&#39;
$ ls
build chapters conf filters lib LICENSE.md Makefile metadata.yaml &gt;README.md scripts templates
build chapters conf filters lib LICENSE.md Makefile
metadata.yaml &gt;README.md scripts templates
&#39;&#39;&#39;</code></pre>
</div>
<p>Will render:</p>
@ -501,118 +542,126 @@ build chapters conf filters lib LICENSE.md Makefile metadata.yaml &gt;RE
<p><strong>Command line</strong></p>
<p> A command line example</p>
<pre><code>$ ls
build chapters conf filters lib LICENSE.md Makefile metadata.yaml README.md scripts templates</code></pre>
build chapters conf filters lib LICENSE.md Makefile
metadata.yaml README.md scripts templates</code></pre>
</div>
<p>Appendix A</p>
<h1 id="appendix-a-build-environment-notes">Appendix A: Build
Environment Notes</h1>
<h2 id="installing-pre-requisites">Installing Pre-Requisites</h2>
<h2 id="advanced">Advanced</h2>
<h3 id="changing-fonts">Changing Fonts</h3>
<p>It is possible to change fonts by editing
<code>templates/pandoc.yaml</code>, and
<code>templates\styles.css</code>, but you will have to make sure you
have the proper fonts installed on your system first.</p>
<h3 id="adding-filters">Adding Filters</h3>
<p>Custom filters can be created. This is complicated and typically
needs done in 3 places for:</p>
<ul>
<li>obsidian</li>
<li><em>LaTeX</em></li>
<li>HTML</li>
</ul>
<h1 id="design">Design</h1>
<h2 id="directory-structure">Directory Structure</h2>
<p>The <strong>basic-book-builder</strong> directory tree.</p>
<pre><code>basic-book-builder
├── build
│   ├── docx
│   ├── html
│   │   ├── conf
│   │   └── lib
│   │   ├── diag
│   │   ├── img
│   │   └── mathjax
│   ├── latex
│   ├── odt
│   └── pdf
├── chapters
├── conf
├── filters
├── lib
│   ├── citations
│   ├── diag
│   ├── img
│   └── mathjax
├── scripts
│   └── tmp
└── templates</code></pre>
<h2 id="configuration-files">Configuration Files</h2>
<p>The <strong>basic-book-builder</strong> configuration files, scripts,
and build files.</p>
<pre><code>../basic-book-builder
├── chapters
├── conf
├── filters
│   ├── callouts-html.lua
│   └── callouts.lua
├── lib
│   ├── diag
│   ├── img
│   └── zotero.bib
├── Makefile
├── metadata.yaml
├── scripts
│   ├── new-project.sh
│   ├── replace-metadata.sh
│   ├── setup-linux-deb.sh
│   └── tmp
└── templates
├── docx.yaml
├── epub_template.html
├── epub.yaml
├── frontmatter-docx.md
├── frontmatter.html
├── frontmatter-md.html
├── frontmatter.tex
├── header.tex
├── html.yaml
├── latex.yaml
├── markdown.yaml
├── odt.yaml
├── pandoc.yaml
├── pdf.yaml
├── style.css
└── style_epub.css
</code></pre>
<div class="callout-caution">
<p><strong>Not Cross-platform Tested</strong></p>
<p> For Debian / ZorinOS and likely Ubuntu based systems.</p>
<p><strong>About conf</strong></p>
<p> NEVER: edit file directly in <code>conf</code>. They will be
overwritten by the build process. ### Metadata</p>
</div>
<h3 id="required">Required</h3>
<h4 id="pandoc">Pandoc</h4>
<ul>
<li>https://pandoc.org/</li>
<li><a
href="https://github.com/jgm/pandoc/releases/tag/3.8.2.1">Download</a></li>
</ul>
<blockquote>
<p><code>sudo apt install https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-1-amd64.deb</code></p>
</blockquote>
<h4 id="code-editor">Code Editor</h4>
<div class="callout-established">
<p><strong>Code Editor</strong></p>
<p> <a href="https://vscodium.com/">VSCodium</a> is recommend for
privacy (telemetry/tracking) reasons - https://vscodium.com/</p>
</div>
<p>But any text editor will work. #### make</p>
<pre><code>sudo apt install make</code></pre>
<h4 id="jq-and-yq">jq and yq</h4>
<pre><code>sudo apt install jq yq</code></pre>
<h4 id="texlive">texlive</h4>
<blockquote>
<p><code>sudo apt install texlive texlive-xetex texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra</code></p>
</blockquote>
<h4 id="mathjax">MathJax</h4>
<ul>
<li>https://www.mathjax.org/</li>
</ul>
<pre><code>wget https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz
tar xzf mathjax-3.2.2.tgz
mv package/es5/* lib/mathjax
rm -rf package mathjax-3.2.2.tgz</code></pre>
<div class="callout-caution">
<p><strong>TODO</strong></p>
<p> This need to be rolled into a setup script.</p>
</div>
<h3 id="optional">Optional</h3>
<p>The following are not strictly requires to use this book builder
template.</p>
<h4 id="obsidian">Obsidian</h4>
<div class="callout-established">
<p><strong>Highly Recommended</strong></p>
<p> Editing book chapter content in Obsidian is a very productive means
for editing Markdown source content.</p>
</div>
<ul>
<li>https://obsidian.md/</li>
<li><a
href="https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb">Deb
Package</a></li>
</ul>
<pre><code>sudo apt install https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb</code></pre>
<h4 id="zotero">Zotero</h4>
<div class="callout-established">
<p><strong>Highly Recommended</strong></p>
<p> If you need to managed citations and references, Zotero integration
is highly recommended.</p>
</div>
<ul>
<li>https://www.zotero.org/</li>
</ul>
<pre><code>sudo cp ./scripts/deps/zotero.list /etc/apt/sources.list.d/</code></pre>
<pre><code>sudo apt update</code></pre>
<pre><code>sudo apt install zotero</code></pre>
<h5 id="better-bibtex-for-zotero">Better BibTex for Zotero</h5>
<p>Install the Better BibTex Plugin for Zotero - Zotero &gt; Tool &gt;
Plugins</p>
<h5 id="export-citations.bib">Export citations.bib</h5>
<ul>
<li>Zotero &gt; File &gt; Export Library &gt; Format: Better BibTeX</li>
<li><label><input type="checkbox" />Keep Updated</label></li>
<li><label><input type="checkbox" />Save to:
~/Documents/Lib/zotero.bib</label></li>
<li><label><input type="checkbox" />Symlink your
~/Documents/Lib/Citations.bib to
basic-book-builder/lib/zotero.bib</label></li>
</ul>
<h5 id="zotero-connector-browser-plugin">Zotero Connector Browser
Plugin</h5>
<ul>
<li>https://chromewebstore.google.com/detail/zotero-connector/ekhagklcjbdpajgpjgmbionohlpdbjgc</li>
</ul>
<p>Provides you the ability to auto add Web resources to your Zotero
citation database.</p>
<h4 id="lmodern">lmodern</h4>
<pre><code>sudo apt install lmodern</code></pre>
<h4 id="epubcheck">epubcheck</h4>
<pre><code>sudo apt install epubcheck</code></pre>
<h4 id="foliate">foliate</h4>
<p>An EPub Reader</p>
<ul>
<li>https://johnfactotum.github.io/foliate/</li>
</ul>
<pre><code>sudo apt install https://github.com/johnfactotum/foliate/releases/download/2.6.4/com.github.johnfactotum.foliate_2.6.4_all.deb</code></pre>
<h4 id="calibre">calibre</h4>
<p>An EPub Reader</p>
<ul>
<li>https://calibre-ebook.com</li>
</ul>
<pre><code>sudo apt install calibre</code></pre>
<h2 id="editing-the-configuration">Editing the Configuration</h2>
<p>Update the <code>metadata.yaml</code> file to globally configure your
document title and other metadata. Edit this file to control your
document title, author, etc.</p>
<h3 id="pandoc-main-config">Pandoc Main Config</h3>
<p>Update the <code>input-files:</code> section of
<code>templates/pandoc.yaml</code> to control what chapter source files
are in which order in your document.</p>
<pre><code># pandoc.yaml
input-files:
# - chapters/Preface.md
- chapters/00_Introduction.md
- chapters/01_Getting_Started.md
- chapters/02_Usage.md
- chapters/03_Features.md
- chapters/Appendix.md
- chapters/AppendixA.md
# - chapters/AppendixB.md
- chapters/Glossary.md
- chapters/Index.md
- chapters/Bibliography.md</code></pre>
<h2 id="build-workflow">Build Workflow</h2>
<p>For a PDF Build:</p>
<pre><code>make pdf</code></pre>
<p>will build dependencies on these file:</p>
<ol type="1">
<li>Makefile</li>
<li>conf/pandoc.yaml</li>
<li>conf/pdf.yaml</li>
<li>lib/zotero.bib</li>
<li>chapters/*.md</li>
</ol>
<p>NOTE: the <code>Makefile</code> will copy
<code>templates/*.yaml</code> to <code>conf/*.yaml</code>.
<strong>Never</strong> edit <code>conf/*</code>directly.</p>
<h1 class="unnumbered" id="glossary-1">Glossary</h1>
<table>
<colgroup>

View File

@ -22,133 +22,107 @@
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{introduction}{{1}{1}{Introduction}{chapter.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.0.1}Workflow}{1}{subsection.1.0.1}\protected@file@percent }
\newlabel{workflow}{{1.0.1}{1}{Workflow}{subsection.1.0.1}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Getting Started}{2}{chapter.2}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{getting-started}{{2}{2}{Getting Started}{chapter.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Cloning the Basic Book Builder}{2}{section.2.1}\protected@file@percent }
\newlabel{cloning-the-basic-book-builder}{{2.1}{2}{Cloning the Basic Book Builder}{section.2.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Clone the Basic Book Builder}{2}{section.2.1}\protected@file@percent }
\newlabel{clone-the-basic-book-builder}{{2.1}{2}{Clone the Basic Book Builder}{section.2.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Setting Up Build Environment}{2}{section.2.2}\protected@file@percent }
\newlabel{setting-up-build-environment}{{2.2}{2}{Setting Up Build Environment}{section.2.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Testing}{2}{section.2.3}\protected@file@percent }
\newlabel{testing}{{2.3}{2}{Testing}{section.2.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Non deb systems}{2}{subsection.2.2.1}\protected@file@percent }
\newlabel{non-deb-systems}{{2.2.1}{2}{Non deb systems}{subsection.2.2.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Testing}{3}{section.2.3}\protected@file@percent }
\newlabel{testing}{{2.3}{3}{Testing}{section.2.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Creating a New Project}{3}{section.2.4}\protected@file@percent }
\newlabel{creating-a-new-project}{{2.4}{3}{Creating a New Project}{section.2.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}Zotero Configuration (Optional)}{3}{subsection.2.4.1}\protected@file@percent }
\newlabel{zotero-configuration-optional}{{2.4.1}{3}{Zotero Configuration (Optional)}{subsection.2.4.1}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Usage}{4}{chapter.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.5}Building}{3}{section.2.5}\protected@file@percent }
\newlabel{building}{{2.5}{3}{Building}{section.2.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.1}PDF}{3}{subsection.2.5.1}\protected@file@percent }
\newlabel{pdf}{{2.5.1}{3}{PDF}{subsection.2.5.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.2}HTML}{4}{subsection.2.5.2}\protected@file@percent }
\newlabel{html}{{2.5.2}{4}{HTML}{subsection.2.5.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.3}DocX}{4}{subsection.2.5.3}\protected@file@percent }
\newlabel{docx}{{2.5.3}{4}{DocX}{subsection.2.5.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.4}ODT}{4}{subsection.2.5.4}\protected@file@percent }
\newlabel{odt}{{2.5.4}{4}{ODT}{subsection.2.5.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.5}Make All}{4}{subsection.2.5.5}\protected@file@percent }
\newlabel{make-all}{{2.5.5}{4}{Make All}{subsection.2.5.5}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Features}{5}{chapter.3}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{usage}{{3}{4}{Usage}{chapter.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Creating a Project}{4}{section.3.1}\protected@file@percent }
\newlabel{creating-a-project}{{3.1}{4}{Creating a Project}{section.3.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Editing Content}{4}{section.3.2}\protected@file@percent }
\newlabel{editing-content}{{3.2}{4}{Editing Content}{section.3.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Building}{4}{section.3.3}\protected@file@percent }
\newlabel{building}{{3.3}{4}{Building}{section.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}PDF}{4}{subsection.3.3.1}\protected@file@percent }
\newlabel{pdf}{{3.3.1}{4}{PDF}{subsection.3.3.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}HTML}{5}{subsection.3.3.2}\protected@file@percent }
\newlabel{html}{{3.3.2}{5}{HTML}{subsection.3.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}DocX}{5}{subsection.3.3.3}\protected@file@percent }
\newlabel{docx}{{3.3.3}{5}{DocX}{subsection.3.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.4}ODT}{5}{subsection.3.3.4}\protected@file@percent }
\newlabel{odt}{{3.3.4}{5}{ODT}{subsection.3.3.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.5}Make All}{5}{subsection.3.3.5}\protected@file@percent }
\newlabel{make-all}{{3.3.5}{5}{Make All}{subsection.3.3.5}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Features}{6}{chapter.4}\protected@file@percent }
\newlabel{features}{{3}{5}{Features}{chapter.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Metadata}{5}{section.3.1}\protected@file@percent }
\newlabel{metadata}{{3.1}{5}{Metadata}{section.3.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Front-matter}{5}{section.3.2}\protected@file@percent }
\newlabel{front-matter}{{3.2}{5}{Front-matter}{section.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Meta Data Page}{5}{subsection.3.2.1}\protected@file@percent }
\newlabel{meta-data-page}{{3.2.1}{5}{Meta Data Page}{subsection.3.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Cover Illustration}{5}{subsection.3.2.2}\protected@file@percent }
\newlabel{cover-illustration}{{3.2.2}{5}{Cover Illustration}{subsection.3.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Dedication}{5}{subsection.3.2.3}\protected@file@percent }
\newlabel{dedication}{{3.2.3}{5}{Dedication}{subsection.3.2.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Table of Contents}{6}{section.3.3}\protected@file@percent }
\newlabel{table-of-contents}{{3.3}{6}{Table of Contents}{section.3.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.4}Chapters}{6}{section.3.4}\protected@file@percent }
\newlabel{chapters}{{3.4}{6}{Chapters}{section.3.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.5}Appendixes}{6}{section.3.5}\protected@file@percent }
\newlabel{appendixes}{{3.5}{6}{Appendixes}{section.3.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.6}Glossary}{6}{section.3.6}\protected@file@percent }
\newlabel{glossary}{{3.6}{6}{Glossary}{section.3.6}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.7}Index}{6}{section.3.7}\protected@file@percent }
\newlabel{index}{{3.7}{6}{Index}{section.3.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.7.1}Markdown Indexes}{6}{subsection.3.7.1}\protected@file@percent }
\newlabel{markdown-indexes}{{3.7.1}{6}{Markdown Indexes}{subsection.3.7.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.8}Bibliography}{6}{section.3.8}\protected@file@percent }
\newlabel{bibliography}{{3.8}{6}{Bibliography}{section.3.8}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.8.1}Zotero Integration}{6}{subsection.3.8.1}\protected@file@percent }
\newlabel{zotero-integration}{{3.8.1}{6}{Zotero Integration}{subsection.3.8.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.8.2}Obsidian Citations}{6}{subsection.3.8.2}\protected@file@percent }
\newlabel{obsidian-citations}{{3.8.2}{6}{Obsidian Citations}{subsection.3.8.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.9}Images}{7}{section.3.9}\protected@file@percent }
\newlabel{images}{{3.9}{7}{Images}{section.3.9}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces ACEP}}{7}{figure.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3.10}\emph {LaTeX} Equations}{7}{section.3.10}\protected@file@percent }
\newlabel{latex-equations}{{3.10}{7}{\texorpdfstring {\emph {LaTeX} Equations}{LaTeX Equations}}{section.3.10}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.10.1}Left Justified / Inline}{7}{subsection.3.10.1}\protected@file@percent }
\newlabel{left-justified-inline}{{3.10.1}{7}{Left Justified / Inline}{subsection.3.10.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.10.2}Centered}{7}{subsection.3.10.2}\protected@file@percent }
\newlabel{centered}{{3.10.2}{7}{Centered}{subsection.3.10.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.11}Custom Markdown}{8}{section.3.11}\protected@file@percent }
\newlabel{custom-markdown}{{3.11}{8}{Custom Markdown}{section.3.11}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.11.1}Call-outs}{8}{subsection.3.11.1}\protected@file@percent }
\newlabel{call-outs}{{3.11.1}{8}{Call-outs}{subsection.3.11.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.12}Advanced}{11}{section.3.12}\protected@file@percent }
\newlabel{advanced}{{3.12}{11}{Advanced}{section.3.12}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.12.1}Changing Fonts}{11}{subsection.3.12.1}\protected@file@percent }
\newlabel{changing-fonts}{{3.12.1}{11}{Changing Fonts}{subsection.3.12.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.12.2}Adding Filters}{11}{subsection.3.12.2}\protected@file@percent }
\newlabel{adding-filters}{{3.12.2}{11}{Adding Filters}{subsection.3.12.2}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Design}{12}{chapter.4}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{features}{{4}{6}{Features}{chapter.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Metadata}{6}{section.4.1}\protected@file@percent }
\newlabel{metadata}{{4.1}{6}{Metadata}{section.4.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Front-matter}{6}{section.4.2}\protected@file@percent }
\newlabel{front-matter}{{4.2}{6}{Front-matter}{section.4.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Meta Data Page}{6}{subsection.4.2.1}\protected@file@percent }
\newlabel{meta-data-page}{{4.2.1}{6}{Meta Data Page}{subsection.4.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Cover Illustration}{6}{subsection.4.2.2}\protected@file@percent }
\newlabel{cover-illustration}{{4.2.2}{6}{Cover Illustration}{subsection.4.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}Dedication}{7}{subsection.4.2.3}\protected@file@percent }
\newlabel{dedication}{{4.2.3}{7}{Dedication}{subsection.4.2.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Chapters}{7}{section.4.3}\protected@file@percent }
\newlabel{chapters}{{4.3}{7}{Chapters}{section.4.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.4}Appendixes}{7}{section.4.4}\protected@file@percent }
\newlabel{appendixes}{{4.4}{7}{Appendixes}{section.4.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.5}Glossary}{7}{section.4.5}\protected@file@percent }
\newlabel{glossary}{{4.5}{7}{Glossary}{section.4.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.6}Index}{7}{section.4.6}\protected@file@percent }
\newlabel{index}{{4.6}{7}{Index}{section.4.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.6.1}Markdown Indexes}{7}{subsection.4.6.1}\protected@file@percent }
\newlabel{markdown-indexes}{{4.6.1}{7}{Markdown Indexes}{subsection.4.6.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.7}Bibliography}{7}{section.4.7}\protected@file@percent }
\newlabel{bibliography}{{4.7}{7}{Bibliography}{section.4.7}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.7.1}Zotero Integration}{7}{subsection.4.7.1}\protected@file@percent }
\newlabel{zotero-integration}{{4.7.1}{7}{Zotero Integration}{subsection.4.7.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.7.2}Obsidian Citations}{8}{subsection.4.7.2}\protected@file@percent }
\newlabel{obsidian-citations}{{4.7.2}{8}{Obsidian Citations}{subsection.4.7.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.8}Mathjax Equations}{8}{section.4.8}\protected@file@percent }
\newlabel{mathjax-equations}{{4.8}{8}{Mathjax Equations}{section.4.8}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.8.1}Left Justified / Inline}{8}{subsection.4.8.1}\protected@file@percent }
\newlabel{left-justified-inline}{{4.8.1}{8}{Left Justified / Inline}{subsection.4.8.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.8.2}Centered}{8}{subsection.4.8.2}\protected@file@percent }
\newlabel{centered}{{4.8.2}{8}{Centered}{subsection.4.8.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.9}Custom Markdown}{8}{section.4.9}\protected@file@percent }
\newlabel{custom-markdown}{{4.9}{8}{Custom Markdown}{section.4.9}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.9.1}Call-outs}{8}{subsection.4.9.1}\protected@file@percent }
\newlabel{call-outs}{{4.9.1}{8}{Call-outs}{subsection.4.9.1}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Appendix A: Build Environment Notes}{12}{appendix.A}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{appendix-a-build-environment-notes}{{A}{12}{Appendix A: Build Environment Notes}{appendix.A}{}}
\@writefile{toc}{\contentsline {section}{\numberline {A.1}Installing Pre-Requisites}{12}{section.A.1}\protected@file@percent }
\newlabel{installing-pre-requisites}{{A.1}{12}{Installing Pre-Requisites}{section.A.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {A.1.1}Required}{12}{subsection.A.1.1}\protected@file@percent }
\newlabel{required}{{A.1.1}{12}{Required}{subsection.A.1.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.1.1}Pandoc}{12}{subsubsection.A.1.1.1}\protected@file@percent }
\newlabel{pandoc}{{A.1.1.1}{12}{Pandoc}{subsubsection.A.1.1.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.1.2}Code Editor}{12}{subsubsection.A.1.1.2}\protected@file@percent }
\newlabel{code-editor}{{A.1.1.2}{12}{Code Editor}{subsubsection.A.1.1.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.1.3}jq and yq}{12}{subsubsection.A.1.1.3}\protected@file@percent }
\newlabel{jq-and-yq}{{A.1.1.3}{12}{jq and yq}{subsubsection.A.1.1.3}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.1.4}texlive}{12}{subsubsection.A.1.1.4}\protected@file@percent }
\newlabel{texlive}{{A.1.1.4}{12}{texlive}{subsubsection.A.1.1.4}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.1.5}MathJax}{13}{subsubsection.A.1.1.5}\protected@file@percent }
\newlabel{mathjax}{{A.1.1.5}{13}{MathJax}{subsubsection.A.1.1.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {A.1.2}Optional}{13}{subsection.A.1.2}\protected@file@percent }
\newlabel{optional}{{A.1.2}{13}{Optional}{subsection.A.1.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.2.1}Obsidian}{13}{subsubsection.A.1.2.1}\protected@file@percent }
\newlabel{obsidian}{{A.1.2.1}{13}{Obsidian}{subsubsection.A.1.2.1}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.2.2}Zotero}{13}{subsubsection.A.1.2.2}\protected@file@percent }
\newlabel{zotero}{{A.1.2.2}{13}{Zotero}{subsubsection.A.1.2.2}{}}
\@writefile{toc}{\contentsline {paragraph}{\numberline {A.1.2.2.1}Better BibTex for Zotero}{14}{paragraph.A.1.2.2.1}\protected@file@percent }
\newlabel{better-bibtex-for-zotero}{{A.1.2.2.1}{14}{Better BibTex for Zotero}{paragraph.A.1.2.2.1}{}}
\@writefile{toc}{\contentsline {paragraph}{\numberline {A.1.2.2.2}Export citations.bib}{14}{paragraph.A.1.2.2.2}\protected@file@percent }
\newlabel{export-citations.bib}{{A.1.2.2.2}{14}{Export citations.bib}{paragraph.A.1.2.2.2}{}}
\@writefile{toc}{\contentsline {paragraph}{\numberline {A.1.2.2.3}Zotero Connector Browser Plugin}{14}{paragraph.A.1.2.2.3}\protected@file@percent }
\newlabel{zotero-connector-browser-plugin}{{A.1.2.2.3}{14}{Zotero Connector Browser Plugin}{paragraph.A.1.2.2.3}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.2.3}lmodern}{14}{subsubsection.A.1.2.3}\protected@file@percent }
\newlabel{lmodern}{{A.1.2.3}{14}{lmodern}{subsubsection.A.1.2.3}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.2.4}epubcheck}{14}{subsubsection.A.1.2.4}\protected@file@percent }
\newlabel{epubcheck}{{A.1.2.4}{14}{epubcheck}{subsubsection.A.1.2.4}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.2.5}foliate}{14}{subsubsection.A.1.2.5}\protected@file@percent }
\newlabel{foliate}{{A.1.2.5}{14}{foliate}{subsubsection.A.1.2.5}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {A.1.2.6}calibre}{14}{subsubsection.A.1.2.6}\protected@file@percent }
\newlabel{calibre}{{A.1.2.6}{14}{calibre}{subsubsection.A.1.2.6}{}}
\@writefile{toc}{\contentsline {section}{\numberline {A.2}Editing the Configuration}{14}{section.A.2}\protected@file@percent }
\newlabel{editing-the-configuration}{{A.2}{14}{Editing the Configuration}{section.A.2}{}}
\newlabel{design}{{4}{12}{Design}{chapter.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Directory Structure}{12}{section.4.1}\protected@file@percent }
\newlabel{directory-structure}{{4.1}{12}{Directory Structure}{section.4.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Configuration Files}{12}{section.4.2}\protected@file@percent }
\newlabel{configuration-files}{{4.2}{12}{Configuration Files}{section.4.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Pandoc Main Config}{13}{subsection.4.2.1}\protected@file@percent }
\newlabel{pandoc-main-config}{{4.2.1}{13}{Pandoc Main Config}{subsection.4.2.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Build Workflow}{14}{section.4.3}\protected@file@percent }
\newlabel{build-workflow}{{4.3}{14}{Build Workflow}{section.4.3}{}}
\gdef \LT@i {\LT@entry
{1}{86.68152pt}\LT@entry
{1}{383.07349pt}}
\newlabel{glossary-1}{{A.2}{15}{Glossary}{appendix*.2}{}}
\@writefile{toc}{\contentsline {chapter}{Glossary}{15}{appendix*.2}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{Index}{17}{appendix*.3}\protected@file@percent }
\newlabel{glossary-1}{{4.3}{15}{Glossary}{chapter*.2}{}}
\@writefile{toc}{\contentsline {chapter}{Glossary}{15}{chapter*.2}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{Index}{17}{chapter*.3}\protected@file@percent }
\bibcite{ref-JehaverlackBasicbookbuilderPandoca}{\citeproctext }
\bibcite{ref-JohnHaverlackACEP}{\citeproctext }
\bibcite{ref-PandocIndex}{\citeproctext }
\bibcite{ref-JehaverlackBasicbookbuilderPandoca}{\citeproctext }
\bibcite{ref-JohnHaverlackACEP}{\citeproctext }
\bibcite{ref-PandocIndex}{\citeproctext }
\newlabel{bibliography-1}{{A.2}{19}{Bibliography}{appendix*.4}{}}
\@writefile{toc}{\contentsline {chapter}{Bibliography}{19}{appendix*.4}\protected@file@percent }
\newlabel{refs}{{A.2}{19}{Bibliography}{section*.5}{}}
\newlabel{bibliography-1}{{4.3}{19}{Bibliography}{chapter*.4}{}}
\@writefile{toc}{\contentsline {chapter}{Bibliography}{19}{chapter*.4}\protected@file@percent }
\newlabel{refs}{{4.3}{19}{Bibliography}{section*.5}{}}
\gdef \@abspage@last{24}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -22,9 +22,9 @@
\usepackage{lmodern}
\ifPDFTeX\else
% xetex/luatex font selection
\setmainfont[]{Noto Serif}
\setsansfont[]{Noto Sans}
\setmonofont[]{Noto Sans Mono}
\setmainfont[]{TeX Gyre Termes}
\setsansfont[]{TeX Gyre Heros}
\setmonofont[]{TeX Gyre Cursor}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
@ -274,7 +274,7 @@
\fancypagestyle{plain}{%
\fancyhf{}%
\fancyhead[C]{\leftmark} % Chapter title
\cfoot{Basic Book Builder: A Pandoc build process for books, docs and articles} % Book title
\cfoot{Basic Book Builder: A Pandoc build process for books, docs and articles.} % Book title
\rfoot{\thepage} % Page number
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
@ -288,7 +288,7 @@
\fancyhead[C]{\leftmark} % Chapter title (centered)
% Footer
\cfoot{Basic Book Builder: A Pandoc build process for books, docs and articles} % Book title
\cfoot{Basic Book Builder: A Pandoc build process for books, docs and articles.} % Book title
\rfoot{\thepage} % Page number
% Line rules
@ -321,7 +321,7 @@
{\Huge\bfseries Basic Book Builder \par}
\vspace{0.4cm}
{\Large A Pandoc build process for books, docs and articles \par}
{\Large A Pandoc build process for books, docs and articles. \par}
\vspace{1.2cm}
\includegraphics[width=0.5\textwidth]{lib/img/UAF-ACEP.png}
@ -338,14 +338,14 @@
{\Large\bfseries Basic Book Builder \par}
\vspace{0.2cm}
{\normalsize\textit{A Pandoc build process for books, docs and articles}\par}
{\normalsize\textit{A Pandoc build process for books, docs and articles.}\par}
\vspace{0.4cm}
\renewcommand{\arraystretch}{1.3} % row spacing
\setlength{\tabcolsep}{8pt} % column padding
\begin{tabular}{@{}p{0.28\textwidth}p{0.65\textwidth}@{}}
\textbf{Author:} & John Haverlack \\
\textbf{Version:} & 1.1.0 \\
\textbf{Version:} & 1.2.3 \\
\textbf{Date:} & 2026-02-05 \\
\textbf{Affiliation:} & Alaska Center for Energy and Power \\
\textbf{Institution:} & University of Alaska Fairbanks \\
@ -428,12 +428,46 @@ Licensed under the Creative Commons Attribution-NoDerivatives 4.0 International
\mainmatter
\chapter{Introduction}\label{introduction}
This is a basic book (or article / document) builder template based on a
This is a \textbf{basic book builder} template is based on a
Pandoc(\citeproc{ref-PandocIndex}{\emph{Pandoc - Index},
n.d.})\index{Pandoc} build process in conjunction with a number of other
tools to generate PDF, HTML, LaTex, Markdown, ODT, DOCX, and Epub book
output formats from a single set Markdown source content , which can
optionally be edited as an Obsidian vault.
n.d.})\index{Pandoc} + Makefile build process in conjunction Obsidian to
edit content and Zotero to manage citation, to generate multiple format
of the document including:
\begin{itemize}
\tightlist
\item
PDF
\item
HTML
\item
\emph{LaTeX}
\item
Markdown
\item
ODT
\item
DOCX
\item
Epub
\end{itemize}
\subsection{Workflow}\label{workflow}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
Create a new project
\item
Initialize \texttt{metadata.yaml} with title, copyright, author, etc.
\item
Customize \texttt{input-files:} in \texttt{pandoc.yaml}
\item
Edit \texttt{chapters} Markdown ``conent'' files using Obidian
\item
Build your document
\end{enumerate}
This \textbf{basic book
builder}(\citeproc{ref-JehaverlackBasicbookbuilderPandoca}{\emph{Jehaverlack/Basic-Book-Builder},
@ -443,8 +477,8 @@ Haverlack.(\citeproc{ref-JohnHaverlackACEP}{\emph{John {Haverlack}
\chapter{Getting Started}\label{getting-started}
\section{Cloning the Basic Book
Builder}\label{cloning-the-basic-book-builder}
\section{Clone the Basic Book
Builder}\label{clone-the-basic-book-builder}
\begin{clibox}[Clone the repository]
\begin{verbatim}
@ -464,10 +498,17 @@ cd basic-book-builder
Environment}\label{setting-up-build-environment}
\begin{cautionbox}[~Debian Linux]
This script only support Debian based Linux system (Debian, Ubunutu,
Zorin, etc) This script has not been widely tested across platforms
This script only support Debian based Linux system (e.g Debian, Ubuntu,
Zorin). And this script will install several ATP packages on your
system.
\end{cautionbox}
\begin{dangerbox}[Warning]
This script \textbf{has not} been widely tested across many platforms
\end{dangerbox}
To initialize your systems build environment run:
\begin{clibox}[Setup Build Environment]
\begin{verbatim}
./scripts/setup-linux-deb.sh
@ -475,13 +516,15 @@ Zorin, etc) This script has not been widely tested across platforms
\end{clibox}
\subsection{Non deb systems}\label{non-deb-systems}
For more information on setting up the build environment for your system
see Appendix A.
see: \textbf{TBD: NEEDS DOCUMENTED}.
\section{Testing}\label{testing}
If you can build all format for the \textbf{Basic Book Build} then you
have a working build environment.
Once you have set up your build environment, you test by building the
\textbf{basic book builder}.
\begin{clibox}[Testing Build Environment]
\begin{verbatim}
@ -492,66 +535,43 @@ make all
\section{Creating a New Project}\label{creating-a-new-project}
\subsection{Zotero Configuration
(Optional)}\label{zotero-configuration-optional}
\begin{proposedbox}[Tip]
You do not want to edit your new project document in the
\texttt{basic-book-builder} directory. You will want to create a
\textbf{new project} for your document based on this template.
\end{proposedbox}
\chapter{Usage}\label{usage}
\begin{clibox}[Create a new project]
\begin{verbatim}
./scripts/new-project.sh <NEW_PROJECT_DIR>
\end{verbatim}
\section{Creating a Project}\label{creating-a-project}
\end{clibox}
To create a new Project based on the Basic Book Builder template:
\begin{verbatim}
cd <NEW_PROJECT_DIR>
\end{verbatim}
Update your project configuration:
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
Run the new-project.sh script.
Edit: \texttt{metadata.yaml}, for title, author, etc
\item
Edit: \texttt{templates/pandoc.yaml}
\item
Open: \texttt{\textless{}NEW\_PROJECT\_DIR\textgreater{}} with
Obsidian, and edit \texttt{chapters} documents.
\item
Build: \texttt{make\ pdf}
\end{enumerate}
\begin{verbatim}
./scripts/new-project.sh <PATH_TO_PROJECT>
\end{verbatim}
\begin{itemize}
\tightlist
\item
should be outside of the \textbf{basic-book-builder} directory
\end{itemize}
\begin{verbatim}
cd <PATH_TO_PROJECT>
\end{verbatim}
Update:
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
\texttt{metadata.yaml}
\item
\texttt{templates/pandoc.yaml}
\end{enumerate}
\begin{quote}
{[}!info{]} Suggestion Create a git repository to version control your
new content.
\end{quote}
\section{Editing Content}\label{editing-content}
Edit your source content Markdown under the \texttt{chapters} directory.
\textbf{Optional}
\begin{itemize}
\tightlist
\item
Open your \texttt{\textless{}PATH\_TO\_PROJECT\textgreater{}}
directory as an Obsidian vault.
\item
Edit your Markdown with Obsidian
\end{itemize}
\begin{warningbox}[Warning]
\texttt{\textless{}NEW\_PROJECT\_DIR\textgreater{}} should be outside of
the \textbf{basic-book-builder} directory
\end{warningbox}
\section{Building}\label{building}
@ -602,15 +622,22 @@ make all
\chapter{Features}\label{features}
The basic book builder template integrates feature from many systems
including Pandoc, MathJax, Obsidian, and Zotero. The following list
covers these features from a functional point of view.
\section{Metadata}\label{metadata}
Metadata for the project is managed in \texttt{metadata.yaml}. Edit this
file to make global changes to variables for your document. Changes here
will propagate to all format builds.
file to make \textbf{global changes} to variables for your document.
Definitions in \texttt{metadata.yaml} will propagate to all format
builds.
\section{Front-matter}\label{front-matter}
Front matter content is manged in:
Front-Matter documents control the Title Page, Metadata and other pages
before the Title of Contents. Front matter content is manged in these
files:
\begin{itemize}
\tightlist
@ -622,22 +649,16 @@ Front matter content is manged in:
\texttt{templates/frontmatter-md.html}
\end{itemize}
\begin{cautionbox}[Tip]
Unfortunately when you edit one, you need to edit the respective changes
to the other front-matter formats. \#\#\# Title Page
\end{cautionbox}
Edit the \textbf{Front-matter} files to modify the formatting of the
Title Page.
\begin{cautionbox}[Tip]
You'll need to modify the HTML / LaTex.
\end{cautionbox}
Title Page. You'll need to modify the HTML / LaTex code.
\subsection{Meta Data Page}\label{meta-data-page}
Edit the \textbf{Front-matter} files to modify the 2nd page Metadata
format.
format and fields to display.
\subsection{Cover Illustration}\label{cover-illustration}
@ -658,14 +679,26 @@ Dedication.
\begin{itemize}
\tightlist
\item
This is disabled by default \#\# Table of Contents
This is disabled by default
\end{itemize}
\section{Table of Contents}\label{table-of-contents}
The table of contents is auto generated. But can be disabled in
\texttt{template\textbackslash{}pandoc.yaml} by setting: -
\texttt{toc:\ false}
\section{Chapters}\label{chapters}
Chapter Markdown source files are located in the \texttt{chapters}
directory. Edit the \texttt{template\textbackslash{}pandoc.yaml} file to
control which chapter markdown files are in what order.
directory. To edit which chapter files are included the document:
\begin{itemize}
\tightlist
\item
Edit the \texttt{input-file:} section of the
\texttt{template\textbackslash{}pandoc.yaml}
\end{itemize}
\section{Appendixes}\label{appendixes}
@ -695,22 +728,64 @@ TBD
TBD
\section{Mathjax Equations}\label{mathjax-equations}
\section{Images}\label{images}
TBD
You can use basic Markdown Images
\begin{verbatim}
![ACEP](lib/img/ACEPLogo.png)
\end{verbatim}
\begin{figure}
\centering
\pandocbounded{\includegraphics[keepaspectratio,alt={ACEP}]{lib/img/ACEPLogo.png}}
\caption{ACEP}
\end{figure}
\section{\texorpdfstring{\emph{LaTeX}
Equations}{LaTeX Equations}}\label{latex-equations}
You can embed LaTeX equations directly in your Markdown pages.
\subsection{Left Justified / Inline}\label{left-justified-inline}
TBD
To left justify \emph{LaTex} surround the code inside single
\texttt{\$}:
\begin{codebox}[Left Justified Equation]
\begin{verbatim}
$x = \frac{1}{2}$
\end{verbatim}
\end{codebox}
\(x = \frac{1}{2}\)
\begin{codebox}[Inline]
\begin{verbatim}
Or inline, $x = \frac{1}{2}$, in a sentence.
\end{verbatim}
\end{codebox}
Or inline, \(x = \frac{1}{2}\), in a sentence.
\subsection{Centered}\label{centered}
TBD
To center justify \emph{LaTex} surround the code inside double
\texttt{\$\$}:
\begin{codebox}[Centered Equation]
\begin{verbatim}
$$x = \frac{1}{2}$$
\end{verbatim}
\end{codebox}
\[x = \frac{1}{2}\]
\section{Custom Markdown}\label{custom-markdown}
TBD
\subsection{Call-outs}\label{call-outs}
A few call-out box styles have been custom added to easily highlight
@ -748,22 +823,6 @@ A blue box
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\begin{codebox}[Markdown Example]
\begin{verbatim}
[!info] Info Box
Same as a blue box
\end{verbatim}
\end{codebox}
Will render:
\begin{quote}
{[}!info{]} Info Box Same as a blue box
\end{quote}
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
\begin{codebox}[Markdown Example]
\begin{verbatim}
[!speculative] Purple Call-out Title
@ -859,7 +918,8 @@ fi
A command line example
'''
$ ls
build chapters conf filters lib LICENSE.md Makefile metadata.yaml >README.md scripts templates
build chapters conf filters lib LICENSE.md Makefile
metadata.yaml >README.md scripts templates
'''
\end{verbatim}
@ -872,208 +932,168 @@ A command line example
\begin{verbatim}
$ ls
build chapters conf filters lib LICENSE.md Makefile metadata.yaml README.md scripts templates
build chapters conf filters lib LICENSE.md Makefile
metadata.yaml README.md scripts templates
\end{verbatim}
\end{clibox}
\appendix
\section{Advanced}\label{advanced}
Appendix A
\subsection{Changing Fonts}\label{changing-fonts}
\chapter{Appendix A: Build Environment
Notes}\label{appendix-a-build-environment-notes}
It is possible to change fonts by editing
\texttt{templates/pandoc.yaml}, and
\texttt{templates\textbackslash{}styles.css}, but you will have to make
sure you have the proper font's installed on your system first.
\section{Installing Pre-Requisites}\label{installing-pre-requisites}
\subsection{Adding Filters}\label{adding-filters}
\begin{cautionbox}[Not Cross-platform Tested]
For Debian / ZorinOS and likely Ubuntu based systems.
Custom filters can be created. This is complicated and typically needs
done in 3 places for:
\begin{itemize}
\tightlist
\item
obsidian
\item
\emph{LaTeX}
\item
HTML
\end{itemize}
\chapter{Design}\label{design}
\section{Directory Structure}\label{directory-structure}
The \textbf{basic-book-builder} directory tree.
\begin{verbatim}
basic-book-builder
├── build
│   ├── docx
│   ├── html
│   │   ├── conf
│   │   └── lib
│   │   ├── diag
│   │   ├── img
│   │   └── mathjax
│   ├── latex
│   ├── odt
│   └── pdf
├── chapters
├── conf
├── filters
├── lib
│   ├── citations
│   ├── diag
│   ├── img
│   └── mathjax
├── scripts
│   └── tmp
└── templates
\end{verbatim}
\section{Configuration Files}\label{configuration-files}
The \textbf{basic-book-builder} configuration files, scripts, and build
files.
\begin{verbatim}
../basic-book-builder
├── chapters
├── conf
├── filters
│   ├── callouts-html.lua
│   └── callouts.lua
├── lib
│   ├── diag
│   ├── img
│   └── zotero.bib
├── Makefile
├── metadata.yaml
├── scripts
│   ├── new-project.sh
│   ├── replace-metadata.sh
│   ├── setup-linux-deb.sh
│   └── tmp
└── templates
├── docx.yaml
├── epub_template.html
├── epub.yaml
├── frontmatter-docx.md
├── frontmatter.html
├── frontmatter-md.html
├── frontmatter.tex
├── header.tex
├── html.yaml
├── latex.yaml
├── markdown.yaml
├── odt.yaml
├── pandoc.yaml
├── pdf.yaml
├── style.css
└── style_epub.css
\end{verbatim}
\begin{cautionbox}[About conf]
NEVER: edit file directly in \texttt{conf}. They will be overwritten by
the build process. \#\#\# Metadata
\end{cautionbox}
\subsection{Required}\label{required}
Update the \texttt{metadata.yaml} file to globally configure your
document title and other metadata. Edit this file to control your
document title, author, etc.
\subsubsection{Pandoc}\label{pandoc}
\subsection{Pandoc Main Config}\label{pandoc-main-config}
\begin{itemize}
Update the \texttt{input-files:} section of
\texttt{templates/pandoc.yaml} to control what chapter source files are
in which order in your document.
\begin{verbatim}
# pandoc.yaml
input-files:
# - chapters/Preface.md
- chapters/00_Introduction.md
- chapters/01_Getting_Started.md
- chapters/02_Usage.md
- chapters/03_Features.md
- chapters/Appendix.md
- chapters/AppendixA.md
# - chapters/AppendixB.md
- chapters/Glossary.md
- chapters/Index.md
- chapters/Bibliography.md
\end{verbatim}
\section{Build Workflow}\label{build-workflow}
For a PDF Build:
\begin{verbatim}
make pdf
\end{verbatim}
will build dependencies on these file:
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
https://pandoc.org/
Makefile
\item
\href{https://github.com/jgm/pandoc/releases/tag/3.8.2.1}{Download}
\end{itemize}
\begin{quote}
\texttt{sudo\ apt\ install\ https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-1-amd64.deb}
\end{quote}
\subsubsection{Code Editor}\label{code-editor}
\begin{establishedbox}[Code Editor]
\href{https://vscodium.com/}{VSCodium} is recommend for privacy
(telemetry/tracking) reasons - https://vscodium.com/
\end{establishedbox}
But any text editor will work. \#\#\#\# make
\begin{verbatim}
sudo apt install make
\end{verbatim}
\subsubsection{jq and yq}\label{jq-and-yq}
\begin{verbatim}
sudo apt install jq yq
\end{verbatim}
\subsubsection{texlive}\label{texlive}
\begin{quote}
\texttt{sudo\ apt\ install\ texlive\ texlive-xetex\ texlive-latex-extra\ texlive-fonts-recommended\ texlive-fonts-extra}
\end{quote}
\subsubsection{MathJax}\label{mathjax}
\begin{itemize}
\tightlist
conf/pandoc.yaml
\item
https://www.mathjax.org/
\end{itemize}
\begin{verbatim}
wget https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz
tar xzf mathjax-3.2.2.tgz
mv package/es5/* lib/mathjax
rm -rf package mathjax-3.2.2.tgz
\end{verbatim}
\begin{cautionbox}[TODO]
This need to be rolled into a setup script.
\end{cautionbox}
\subsection{Optional}\label{optional}
The following are not strictly requires to use this book builder
template.
\subsubsection{Obsidian}\label{obsidian}
\begin{establishedbox}[Highly Recommended]
Editing book chapter content in Obsidian is a very productive means for
editing Markdown source content.
\end{establishedbox}
\begin{itemize}
\tightlist
conf/pdf.yaml
\item
https://obsidian.md/
lib/zotero.bib
\item
\href{https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb}{Deb
Package}
\end{itemize}
chapters/*.md
\end{enumerate}
\begin{verbatim}
sudo apt install https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb
\end{verbatim}
\subsubsection{Zotero}\label{zotero}
\begin{establishedbox}[Highly Recommended]
If you need to managed citations and references, Zotero integration is
highly recommended.
\end{establishedbox}
\begin{itemize}
\tightlist
\item
https://www.zotero.org/
\end{itemize}
\begin{verbatim}
sudo cp ./scripts/deps/zotero.list /etc/apt/sources.list.d/
\end{verbatim}
\begin{verbatim}
sudo apt update
\end{verbatim}
\begin{verbatim}
sudo apt install zotero
\end{verbatim}
\paragraph{Better BibTex for Zotero}\label{better-bibtex-for-zotero}
Install the Better BibTex Plugin for Zotero - Zotero \textgreater{} Tool
\textgreater{} Plugins
\paragraph{Export citations.bib}\label{export-citations.bib}
\begin{itemize}
\tightlist
\item
Zotero \textgreater{} File \textgreater{} Export Library
\textgreater{} Format: Better BibTeX
\item[$\square$]
Keep Updated
\item[$\square$]
Save to: \textasciitilde/Documents/Lib/zotero.bib
\item[$\square$]
Symlink your \textasciitilde/Documents/Lib/Citations.bib to
basic-book-builder/lib/zotero.bib
\end{itemize}
\paragraph{Zotero Connector Browser
Plugin}\label{zotero-connector-browser-plugin}
\begin{itemize}
\tightlist
\item
https://chromewebstore.google.com/detail/zotero-connector/ekhagklcjbdpajgpjgmbionohlpdbjgc
\end{itemize}
Provides you the ability to auto add Web resources to your Zotero
citation database.
\subsubsection{lmodern}\label{lmodern}
\begin{verbatim}
sudo apt install lmodern
\end{verbatim}
\subsubsection{epubcheck}\label{epubcheck}
\begin{verbatim}
sudo apt install epubcheck
\end{verbatim}
\subsubsection{foliate}\label{foliate}
An EPub Reader
\begin{itemize}
\tightlist
\item
https://johnfactotum.github.io/foliate/
\end{itemize}
\begin{verbatim}
sudo apt install https://github.com/johnfactotum/foliate/releases/download/2.6.4/com.github.johnfactotum.foliate_2.6.4_all.deb
\end{verbatim}
\subsubsection{calibre}\label{calibre}
An EPub Reader
\begin{itemize}
\tightlist
\item
https://calibre-ebook.com
\end{itemize}
\begin{verbatim}
sudo apt install calibre
\end{verbatim}
\section{Editing the Configuration}\label{editing-the-configuration}
NOTE: the \texttt{Makefile} will copy \texttt{templates/*.yaml} to
\texttt{conf/*.yaml}. \textbf{Never} edit \texttt{conf/*}directly.
\backmatter
@ -1186,18 +1206,6 @@ Https://www.uaf.edu/acep/about/our-team/john-haverlack.php.
\bibitem[\citeproctext]{ref-PandocIndex}
\emph{Pandoc - Index}. n.d. Https://pandoc.org/.
\bibitem[\citeproctext]{ref-JehaverlackBasicbookbuilderPandoca}
\emph{Jehaverlack/Basic-Book-Builder: {A Pandoc} Workflow for Building
{PDF}, {HTML}, {EPUB}, and {LaTeX} Book Format.} n.d.
Https://github.com/jehaverlack/basic-book-builder.
\bibitem[\citeproctext]{ref-JohnHaverlackACEP}
\emph{John {Haverlack} \textbar{} {ACEP}}. n.d.
Https://www.uaf.edu/acep/about/our-team/john-haverlack.php.
\bibitem[\citeproctext]{ref-PandocIndex}
\emph{Pandoc - Index}. n.d. Https://pandoc.org/.
\end{CSLReferences}
\backmatter

View File

@ -1,57 +1,46 @@
\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}%
\contentsline {subsection}{\numberline {1.0.1}Workflow}{1}{subsection.1.0.1}%
\contentsline {chapter}{\numberline {2}Getting Started}{2}{chapter.2}%
\contentsline {section}{\numberline {2.1}Cloning the Basic Book Builder}{2}{section.2.1}%
\contentsline {section}{\numberline {2.1}Clone the Basic Book Builder}{2}{section.2.1}%
\contentsline {section}{\numberline {2.2}Setting Up Build Environment}{2}{section.2.2}%
\contentsline {section}{\numberline {2.3}Testing}{2}{section.2.3}%
\contentsline {subsection}{\numberline {2.2.1}Non deb systems}{2}{subsection.2.2.1}%
\contentsline {section}{\numberline {2.3}Testing}{3}{section.2.3}%
\contentsline {section}{\numberline {2.4}Creating a New Project}{3}{section.2.4}%
\contentsline {subsection}{\numberline {2.4.1}Zotero Configuration (Optional)}{3}{subsection.2.4.1}%
\contentsline {chapter}{\numberline {3}Usage}{4}{chapter.3}%
\contentsline {section}{\numberline {3.1}Creating a Project}{4}{section.3.1}%
\contentsline {section}{\numberline {3.2}Editing Content}{4}{section.3.2}%
\contentsline {section}{\numberline {3.3}Building}{4}{section.3.3}%
\contentsline {subsection}{\numberline {3.3.1}PDF}{4}{subsection.3.3.1}%
\contentsline {subsection}{\numberline {3.3.2}HTML}{5}{subsection.3.3.2}%
\contentsline {subsection}{\numberline {3.3.3}DocX}{5}{subsection.3.3.3}%
\contentsline {subsection}{\numberline {3.3.4}ODT}{5}{subsection.3.3.4}%
\contentsline {subsection}{\numberline {3.3.5}Make All}{5}{subsection.3.3.5}%
\contentsline {chapter}{\numberline {4}Features}{6}{chapter.4}%
\contentsline {section}{\numberline {4.1}Metadata}{6}{section.4.1}%
\contentsline {section}{\numberline {4.2}Front-matter}{6}{section.4.2}%
\contentsline {subsection}{\numberline {4.2.1}Meta Data Page}{6}{subsection.4.2.1}%
\contentsline {subsection}{\numberline {4.2.2}Cover Illustration}{6}{subsection.4.2.2}%
\contentsline {subsection}{\numberline {4.2.3}Dedication}{7}{subsection.4.2.3}%
\contentsline {section}{\numberline {4.3}Chapters}{7}{section.4.3}%
\contentsline {section}{\numberline {4.4}Appendixes}{7}{section.4.4}%
\contentsline {section}{\numberline {4.5}Glossary}{7}{section.4.5}%
\contentsline {section}{\numberline {4.6}Index}{7}{section.4.6}%
\contentsline {subsection}{\numberline {4.6.1}Markdown Indexes}{7}{subsection.4.6.1}%
\contentsline {section}{\numberline {4.7}Bibliography}{7}{section.4.7}%
\contentsline {subsection}{\numberline {4.7.1}Zotero Integration}{7}{subsection.4.7.1}%
\contentsline {subsection}{\numberline {4.7.2}Obsidian Citations}{8}{subsection.4.7.2}%
\contentsline {section}{\numberline {4.8}Mathjax Equations}{8}{section.4.8}%
\contentsline {subsection}{\numberline {4.8.1}Left Justified / Inline}{8}{subsection.4.8.1}%
\contentsline {subsection}{\numberline {4.8.2}Centered}{8}{subsection.4.8.2}%
\contentsline {section}{\numberline {4.9}Custom Markdown}{8}{section.4.9}%
\contentsline {subsection}{\numberline {4.9.1}Call-outs}{8}{subsection.4.9.1}%
\contentsline {chapter}{\numberline {A}Appendix A: Build Environment Notes}{12}{appendix.A}%
\contentsline {section}{\numberline {A.1}Installing Pre-Requisites}{12}{section.A.1}%
\contentsline {subsection}{\numberline {A.1.1}Required}{12}{subsection.A.1.1}%
\contentsline {subsubsection}{\numberline {A.1.1.1}Pandoc}{12}{subsubsection.A.1.1.1}%
\contentsline {subsubsection}{\numberline {A.1.1.2}Code Editor}{12}{subsubsection.A.1.1.2}%
\contentsline {subsubsection}{\numberline {A.1.1.3}jq and yq}{12}{subsubsection.A.1.1.3}%
\contentsline {subsubsection}{\numberline {A.1.1.4}texlive}{12}{subsubsection.A.1.1.4}%
\contentsline {subsubsection}{\numberline {A.1.1.5}MathJax}{13}{subsubsection.A.1.1.5}%
\contentsline {subsection}{\numberline {A.1.2}Optional}{13}{subsection.A.1.2}%
\contentsline {subsubsection}{\numberline {A.1.2.1}Obsidian}{13}{subsubsection.A.1.2.1}%
\contentsline {subsubsection}{\numberline {A.1.2.2}Zotero}{13}{subsubsection.A.1.2.2}%
\contentsline {paragraph}{\numberline {A.1.2.2.1}Better BibTex for Zotero}{14}{paragraph.A.1.2.2.1}%
\contentsline {paragraph}{\numberline {A.1.2.2.2}Export citations.bib}{14}{paragraph.A.1.2.2.2}%
\contentsline {paragraph}{\numberline {A.1.2.2.3}Zotero Connector Browser Plugin}{14}{paragraph.A.1.2.2.3}%
\contentsline {subsubsection}{\numberline {A.1.2.3}lmodern}{14}{subsubsection.A.1.2.3}%
\contentsline {subsubsection}{\numberline {A.1.2.4}epubcheck}{14}{subsubsection.A.1.2.4}%
\contentsline {subsubsection}{\numberline {A.1.2.5}foliate}{14}{subsubsection.A.1.2.5}%
\contentsline {subsubsection}{\numberline {A.1.2.6}calibre}{14}{subsubsection.A.1.2.6}%
\contentsline {section}{\numberline {A.2}Editing the Configuration}{14}{section.A.2}%
\contentsline {chapter}{Glossary}{15}{appendix*.2}%
\contentsline {chapter}{Index}{17}{appendix*.3}%
\contentsline {chapter}{Bibliography}{19}{appendix*.4}%
\contentsline {section}{\numberline {2.5}Building}{3}{section.2.5}%
\contentsline {subsection}{\numberline {2.5.1}PDF}{3}{subsection.2.5.1}%
\contentsline {subsection}{\numberline {2.5.2}HTML}{4}{subsection.2.5.2}%
\contentsline {subsection}{\numberline {2.5.3}DocX}{4}{subsection.2.5.3}%
\contentsline {subsection}{\numberline {2.5.4}ODT}{4}{subsection.2.5.4}%
\contentsline {subsection}{\numberline {2.5.5}Make All}{4}{subsection.2.5.5}%
\contentsline {chapter}{\numberline {3}Features}{5}{chapter.3}%
\contentsline {section}{\numberline {3.1}Metadata}{5}{section.3.1}%
\contentsline {section}{\numberline {3.2}Front-matter}{5}{section.3.2}%
\contentsline {subsection}{\numberline {3.2.1}Meta Data Page}{5}{subsection.3.2.1}%
\contentsline {subsection}{\numberline {3.2.2}Cover Illustration}{5}{subsection.3.2.2}%
\contentsline {subsection}{\numberline {3.2.3}Dedication}{5}{subsection.3.2.3}%
\contentsline {section}{\numberline {3.3}Table of Contents}{6}{section.3.3}%
\contentsline {section}{\numberline {3.4}Chapters}{6}{section.3.4}%
\contentsline {section}{\numberline {3.5}Appendixes}{6}{section.3.5}%
\contentsline {section}{\numberline {3.6}Glossary}{6}{section.3.6}%
\contentsline {section}{\numberline {3.7}Index}{6}{section.3.7}%
\contentsline {subsection}{\numberline {3.7.1}Markdown Indexes}{6}{subsection.3.7.1}%
\contentsline {section}{\numberline {3.8}Bibliography}{6}{section.3.8}%
\contentsline {subsection}{\numberline {3.8.1}Zotero Integration}{6}{subsection.3.8.1}%
\contentsline {subsection}{\numberline {3.8.2}Obsidian Citations}{6}{subsection.3.8.2}%
\contentsline {section}{\numberline {3.9}Images}{7}{section.3.9}%
\contentsline {section}{\numberline {3.10}\emph {LaTeX} Equations}{7}{section.3.10}%
\contentsline {subsection}{\numberline {3.10.1}Left Justified / Inline}{7}{subsection.3.10.1}%
\contentsline {subsection}{\numberline {3.10.2}Centered}{7}{subsection.3.10.2}%
\contentsline {section}{\numberline {3.11}Custom Markdown}{8}{section.3.11}%
\contentsline {subsection}{\numberline {3.11.1}Call-outs}{8}{subsection.3.11.1}%
\contentsline {section}{\numberline {3.12}Advanced}{11}{section.3.12}%
\contentsline {subsection}{\numberline {3.12.1}Changing Fonts}{11}{subsection.3.12.1}%
\contentsline {subsection}{\numberline {3.12.2}Adding Filters}{11}{subsection.3.12.2}%
\contentsline {chapter}{\numberline {4}Design}{12}{chapter.4}%
\contentsline {section}{\numberline {4.1}Directory Structure}{12}{section.4.1}%
\contentsline {section}{\numberline {4.2}Configuration Files}{12}{section.4.2}%
\contentsline {subsection}{\numberline {4.2.1}Pandoc Main Config}{13}{subsection.4.2.1}%
\contentsline {section}{\numberline {4.3}Build Workflow}{14}{section.4.3}%
\contentsline {chapter}{Glossary}{15}{chapter*.2}%
\contentsline {chapter}{Index}{17}{chapter*.3}%
\contentsline {chapter}{Bibliography}{19}{chapter*.4}%

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,24 @@
# Introduction
This is a basic book (or article / document) builder template based on a Pandoc[@PandocIndex]\index{Pandoc} build process in conjunction with a number of other tools to generate PDF, HTML, LaTex, Markdown, ODT, DOCX, and Epub book output formats from a single set Markdown source content , which can optionally be edited as an Obsidian vault.
This is a **basic book builder** template is based on a Pandoc[@PandocIndex]\index{Pandoc} + Makefile build process in conjunction Obsidian to edit content and Zotero to manage citation, to generate multiple format of the document including:
- PDF
- HTML
- *LaTeX*
- Markdown
- ODT
- DOCX
- Epub
### Workflow
1. Create a new project
2. Initialize `metadata.yaml` with title, copyright, author, etc.
3. Customize `input-files:` in `pandoc.yaml`
4. Edit `chapters` Markdown "conent" files using Obidian
5. Build your document
This **basic book builder**[@JehaverlackBasicbookbuilderPandoca] template has been curated by John Haverlack.[@JohnHaverlackACEP]

View File

@ -1,6 +1,6 @@
# Getting Started
## Cloning the Basic Book Builder
## Clone the Basic Book Builder
> [!cli] Clone the repository
@ -18,35 +18,99 @@
> [!caution] ~Debian Linux
> This script only support Debian based Linux system (Debian, Ubunutu, Zorin, etc)
> This script has not been widely tested across platforms
> This script only support Debian based Linux system (e.g Debian, Ubuntu, Zorin). And this script will install several ATP packages on your system.
> [!danger] Warning
This script **has not** been widely tested across many platforms
To initialize your systems build environment run:
> [!cli] Setup Build Environment
> ```
> ./scripts/setup-linux-deb.sh
> ```
For more information on setting up the build environment for your system see Appendix A.
### Non deb systems
For more information on setting up the build environment for your system see: **TBD: NEEDS DOCUMENTED**.
## Testing
If you can build all format for the **Basic Book Build** then you have a working build environment.
Once you have set up your build environment, you test by building the **basic book builder**.
> [!cli] Testing Build Environment
> ```
> make all
> ```
## Creating a New Project
### Zotero Configuration (Optional)
> [!proposed] Tip
> You do not want to edit your new project document in the `basic-book-builder` directory. You will want to create a **new project** for your document based on this template.
> [!cli] Create a new project
> ```
> ./scripts/new-project.sh <NEW_PROJECT_DIR>
> ```
```
cd <NEW_PROJECT_DIR>
```
Update your project configuration:
1. Edit: `metadata.yaml`, for title, author, etc
2. Edit: `templates/pandoc.yaml`
3. Open: `<NEW_PROJECT_DIR>` with Obsidian, and edit `chapters` documents.
4. Build: `make pdf`
> [!warning] Warning
> `<NEW_PROJECT_DIR>` should be outside of the **basic-book-builder** directory
## Building
### PDF
```
make pdf
```
> NOTE: Building the PDF also builds the **LaTeX** version of the book.
### HTML
```
make html
```
### DocX
```
make docx
```
> NOTE: DocX is a work in progress. Frontmatter and formatting need work.
### ODT
```
make odt
```
> NOTE: ODT is a work in progress. Frontmatter and formatting need work.
### Make All
To build all supported formats
```
make all
```

View File

@ -1,4 +1,4 @@
# Usage
# Basic Usage
## Creating a Project

View File

@ -1,30 +1,27 @@
# Features
The basic book builder template integrates feature from many systems including Pandoc, MathJax, Obsidian, and Zotero. The following list covers these features from a functional point of view.
## Metadata
Metadata for the project is managed in `metadata.yaml`. Edit this file to make global changes to variables for your document. Changes here will propagate to all format builds.
Metadata for the project is managed in `metadata.yaml`. Edit this file to make **global changes** to variables for your document. Definitions in `metadata.yaml` will propagate to all format builds.
## Front-matter
Front matter content is manged in:
Front-Matter documents control the Title Page, Metadata and other pages before the Title of Contents. Front matter content is manged in these files:
- `templates/frontmatter.tex`
- `templates/frontmatter.html`
- `templates/frontmatter-md.html`
> [!caution] Tip
Unfortunately when you edit one, you need to edit the respective changes to the other front-matter formats.
Unfortunately when you edit one, you need to edit the respective changes to the other front-matter formats.
### Title Page
Edit the **Front-matter** files to modify the formatting of the Title Page.
> [!caution] Tip
> You'll need to modify the HTML / LaTex.
Edit the **Front-matter** files to modify the formatting of the Title Page. You'll need to modify the HTML / LaTex code.
### Meta Data Page
Edit the **Front-matter** files to modify the 2nd page Metadata format.
Edit the **Front-matter** files to modify the 2nd page Metadata format and fields to display.
### Cover Illustration
@ -34,15 +31,21 @@ Edit the **Front-matter** files to optionally un-comment the Cover Art Acknowled
### Dedication
Edit the **Front-matter** files to modify un-comment the Book Dedication.
- This is disabled by default
## Table of Contents
The table of contents is auto generated. But can be disabled in `template\pandoc.yaml` by setting:
- `toc: false`
## Chapters
Chapter Markdown source files are located in the `chapters` directory. Edit the `template\pandoc.yaml` file to control which chapter markdown files are in what order.
Chapter Markdown source files are located in the `chapters` directory. To edit which chapter files are included the document:
- Edit the `input-file:` section of the `template\pandoc.yaml`
## Appendixes
@ -72,22 +75,58 @@ TBD
TBD
## Mathjax Equations
## Images
TBD
You can use basic Markdown Images
```
![ACEP](lib/img/ACEPLogo.png)
```
![ACEP](lib/img/ACEPLogo.png)
## *LaTeX* Equations
You can embed LaTeX equations directly in your Markdown pages.
### Left Justified / Inline
TBD
To left justify *LaTex* surround the code inside single `$`:
> [!code] Left Justified Equation
> ```
> $x = \frac{1}{2}$
> ```
$x = \frac{1}{2}$
> [!code] Inline
> ```
> Or inline, $x = \frac{1}{2}$, in a sentence.
> ```
Or inline, $x = \frac{1}{2}$, in a sentence.
### Centered
TBD
To center justify *LaTex* surround the code inside double `$$`:
> [!code] Centered Equation
> ```
> $$x = \frac{1}{2}$$
> ```
$$x = \frac{1}{2}$$
## Custom Markdown
TBD
### Call-outs
A few call-out box styles have been custom added to easily highlight certain types of content.
@ -118,19 +157,6 @@ Will render:
---
> [!code] Markdown Example
> ```
> [!info] Info Box
> Same as a blue box
> ```
Will render:
> [!info] Info Box
> Same as a blue box
---
> [!code] Markdown Example
> ```
> [!speculative] Purple Call-out Title
@ -210,7 +236,8 @@ Will render:
> A command line example
>'''
>$ ls
>build chapters conf filters lib LICENSE.md Makefile metadata.yaml >README.md scripts templates
>build chapters conf filters lib LICENSE.md Makefile
>metadata.yaml >README.md scripts templates
> '''
> ```
@ -220,10 +247,24 @@ Will render:
> A command line example
> ```
> $ ls
> build chapters conf filters lib LICENSE.md Makefile metadata.yaml README.md scripts templates
> build chapters conf filters lib LICENSE.md Makefile
> metadata.yaml README.md scripts templates
> ```
## Advanced
### Changing Fonts
It is possible to change fonts by editing `templates/pandoc.yaml`, and `templates\styles.css`, but you will have to make sure you have the proper font's installed on your system first.
### Adding Filters
Custom filters can be created. This is complicated and typically needs done in 3 places for:
- obsidian
- *LaTeX*
- HTML

View File

@ -2,6 +2,8 @@
## Directory Structure
The **basic-book-builder** directory tree.
```
basic-book-builder
├── build
@ -30,6 +32,7 @@ basic-book-builder
## Configuration Files
The **basic-book-builder** configuration files, scripts, and build files.
```
../basic-book-builder
@ -70,9 +73,11 @@ basic-book-builder
```
> [!caution] About conf
> NEVER: edit file directly in `conf`. They will be overwritten by the build process.
### Metadata
Update the `metadata.yaml` file to globally configure your document title and other metadata.
Update the `metadata.yaml` file to globally configure your document title and other metadata. Edit this file to control your document title, author, etc.
### Pandoc Main Config
@ -92,46 +97,22 @@ input-files:
- chapters/Glossary.md
- chapters/Index.md
- chapters/Bibliography.md
from: markdown+yaml_metadata_block+raw_tex
standalone: true
metadata:
mainfont: "Noto Serif"
sansfont: "Noto Sans"
monofont: "Noto Sans Mono"
# mainfont: "Libertinus Serif"
# sansfont: "Libertinus Sans"
# monofont: "DejaVu Sans Mono"
date: "" # <-- forces maketitle to exist, but blank
link-citations: true
variables:
documentclass: book # options: report, book, article
fontsize: 12pt
geometry:
- margin=1in
toc: true # ✅ Pandoc-recognized variable
toc-depth: 3 # ✅ nested inside variables
toc-title: "Contents" # ✅ controls TOC heading
numbersections: true # ✅ correct key (not number-sections)
colorlinks: true # nice PDF hyperlinks
linkcolor: blue
graphics: true
float: false
figure-latex-placement: H
# suppress-chapter: true
resource-path:
- .
- lib/img
- lib/diag
citeproc: true
bibliography: lib/zotero.bi
```
## Build Workflow
TBD
For a PDF Build:
```
make pdf
```
will build dependencies on these file:
1. Makefile
2. conf/pandoc.yaml
3. conf/pdf.yaml
4. lib/zotero.bib
5. chapters/*.md
NOTE: the `Makefile` will copy `templates/*.yaml` to `conf/*.yaml`. **Never** edit `conf/*`directly.

View File

@ -60,36 +60,3 @@ To insert a Zotero Citation
- Alt + I (to insert citation)
- Search for and select citation reference
## Usage: Building the Book
#### PDF
```
make pdf
```
#### HTML
```
make html
```
#### LaTex
```
make latex
```
#### Markdown
```
make markdown
```
#### EPub
> Note: This ePub configuration still needs tuning.
```
make epub
```

View File

@ -4,5 +4,3 @@
# Bibliography {-}
::: {#refs .references}
:::

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var t,a,e,o={667:function(t,a){a.q=void 0,a.q="3.2.2"},669:function(t,a,e){var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a,"__esModule",{value:!0}),a.ActionConfiguration=a.ActionMethods=void 0;var n=e(251),i=o(e(193)),r=e(871),u=o(e(360));a.ActionMethods={},a.ActionMethods.Macro=u.default.Macro,a.ActionMethods.Toggle=function(t,a){for(var e,o=[];"\\endtoggle"!==(e=t.GetArgument(a));)o.push(new i.default(e,t.stack.env,t.configuration).mml());t.Push(t.create("node","maction",o,{actiontype:"toggle"}))},a.ActionMethods.Mathtip=function(t,a){var e=t.ParseArg(a),o=t.ParseArg(a);t.Push(t.create("node","maction",[e,o],{actiontype:"tooltip"}))},new r.CommandMap("action-macros",{toggle:"Toggle",mathtip:"Mathtip",texttip:["Macro","\\mathtip{#1}{\\text{#2}}",2]},a.ActionMethods),a.ActionConfiguration=n.Configuration.create("action",{handler:{macro:["action-macros"]}})},955:function(t,a){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,a.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.Configuration=MathJax._.input.tex.Configuration.Configuration,a.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,a.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.parseResult=MathJax._.input.tex.SymbolMap.parseResult,a.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,a.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,a.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,a.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,a.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,a.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,a.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,a.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},193:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.TexParser.default},360:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.base.BaseMethods.default}},n={};function i(t){var a=n[t];if(void 0!==a)return a.exports;var e=n[t]={exports:{}};return o[t].call(e.exports,e,e.exports,i),e.exports}t=i(955),a=i(667),e=i(669),MathJax.loader&&MathJax.loader.checkVersion("[tex]/action",a.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{action:{ActionConfiguration:e}}}}})}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var t,a,e,o={667:function(t,a){a.q=void 0,a.q="3.2.2"},133:function(t,a,e){var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a,"__esModule",{value:!0}),a.BboxConfiguration=a.BboxMethods=void 0;var n=e(251),i=e(871),r=o(e(402));a.BboxMethods={},a.BboxMethods.BBox=function(t,a){for(var e,o,n,i=t.GetBrackets(a,""),l=t.ParseArg(a),x=i.split(/,/),M=0,s=x.length;M<s;M++){var c=x[M].trim(),d=c.match(/^(\.\d+|\d+(\.\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);if(d){if(e)throw new r.default("MultipleBBoxProperty","%1 specified twice in %2","Padding",a);var f=u(d[1]+d[3]);f&&(e={height:"+"+f,depth:"+"+f,lspace:f,width:"+"+2*parseInt(d[1],10)+d[3]})}else if(c.match(/^([a-z0-9]+|\#[0-9a-f]{6}|\#[0-9a-f]{3})$/i)){if(o)throw new r.default("MultipleBBoxProperty","%1 specified twice in %2","Background",a);o=c}else if(c.match(/^[-a-z]+:/i)){if(n)throw new r.default("MultipleBBoxProperty","%1 specified twice in %2","Style",a);n=p(c)}else if(""!==c)throw new r.default("InvalidBBoxProperty",'"%1" doesn\'t look like a color, a padding dimension, or a style',c)}e&&(l=t.create("node","mpadded",[l],e)),(o||n)&&(e={},o&&Object.assign(e,{mathbackground:o}),n&&Object.assign(e,{style:n}),l=t.create("node","mstyle",[l],e)),t.Push(l)};var p=function(t){return t},u=function(t){return t};new i.CommandMap("bbox",{bbox:"BBox"},a.BboxMethods),a.BboxConfiguration=n.Configuration.create("bbox",{handler:{macro:["bbox"]}})},955:function(t,a){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,a.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.Configuration=MathJax._.input.tex.Configuration.Configuration,a.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,a.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.parseResult=MathJax._.input.tex.SymbolMap.parseResult,a.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,a.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,a.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,a.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,a.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,a.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,a.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,a.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},402:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.TexError.default}},n={};function i(t){var a=n[t];if(void 0!==a)return a.exports;var e=n[t]={exports:{}};return o[t].call(e.exports,e,e.exports,i),e.exports}t=i(955),a=i(667),e=i(133),MathJax.loader&&MathJax.loader.checkVersion("[tex]/bbox",a.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{bbox:{BboxConfiguration:e}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var t,a,o,e={667:function(t,a){a.q=void 0,a.q="3.2.2"},986:function(t,a,o){var e=this&&this.__values||function(t){var a="function"==typeof Symbol&&Symbol.iterator,o=a&&t[a],e=0;if(o)return o.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&e>=t.length&&(t=void 0),{value:t&&t[e++],done:!t}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")},n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a,"__esModule",{value:!0}),a.BoldsymbolConfiguration=a.rewriteBoldTokens=a.createBoldToken=a.BoldsymbolMethods=void 0;var r=o(251),i=n(o(748)),l=o(108),s=o(871),u=o(348),d={};function x(t,a,o,e){var n=u.NodeFactory.createToken(t,a,o,e);return"mtext"!==a&&t.configuration.parser.stack.env.boldsymbol&&(i.default.setProperty(n,"fixBold",!0),t.configuration.addNode("fixBold",n)),n}function p(t){var a,o;try{for(var n=e(t.data.getList("fixBold")),r=n.next();!r.done;r=n.next()){var s=r.value;if(i.default.getProperty(s,"fixBold")){var u=i.default.getAttribute(s,"mathvariant");null==u?i.default.setAttribute(s,"mathvariant",l.TexConstant.Variant.BOLD):i.default.setAttribute(s,"mathvariant",d[u]||u),i.default.removeProperties(s,"fixBold")}}}catch(t){a={error:t}}finally{try{r&&!r.done&&(o=n.return)&&o.call(n)}finally{if(a)throw a.error}}}d[l.TexConstant.Variant.NORMAL]=l.TexConstant.Variant.BOLD,d[l.TexConstant.Variant.ITALIC]=l.TexConstant.Variant.BOLDITALIC,d[l.TexConstant.Variant.FRAKTUR]=l.TexConstant.Variant.BOLDFRAKTUR,d[l.TexConstant.Variant.SCRIPT]=l.TexConstant.Variant.BOLDSCRIPT,d[l.TexConstant.Variant.SANSSERIF]=l.TexConstant.Variant.BOLDSANSSERIF,d["-tex-calligraphic"]="-tex-bold-calligraphic",d["-tex-oldstyle"]="-tex-bold-oldstyle",d["-tex-mathit"]=l.TexConstant.Variant.BOLDITALIC,a.BoldsymbolMethods={},a.BoldsymbolMethods.Boldsymbol=function(t,a){var o=t.stack.env.boldsymbol;t.stack.env.boldsymbol=!0;var e=t.ParseArg(a);t.stack.env.boldsymbol=o,t.Push(e)},new s.CommandMap("boldsymbol",{boldsymbol:"Boldsymbol"},a.BoldsymbolMethods),a.createBoldToken=x,a.rewriteBoldTokens=p,a.BoldsymbolConfiguration=r.Configuration.create("boldsymbol",{handler:{macro:["boldsymbol"]},nodes:{token:x},postprocessors:[p]})},955:function(t,a){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,a.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.Configuration=MathJax._.input.tex.Configuration.Configuration,a.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,a.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},348:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.NodeFactory=MathJax._.input.tex.NodeFactory.NodeFactory},748:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.NodeUtil.default},871:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.parseResult=MathJax._.input.tex.SymbolMap.parseResult,a.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,a.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,a.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,a.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,a.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,a.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,a.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,a.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},108:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.TexConstant=MathJax._.input.tex.TexConstants.TexConstant}},n={};function r(t){var a=n[t];if(void 0!==a)return a.exports;var o=n[t]={exports:{}};return e[t].call(o.exports,o,o.exports,r),o.exports}t=r(955),a=r(667),o=r(986),MathJax.loader&&MathJax.loader.checkVersion("[tex]/boldsymbol",a.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{boldsymbol:{BoldsymbolConfiguration:o}}}}})}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var t,e,a,n={667:function(t,e){e.q=void 0,e.q="3.2.2"},774:function(t,e,a){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.CancelConfiguration=e.CancelMethods=void 0;var o=a(251),i=a(108),r=a(871),c=n(a(398)),l=a(975);e.CancelMethods={},e.CancelMethods.Cancel=function(t,e,a){var n=t.GetBrackets(e,""),o=t.ParseArg(e),i=c.default.keyvalOptions(n,l.ENCLOSE_OPTIONS);i.notation=a,t.Push(t.create("node","menclose",[o],i))},e.CancelMethods.CancelTo=function(t,e){var a=t.GetBrackets(e,""),n=t.ParseArg(e),o=t.ParseArg(e),r=c.default.keyvalOptions(a,l.ENCLOSE_OPTIONS);r.notation=[i.TexConstant.Notation.UPDIAGONALSTRIKE,i.TexConstant.Notation.UPDIAGONALARROW,i.TexConstant.Notation.NORTHEASTARROW].join(" "),n=t.create("node","mpadded",[n],{depth:"-.1em",height:"+.1em",voffset:".1em"}),t.Push(t.create("node","msup",[t.create("node","menclose",[o],r),n]))},new r.CommandMap("cancel",{cancel:["Cancel",i.TexConstant.Notation.UPDIAGONALSTRIKE],bcancel:["Cancel",i.TexConstant.Notation.DOWNDIAGONALSTRIKE],xcancel:["Cancel",i.TexConstant.Notation.UPDIAGONALSTRIKE+" "+i.TexConstant.Notation.DOWNDIAGONALSTRIKE],cancelto:"CancelTo"},e.CancelMethods),e.CancelConfiguration=o.Configuration.create("cancel",{handler:{macro:["cancel"]}})},955:function(t,e){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,e.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},398:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},871:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseResult=MathJax._.input.tex.SymbolMap.parseResult,e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},108:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},975:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.ENCLOSE_OPTIONS=MathJax._.input.tex.enclose.EncloseConfiguration.ENCLOSE_OPTIONS,e.EncloseMethods=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseMethods,e.EncloseConfiguration=MathJax._.input.tex.enclose.EncloseConfiguration.EncloseConfiguration}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var a=o[t]={exports:{}};return n[t].call(a.exports,a,a.exports,i),a.exports}t=i(955),e=i(667),a=i(774),MathJax.loader&&MathJax.loader.checkVersion("[tex]/cancel",e.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{cancel:{CancelConfiguration:a}}}}})}();

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var e,t,a,n={667:function(e,t){t.q=void 0,t.q="3.2.2"},286:function(e,t,a){var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,a=t&&e[t],n=0;if(a)return a.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CenternotConfiguration=t.filterCenterOver=void 0;var o=a(251),i=r(a(193)),u=r(a(748)),l=a(871),p=r(a(360));function c(e){var t,a,r=e.data;try{for(var o=n(r.getList("centerOver")),i=o.next();!i.done;i=o.next()){var l=i.value,p=u.default.getTexClass(l.childNodes[0].childNodes[0]);null!==p&&u.default.setProperties(l.parent.parent.parent.parent.parent.parent,{texClass:p})}}catch(e){t={error:e}}finally{try{i&&!i.done&&(a=o.return)&&a.call(o)}finally{if(t)throw t.error}}}new l.CommandMap("centernot",{centerOver:"CenterOver",centernot:["Macro","\\centerOver{#1}{{\u29f8}}",1]},{CenterOver:function(e,t){var a="{"+e.GetArgument(t)+"}",n=e.ParseArg(t),r=new i.default(a,e.stack.env,e.configuration).mml(),o=e.create("node","TeXAtom",[new i.default(a,e.stack.env,e.configuration).mml(),e.create("node","mpadded",[e.create("node","mpadded",[n],{width:0,lspace:"-.5width"}),e.create("node","mphantom",[r])],{width:0,lspace:"-.5width"})]);e.configuration.addNode("centerOver",r),e.Push(o)},Macro:p.default.Macro}),t.filterCenterOver=c,t.CenternotConfiguration=o.Configuration.create("centernot",{handler:{macro:["centernot"]},postprocessors:[c]})},955:function(e,t){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,t.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},748:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.NodeUtil.default},871:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.parseResult=MathJax._.input.tex.SymbolMap.parseResult,t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},193:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.TexParser.default},360:function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.base.BaseMethods.default}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return n[e].call(a.exports,a,a.exports,o),a.exports}e=o(955),t=o(667),a=o(286),MathJax.loader&&MathJax.loader.checkVersion("[tex]/centernot",t.q,"tex-extension"),(0,e.r8)({_:{input:{tex:{centernot:{CenternotConfiguration:a}}}}})}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var o,a,t,e={667:function(o,a){a.q=void 0,a.q="3.2.2"},888:function(o,a,t){Object.defineProperty(a,"__esModule",{value:!0}),a.ColorConfiguration=a.ColorV2Methods=void 0;var e=t(871),n=t(251);a.ColorV2Methods={Color:function(o,a){var t=o.GetArgument(a),e=o.stack.env.color;o.stack.env.color=t;var n=o.ParseArg(a);e?o.stack.env.color=e:delete o.stack.env.color;var r=o.create("node","mstyle",[n],{mathcolor:t});o.Push(r)}},new e.CommandMap("colorv2",{color:"Color"},a.ColorV2Methods),a.ColorConfiguration=n.Configuration.create("colorv2",{handler:{macro:["colorv2"]}})},955:function(o,a){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,a.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(o,a){Object.defineProperty(a,"__esModule",{value:!0}),a.Configuration=MathJax._.input.tex.Configuration.Configuration,a.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,a.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(o,a){Object.defineProperty(a,"__esModule",{value:!0}),a.parseResult=MathJax._.input.tex.SymbolMap.parseResult,a.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,a.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,a.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,a.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,a.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,a.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,a.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,a.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap}},n={};function r(o){var a=n[o];if(void 0!==a)return a.exports;var t=n[o]={exports:{}};return e[o](t,t.exports,r),t.exports}o=r(955),a=r(667),t=r(888),MathJax.loader&&MathJax.loader.checkVersion("[tex]/colorv2",a.q,"tex-extension"),(0,o.r8)({_:{input:{tex:{colorv2:{ColorV2Configuration:t}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var t,a,e,n={667:function(t,a){a.q=void 0,a.q="3.2.2"},359:function(t,a,e){var n,o=this&&this.__values||function(t){var a="function"==typeof Symbol&&Symbol.iterator,e=a&&t[a],n=0;if(e)return e.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")},i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a,"__esModule",{value:!0}),a.ConfigMacrosConfiguration=void 0;var r=e(251),p=e(74),l=e(871),s=i(e(945)),u=e(924),c=i(e(432)),M=e(975),x="configmacros-map",f="configmacros-env-map";a.ConfigMacrosConfiguration=r.Configuration.create("configmacros",{init:function(t){new l.CommandMap(x,{},{}),new l.EnvironmentMap(f,s.default.environment,{},{}),t.append(r.Configuration.local({handler:{macro:[x],environment:[f]},priority:3}))},config:function(t,a){!function(t){var a,e,n=t.parseOptions.handlers.retrieve(x),i=t.parseOptions.options.macros;try{for(var r=o(Object.keys(i)),p=r.next();!p.done;p=r.next()){var l=p.value,s="string"==typeof i[l]?[i[l]]:i[l],M=Array.isArray(s[2])?new u.Macro(l,c.default.MacroWithTemplate,s.slice(0,2).concat(s[2])):new u.Macro(l,c.default.Macro,s);n.add(l,M)}}catch(t){a={error:t}}finally{try{p&&!p.done&&(e=r.return)&&e.call(r)}finally{if(a)throw a.error}}}(a),function(t){var a,e,n=t.parseOptions.handlers.retrieve(f),i=t.parseOptions.options.environments;try{for(var r=o(Object.keys(i)),p=r.next();!p.done;p=r.next()){var l=p.value;n.add(l,new u.Macro(l,c.default.BeginEnv,[!0].concat(i[l])))}}catch(t){a={error:t}}finally{try{p&&!p.done&&(e=r.return)&&e.call(r)}finally{if(a)throw a.error}}}(a)},items:(n={},n[M.BeginEnvItem.prototype.kind]=M.BeginEnvItem,n),options:{macros:(0,p.expandable)({}),environments:(0,p.expandable)({})}})},955:function(t,a){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,a.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},74:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.isObject=MathJax._.util.Options.isObject,a.APPEND=MathJax._.util.Options.APPEND,a.REMOVE=MathJax._.util.Options.REMOVE,a.OPTIONS=MathJax._.util.Options.OPTIONS,a.Expandable=MathJax._.util.Options.Expandable,a.expandable=MathJax._.util.Options.expandable,a.makeArray=MathJax._.util.Options.makeArray,a.keys=MathJax._.util.Options.keys,a.copy=MathJax._.util.Options.copy,a.insert=MathJax._.util.Options.insert,a.defaultOptions=MathJax._.util.Options.defaultOptions,a.userOptions=MathJax._.util.Options.userOptions,a.selectOptions=MathJax._.util.Options.selectOptions,a.selectOptionsFromKeys=MathJax._.util.Options.selectOptionsFromKeys,a.separateOptions=MathJax._.util.Options.separateOptions,a.lookup=MathJax._.util.Options.lookup},251:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.Configuration=MathJax._.input.tex.Configuration.Configuration,a.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,a.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},945:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.ParseMethods.default},924:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.Symbol=MathJax._.input.tex.Symbol.Symbol,a.Macro=MathJax._.input.tex.Symbol.Macro},871:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.parseResult=MathJax._.input.tex.SymbolMap.parseResult,a.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,a.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,a.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,a.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,a.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,a.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,a.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,a.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},975:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.BeginEnvItem=MathJax._.input.tex.newcommand.NewcommandItems.BeginEnvItem},432:function(t,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=MathJax._.input.tex.newcommand.NewcommandMethods.default}},o={};function i(t){var a=o[t];if(void 0!==a)return a.exports;var e=o[t]={exports:{}};return n[t].call(e.exports,e,e.exports,i),e.exports}t=i(955),a=i(667),e=i(359),MathJax.loader&&MathJax.loader.checkVersion("[tex]/configmacros",a.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{configmacros:{ConfigMacrosConfiguration:e}}}}})}();

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var a,t,e,o={667:function(a,t){t.q=void 0,t.q="3.2.2"},272:function(a,t,e){var o=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(t,"__esModule",{value:!0}),t.EncloseConfiguration=t.EncloseMethods=t.ENCLOSE_OPTIONS=void 0;var n=e(251),r=e(871),i=o(e(398));t.ENCLOSE_OPTIONS={"data-arrowhead":1,color:1,mathcolor:1,background:1,mathbackground:1,"data-padding":1,"data-thickness":1},t.EncloseMethods={},t.EncloseMethods.Enclose=function(a,e){var o=a.GetArgument(e).replace(/,/g," "),n=a.GetBrackets(e,""),r=a.ParseArg(e),l=i.default.keyvalOptions(n,t.ENCLOSE_OPTIONS);l.notation=o,a.Push(a.create("node","menclose",[r],l))},new r.CommandMap("enclose",{enclose:"Enclose"},t.EncloseMethods),t.EncloseConfiguration=n.Configuration.create("enclose",{handler:{macro:["enclose"]}})},955:function(a,t){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,t.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},398:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=MathJax._.input.tex.ParseUtil.default},871:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.parseResult=MathJax._.input.tex.SymbolMap.parseResult,t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap}},n={};function r(a){var t=n[a];if(void 0!==t)return t.exports;var e=n[a]={exports:{}};return o[a].call(e.exports,e,e.exports,r),e.exports}a=r(955),t=r(667),e=r(272),MathJax.loader&&MathJax.loader.checkVersion("[tex]/enclose",t.q,"tex-extension"),(0,a.r8)({_:{input:{tex:{enclose:{EncloseConfiguration:e}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var t,e,a,o={667:function(t,e){e.q=void 0,e.q="3.2.2"},646:function(t,e,a){var o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.ExtpfeilConfiguration=e.ExtpfeilMethods=void 0;var n=a(251),r=a(871),i=a(939),u=o(a(892)),x=a(417),p=o(a(402));e.ExtpfeilMethods={},e.ExtpfeilMethods.xArrow=i.AmsMethods.xArrow,e.ExtpfeilMethods.NewExtArrow=function(t,a){var o=t.GetArgument(a),n=t.GetArgument(a),r=t.GetArgument(a);if(!o.match(/^\\([a-z]+|.)$/i))throw new p.default("NewextarrowArg1","First argument to %1 must be a control sequence name",a);if(!n.match(/^(\d+),(\d+)$/))throw new p.default("NewextarrowArg2","Second argument to %1 must be two integers separated by a comma",a);if(!r.match(/^(\d+|0x[0-9A-F]+)$/i))throw new p.default("NewextarrowArg3","Third argument to %1 must be a unicode character number",a);o=o.substr(1);var i=n.split(",");u.default.addMacro(t,o,e.ExtpfeilMethods.xArrow,[parseInt(r),parseInt(i[0]),parseInt(i[1])])},new r.CommandMap("extpfeil",{xtwoheadrightarrow:["xArrow",8608,12,16],xtwoheadleftarrow:["xArrow",8606,17,13],xmapsto:["xArrow",8614,6,7],xlongequal:["xArrow",61,7,7],xtofrom:["xArrow",8644,12,12],Newextarrow:"NewExtArrow"},e.ExtpfeilMethods);e.ExtpfeilConfiguration=n.Configuration.create("extpfeil",{handler:{macro:["extpfeil"]},init:function(t){x.NewcommandConfiguration.init(t)}})},955:function(t,e){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,e.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseResult=MathJax._.input.tex.SymbolMap.parseResult,e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},402:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.TexError.default},939:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.AmsMethods=MathJax._.input.tex.ams.AmsMethods.AmsMethods,e.NEW_OPS=MathJax._.input.tex.ams.AmsMethods.NEW_OPS},417:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.NewcommandConfiguration=MathJax._.input.tex.newcommand.NewcommandConfiguration.NewcommandConfiguration},892:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.newcommand.NewcommandUtil.default}},n={};function r(t){var e=n[t];if(void 0!==e)return e.exports;var a=n[t]={exports:{}};return o[t].call(a.exports,a,a.exports,r),a.exports}t=r(955),e=r(667),a=r(646),MathJax.loader&&MathJax.loader.checkVersion("[tex]/extpfeil",e.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{extpfeil:{ExtpfeilConfiguration:a}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var a,t,n,e={667:function(a,t){t.q=void 0,t.q="3.2.2"},82:function(a,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.GensymbConfiguration=void 0;var e=n(251),o=n(108);new(n(871).CharacterMap)("gensymb-symbols",(function(a,t){var n=t.attributes||{};n.mathvariant=o.TexConstant.Variant.NORMAL,n.class="MathML-Unit";var e=a.create("token","mi",n,t.char);a.Push(e)}),{ohm:"\u2126",degree:"\xb0",celsius:"\u2103",perthousand:"\u2030",micro:"\xb5"}),t.GensymbConfiguration=e.Configuration.create("gensymb",{handler:{macro:["gensymb-symbols"]}})},955:function(a,t){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,t.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.parseResult=MathJax._.input.tex.SymbolMap.parseResult,t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},108:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.TexConstant=MathJax._.input.tex.TexConstants.TexConstant}},o={};function i(a){var t=o[a];if(void 0!==t)return t.exports;var n=o[a]={exports:{}};return e[a](n,n.exports,i),n.exports}a=i(955),t=i(667),n=i(82),MathJax.loader&&MathJax.loader.checkVersion("[tex]/gensymb",t.q,"tex-extension"),(0,a.r8)({_:{input:{tex:{gensymb:{GensymbConfiguration:n}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var t,e,a,n,r={667:function(t,e){e.q=void 0,e.q="3.2.2"},738:function(t,e,a){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.HtmlConfiguration=void 0;var r=a(251),o=a(871),i=n(a(248));new o.CommandMap("html_macros",{href:"Href",class:"Class",style:"Style",cssId:"Id"},i.default),e.HtmlConfiguration=r.Configuration.create("html",{handler:{macro:["html_macros"]}})},248:function(t,e,a){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var r=n(a(748)),o={Href:function(t,e){var a=t.GetArgument(e),n=i(t,e);r.default.setAttribute(n,"href",a),t.Push(n)},Class:function(t,e){var a=t.GetArgument(e),n=i(t,e),o=r.default.getAttribute(n,"class");o&&(a=o+" "+a),r.default.setAttribute(n,"class",a),t.Push(n)},Style:function(t,e){var a=t.GetArgument(e),n=i(t,e),o=r.default.getAttribute(n,"style");o&&(";"!==a.charAt(a.length-1)&&(a+=";"),a=o+" "+a),r.default.setAttribute(n,"style",a),t.Push(n)},Id:function(t,e){var a=t.GetArgument(e),n=i(t,e);r.default.setAttribute(n,"id",a),t.Push(n)}},i=function(t,e){var a=t.ParseArg(e);if(!r.default.isInferred(a))return a;var n=r.default.getChildren(a);if(1===n.length)return n[0];var o=t.create("node","mrow");return r.default.copyChildren(a,o),r.default.copyAttributes(a,o),o};e.default=o},955:function(t,e){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,e.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},748:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},871:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseResult=MathJax._.input.tex.SymbolMap.parseResult,e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var a=o[t]={exports:{}};return r[t].call(a.exports,a,a.exports,i),a.exports}t=i(955),e=i(667),a=i(738),n=i(248),MathJax.loader&&MathJax.loader.checkVersion("[tex]/html",e.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{html:{HtmlConfiguration:a,HtmlMethods:n}}}}})}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var o,n,r,t={667:function(o,n){n.q=void 0,n.q="3.2.2"},634:function(o,n,r){Object.defineProperty(n,"__esModule",{value:!0}),n.NoErrorsConfiguration=void 0;var t=r(251);n.NoErrorsConfiguration=t.Configuration.create("noerrors",{nodes:{error:function(o,n,r,t){var e=o.create("token","mtext",{},t.replace(/\n/g," "));return o.create("node","merror",[e],{"data-mjx-error":n,title:n})}}})},955:function(o,n){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,n.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(o,n){Object.defineProperty(n,"__esModule",{value:!0}),n.Configuration=MathJax._.input.tex.Configuration.Configuration,n.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,n.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration}},e={};function a(o){var n=e[o];if(void 0!==n)return n.exports;var r=e[o]={exports:{}};return t[o](r,r.exports,a),r.exports}o=a(955),n=a(667),r=a(634),MathJax.loader&&MathJax.loader.checkVersion("[tex]/noerrors",n.q,"tex-extension"),(0,o.r8)({_:{input:{tex:{noerrors:{NoErrorsConfiguration:r}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var n,o,e,t={667:function(n,o){o.q=void 0,o.q="3.2.2"},999:function(n,o,e){var t=this&&this.__values||function(n){var o="function"==typeof Symbol&&Symbol.iterator,e=o&&n[o],t=0;if(e)return e.call(n);if(n&&"number"==typeof n.length)return{next:function(){return n&&t>=n.length&&(n=void 0),{value:n&&n[t++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(o,"__esModule",{value:!0}),o.NoUndefinedConfiguration=void 0;var r=e(251);o.NoUndefinedConfiguration=r.Configuration.create("noundefined",{fallback:{macro:function(n,o){var e,r,i=n.create("text","\\"+o),a=n.options.noundefined||{},u={};try{for(var f=t(["color","background","size"]),l=f.next();!l.done;l=f.next()){var c=l.value;a[c]&&(u["math"+c]=a[c])}}catch(n){e={error:n}}finally{try{l&&!l.done&&(r=f.return)&&r.call(f)}finally{if(e)throw e.error}}n.Push(n.create("node","mtext",[],u,i))}},options:{noundefined:{color:"red",background:"",size:""}},priority:3})},955:function(n,o){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,o.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(n,o){Object.defineProperty(o,"__esModule",{value:!0}),o.Configuration=MathJax._.input.tex.Configuration.Configuration,o.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,o.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration}},r={};function i(n){var o=r[n];if(void 0!==o)return o.exports;var e=r[n]={exports:{}};return t[n].call(e.exports,e,e.exports,i),e.exports}n=i(955),o=i(667),e=i(999),MathJax.loader&&MathJax.loader.checkVersion("[tex]/noundefined",o.q,"tex-extension"),(0,n.r8)({_:{input:{tex:{noundefined:{NoUndefinedConfiguration:e}}}}})}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var t,o,n,a={667:function(t,o){o.q=void 0,o.q="3.2.2"},941:function(t,o,n){var a,r=this&&this.__extends||(a=function(t,o){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,o){t.__proto__=o}||function(t,o){for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])},a(t,o)},function(t,o){if("function"!=typeof o&&null!==o)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");function n(){this.constructor=t}a(t,o),t.prototype=null===o?Object.create(o):(n.prototype=o.prototype,new n)});Object.defineProperty(o,"__esModule",{value:!0}),o.TagFormatConfiguration=o.tagformatConfig=void 0;var e=n(251),i=n(680),s=0;function u(t,o){var n=o.parseOptions.options.tags;"base"!==n&&t.tags.hasOwnProperty(n)&&i.TagsFactory.add(n,t.tags[n]);var a=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.formatNumber=function(t){return o.parseOptions.options.tagformat.number(t)},n.prototype.formatTag=function(t){return o.parseOptions.options.tagformat.tag(t)},n.prototype.formatId=function(t){return o.parseOptions.options.tagformat.id(t)},n.prototype.formatUrl=function(t,n){return o.parseOptions.options.tagformat.url(t,n)},n}(i.TagsFactory.create(o.parseOptions.options.tags).constructor),e="configTags-"+ ++s;i.TagsFactory.add(e,a),o.parseOptions.options.tags=e}o.tagformatConfig=u,o.TagFormatConfiguration=e.Configuration.create("tagformat",{config:[u,10],options:{tagformat:{number:function(t){return t.toString()},tag:function(t){return"("+t+")"},id:function(t){return"mjx-eqn:"+t.replace(/\s/g,"_")},url:function(t,o){return o+"#"+encodeURIComponent(t)}}}})},955:function(t,o){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,o.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,o){Object.defineProperty(o,"__esModule",{value:!0}),o.Configuration=MathJax._.input.tex.Configuration.Configuration,o.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,o.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},680:function(t,o){Object.defineProperty(o,"__esModule",{value:!0}),o.Label=MathJax._.input.tex.Tags.Label,o.TagInfo=MathJax._.input.tex.Tags.TagInfo,o.AbstractTags=MathJax._.input.tex.Tags.AbstractTags,o.NoTags=MathJax._.input.tex.Tags.NoTags,o.AllTags=MathJax._.input.tex.Tags.AllTags,o.TagsFactory=MathJax._.input.tex.Tags.TagsFactory}},r={};function e(t){var o=r[t];if(void 0!==o)return o.exports;var n=r[t]={exports:{}};return a[t].call(n.exports,n,n.exports,e),n.exports}t=e(955),o=e(667),n=e(941),MathJax.loader&&MathJax.loader.checkVersion("[tex]/tagformat",o.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{tagformat:{TagFormatConfiguration:n}}}}})}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var t,e,a,n={667:function(t,e){e.q=void 0,e.q="3.2.2"},376:function(t,e,a){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.UnicodeConfiguration=e.UnicodeMethods=void 0;var o=a(251),i=n(a(402)),r=a(871),u=n(a(398)),l=n(a(748)),c=a(992);e.UnicodeMethods={};var p={};e.UnicodeMethods.Unicode=function(t,e){var a=t.GetBrackets(e),n=null,o=null;a&&(a.replace(/ /g,"").match(/^(\d+(\.\d*)?|\.\d+),(\d+(\.\d*)?|\.\d+)$/)?(n=a.replace(/ /g,"").split(/,/),o=t.GetBrackets(e)):o=a);var r=u.default.trimSpaces(t.GetArgument(e)).replace(/^0x/,"x");if(!r.match(/^(x[0-9A-Fa-f]+|[0-9]+)$/))throw new i.default("BadUnicode","Argument to \\unicode must be a number");var d=parseInt(r.match(/^x/)?"0"+r:r);p[d]?o||(o=p[d][2]):p[d]=[800,200,o,d],n&&(p[d][0]=Math.floor(1e3*parseFloat(n[0])),p[d][1]=Math.floor(1e3*parseFloat(n[1])));var M=t.stack.env.font,s={};o?(p[d][2]=s.fontfamily=o.replace(/'/g,"'"),M&&(M.match(/bold/)&&(s.fontweight="bold"),M.match(/italic|-mathit/)&&(s.fontstyle="italic"))):M&&(s.mathvariant=M);var x=t.create("token","mtext",s,(0,c.numeric)(r));l.default.setProperty(x,"unicode",!0),t.Push(x)},new r.CommandMap("unicode",{unicode:"Unicode"},e.UnicodeMethods),e.UnicodeConfiguration=o.Configuration.create("unicode",{handler:{macro:["unicode"]}})},955:function(t,e){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,e.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},992:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.options=MathJax._.util.Entities.options,e.entities=MathJax._.util.Entities.entities,e.add=MathJax._.util.Entities.add,e.remove=MathJax._.util.Entities.remove,e.translate=MathJax._.util.Entities.translate,e.numeric=MathJax._.util.Entities.numeric},251:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},748:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.NodeUtil.default},398:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.ParseUtil.default},871:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseResult=MathJax._.input.tex.SymbolMap.parseResult,e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},402:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.TexError.default}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var a=o[t]={exports:{}};return n[t].call(a.exports,a,a.exports,i),a.exports}t=i(955),e=i(667),a=i(376),MathJax.loader&&MathJax.loader.checkVersion("[tex]/unicode",e.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{unicode:{UnicodeConfiguration:a}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var a,t,e,p={667:function(a,t){t.q=void 0,t.q="3.2.2"},927:function(a,t,e){Object.defineProperty(t,"__esModule",{value:!0}),t.UpgreekConfiguration=void 0;var p=e(251),n=e(871),o=e(108);new n.CharacterMap("upgreek",(function(a,t){var e=t.attributes||{};e.mathvariant=o.TexConstant.Variant.NORMAL;var p=a.create("token","mi",e,t.char);a.Push(p)}),{upalpha:"\u03b1",upbeta:"\u03b2",upgamma:"\u03b3",updelta:"\u03b4",upepsilon:"\u03f5",upzeta:"\u03b6",upeta:"\u03b7",uptheta:"\u03b8",upiota:"\u03b9",upkappa:"\u03ba",uplambda:"\u03bb",upmu:"\u03bc",upnu:"\u03bd",upxi:"\u03be",upomicron:"\u03bf",uppi:"\u03c0",uprho:"\u03c1",upsigma:"\u03c3",uptau:"\u03c4",upupsilon:"\u03c5",upphi:"\u03d5",upchi:"\u03c7",uppsi:"\u03c8",upomega:"\u03c9",upvarepsilon:"\u03b5",upvartheta:"\u03d1",upvarpi:"\u03d6",upvarrho:"\u03f1",upvarsigma:"\u03c2",upvarphi:"\u03c6",Upgamma:"\u0393",Updelta:"\u0394",Uptheta:"\u0398",Uplambda:"\u039b",Upxi:"\u039e",Uppi:"\u03a0",Upsigma:"\u03a3",Upupsilon:"\u03a5",Upphi:"\u03a6",Uppsi:"\u03a8",Upomega:"\u03a9"}),t.UpgreekConfiguration=p.Configuration.create("upgreek",{handler:{macro:["upgreek"]}})},955:function(a,t){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,t.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=MathJax._.input.tex.Configuration.Configuration,t.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,t.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.parseResult=MathJax._.input.tex.SymbolMap.parseResult,t.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,t.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,t.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,t.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,t.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,t.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,t.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,t.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},108:function(a,t){Object.defineProperty(t,"__esModule",{value:!0}),t.TexConstant=MathJax._.input.tex.TexConstants.TexConstant}},n={};function o(a){var t=n[a];if(void 0!==t)return t.exports;var e=n[a]={exports:{}};return p[a](e,e.exports,o),e.exports}a=o(955),t=o(667),e=o(927),MathJax.loader&&MathJax.loader.checkVersion("[tex]/upgreek",t.q,"tex-extension"),(0,a.r8)({_:{input:{tex:{upgreek:{UpgreekConfiguration:e}}}}})}();

View File

@ -1 +0,0 @@
!function(){"use strict";var t,e,a,n={667:function(t,e){e.q=void 0,e.q="3.2.2"},768:function(t,e,a){var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.VerbConfiguration=e.VerbMethods=void 0;var o=a(251),r=a(108),i=a(871),u=n(a(402));e.VerbMethods={},e.VerbMethods.Verb=function(t,e){var a=t.GetNext(),n=++t.i;if(""===a)throw new u.default("MissingArgFor","Missing argument for %1",e);for(;t.i<t.string.length&&t.string.charAt(t.i)!==a;)t.i++;if(t.i===t.string.length)throw new u.default("NoClosingDelim","Can't find closing delimiter for %1",t.currentCS);var o=t.string.slice(n,t.i).replace(/ /g,"\xa0");t.i++,t.Push(t.create("token","mtext",{mathvariant:r.TexConstant.Variant.MONOSPACE},o))},new i.CommandMap("verb",{verb:"Verb"},e.VerbMethods),e.VerbConfiguration=o.Configuration.create("verb",{handler:{macro:["verb"]}})},955:function(t,e){MathJax._.components.global.isObject,MathJax._.components.global.combineConfig,MathJax._.components.global.combineDefaults,e.r8=MathJax._.components.global.combineWithMathJax,MathJax._.components.global.MathJax},251:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.Configuration=MathJax._.input.tex.Configuration.Configuration,e.ConfigurationHandler=MathJax._.input.tex.Configuration.ConfigurationHandler,e.ParserConfiguration=MathJax._.input.tex.Configuration.ParserConfiguration},871:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseResult=MathJax._.input.tex.SymbolMap.parseResult,e.AbstractSymbolMap=MathJax._.input.tex.SymbolMap.AbstractSymbolMap,e.RegExpMap=MathJax._.input.tex.SymbolMap.RegExpMap,e.AbstractParseMap=MathJax._.input.tex.SymbolMap.AbstractParseMap,e.CharacterMap=MathJax._.input.tex.SymbolMap.CharacterMap,e.DelimiterMap=MathJax._.input.tex.SymbolMap.DelimiterMap,e.MacroMap=MathJax._.input.tex.SymbolMap.MacroMap,e.CommandMap=MathJax._.input.tex.SymbolMap.CommandMap,e.EnvironmentMap=MathJax._.input.tex.SymbolMap.EnvironmentMap},108:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.TexConstant=MathJax._.input.tex.TexConstants.TexConstant},402:function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=MathJax._.input.tex.TexError.default}},o={};function r(t){var e=o[t];if(void 0!==e)return e.exports;var a=o[t]={exports:{}};return n[t].call(a.exports,a,a.exports,r),a.exports}t=r(955),e=r(667),a=r(768),MathJax.loader&&MathJax.loader.checkVersion("[tex]/verb",e.q,"tex-extension"),(0,t.r8)({_:{input:{tex:{verb:{VerbConfiguration:a}}}}})}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More