From a4cbaba1d7cce87b2777399ff1639d05c0168da7 Mon Sep 17 00:00:00 2001
From: Rob Beezer
Date: Thu, 6 Aug 2026 15:26:02 -0700
Subject: [PATCH 1/6] Schema: WeBWorK forms the code has always honored
Co-Authored-By: Claude Fable 5
---
schema/pretext-validation-plus.xsl | 15 +++++++
schema/pretext.rnc | 34 ++++++++++++++--
schema/pretext.rng | 64 ++++++++++++++++++++++++++++--
schema/pretext.xml | 34 ++++++++++++++--
4 files changed, 135 insertions(+), 12 deletions(-)
diff --git a/schema/pretext-validation-plus.xsl b/schema/pretext-validation-plus.xsl
index 0859ed39a..8c39cc179 100644
--- a/schema/pretext-validation-plus.xsl
+++ b/schema/pretext-validation-plus.xsl
@@ -480,6 +480,21 @@ along with PreTeXt. If not, see .
+
+
+
+
+
+
+ An <image> with a @pg-name attribute is drawn by the PG
+ code of a WeBWorK problem, and so must only appear within
+ a <webwork> element, not here. It will be ignored.
+
+
+
+
+
+
diff --git a/schema/pretext.rnc b/schema/pretext.rnc
index ff984bf63..e4c82a3af 100644
--- a/schema/pretext.rnc
+++ b/schema/pretext.rnc
@@ -986,9 +986,23 @@
SideBySideNoNumber+
}
- Image = ImageRaster | ImageCode
+ Image = ImageRaster | ImageCode | ImagePG
+ # An image drawn by the PG code of a WeBWorK problem, named
+ # by @pg-name. Like "var", the form is admitted schema-wide
+ # (it can appear deep within list items, say) but is
+ # exclusive to a "webwork" problem; the validation-plus
+ # stylesheet enforces the location.
+ ImagePG =
+ element image {
+ attribute pg-name {text},
+ attribute width {text}?,
+ attribute margins {text}?,
+ empty
+ }
ImageDescription = element description {(Paragraph | Tabular)+}
- ImageShortDescription = element shortdescription {text}
+ # A "var" may ride along, per the schema-wide "var" pattern:
+ # the validation-plus stylesheet confines it to a WeBWorK problem
+ ImageShortDescription = element shortdescription {(text | WWVariable)*}
ImageShortDescriptionCode = element shortdescription {
(text | WWVariable)+
}
@@ -1478,6 +1492,9 @@
SimpleLine+
)
}
+ # A "webwork" with @copy is an empty, lightweight reference
+ # to another authored problem (perhaps reseeded); the
+ # assembly resolves it to a duplicate
WebWorkAuthored =
element webwork {
(
@@ -1485,7 +1502,6 @@
LabelID?,
Component?,
attribute seed {xsd:integer}?,
- attribute copy {text}?,
WWDescription?,
WWMacros?,
element pg-code {text}?,
@@ -1495,6 +1511,14 @@
(IntroductionText?, TaskWW+, ConclusionText?)
)
) |
+ (
+ UniqueID?,
+ LabelID?,
+ Component?,
+ attribute copy {text},
+ attribute seed {xsd:integer}?,
+ empty
+ ) |
text
}
BlockStatementWW =
@@ -1524,6 +1548,8 @@
(attribute name {text},
attribute evaluator {text}?,
attribute width {text}?,
+ # the variable holds PGML markup to be processed
+ attribute data {"pgml"}?,
attribute category {
"angle" | "decimal" | "exponent"
| "formula" | "fraction" | "inequality"
@@ -1531,7 +1557,7 @@
| "limit" | "number" | "point"
| "syntax" | "quantity" | "vector"
}?,
- attribute form {"popup"|"buttons"|"checkboxes"|"none"}?) |
+ attribute form {"popup"|"buttons"|"checkboxes"|"none"|"array"}?) |
(attribute form {"essay"},
attribute width {text}?)
}
diff --git a/schema/pretext.rng b/schema/pretext.rng
index 5798535ed..a8c1c2816 100644
--- a/schema/pretext.rng
+++ b/schema/pretext.rng
@@ -2639,8 +2639,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2651,9 +2671,18 @@
+
-
+
+
+
+
+
+
@@ -3879,6 +3908,11 @@
+
@@ -3897,9 +3931,6 @@
-
-
-
@@ -3934,6 +3965,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -4004,6 +4053,12 @@
+
+
+
+ pgml
+
+
@@ -4032,6 +4087,7 @@
buttons
checkboxes
none
+ array
diff --git a/schema/pretext.xml b/schema/pretext.xml
index 596c7f343..c2d1ccd64 100644
--- a/schema/pretext.xml
+++ b/schema/pretext.xml
@@ -1918,9 +1918,23 @@
Images
- Image = ImageRaster | ImageCode
+ Image = ImageRaster | ImageCode | ImagePG
+ # An image drawn by the PG code of a WeBWorK problem, named
+ # by @pg-name. Like "var", the form is admitted schema-wide
+ # (it can appear deep within list items, say) but is
+ # exclusive to a "webwork" problem; the validation-plus
+ # stylesheet enforces the location.
+ ImagePG =
+ element image {
+ attribute pg-name {text},
+ attribute width {text}?,
+ attribute margins {text}?,
+ empty
+ }
ImageDescription = element description {(Paragraph | Tabular)+}
- ImageShortDescription = element shortdescription {text}
+ # A "var" may ride along, per the schema-wide "var" pattern:
+ # the validation-plus stylesheet confines it to a WeBWorK problem
+ ImageShortDescription = element shortdescription {(text | WWVariable)*}
ImageShortDescriptionCode = element shortdescription {
(text | WWVariable)+
}
@@ -3208,6 +3222,9 @@
SimpleLine+
)
}
+ # A "webwork" with @copy is an empty, lightweight reference
+ # to another authored problem (perhaps reseeded); the
+ # assembly resolves it to a duplicate
WebWorkAuthored =
element webwork {
(
@@ -3215,7 +3232,6 @@
LabelID?,
Component?,
attribute seed {xsd:integer}?,
- attribute copy {text}?,
WWDescription?,
WWMacros?,
element pg-code {text}?,
@@ -3225,6 +3241,14 @@
(IntroductionText?, TaskWW+, ConclusionText?)
)
) |
+ (
+ UniqueID?,
+ LabelID?,
+ Component?,
+ attribute copy {text},
+ attribute seed {xsd:integer}?,
+ empty
+ ) |
text
}
BlockStatementWW =
@@ -3254,6 +3278,8 @@
(attribute name {text},
attribute evaluator {text}?,
attribute width {text}?,
+ # the variable holds PGML markup to be processed
+ attribute data {"pgml"}?,
attribute category {
"angle" | "decimal" | "exponent"
| "formula" | "fraction" | "inequality"
@@ -3261,7 +3287,7 @@
| "limit" | "number" | "point"
| "syntax" | "quantity" | "vector"
}?,
- attribute form {"popup"|"buttons"|"checkboxes"|"none"}?) |
+ attribute form {"popup"|"buttons"|"checkboxes"|"none"|"array"}?) |
(attribute form {"essay"},
attribute width {text}?)
}
From 3e6c2a597a2d59eb0eaf967214029ad41c8f0070 Mon Sep 17 00:00:00 2001
From: Rob Beezer
Date: Thu, 6 Aug 2026 15:29:50 -0700
Subject: [PATCH 2/6] WeBWorK chapter: legacy image descriptions become
"shortdescription"
Co-Authored-By: Claude Fable 5
---
.../webwork/sample-chapter/sample-chapter.ptx | 24 +++++++++----------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/examples/webwork/sample-chapter/sample-chapter.ptx b/examples/webwork/sample-chapter/sample-chapter.ptx
index 5890dcdf5..1faf3a0f0 100644
--- a/examples/webwork/sample-chapter/sample-chapter.ptx
+++ b/examples/webwork/sample-chapter/sample-chapter.ptx
@@ -1230,7 +1230,7 @@ ENDDOCUMENT();
This image is a visual proof that \sum_{k=1}^{n}k equals what?
-
+
21 blue balls are arranged in a triangular formation,
with one at the top, then a row of two, a row of three,
and so on until a row of six;
@@ -1240,7 +1240,7 @@ ENDDOCUMENT();
until they intersect two orange balls;
the effect is that each of the 1+2+3+4+5+6 blue balls corresponds
to one pair from the 7 orange balls
-
+
\begin{tikzpicture}
\draw[dashed] (0.5-0.5*6.5,-0.866025*6.5) -- (7-0.5*6.5,-0.866025*6.5);
@@ -1286,10 +1286,10 @@ ENDDOCUMENT();
Find the area of the rectangle.
-
+
a rectangle whose width is labeled cm
and height is labeled cm
-
+
\begin{tikzpicture}
\draw[fill=blue!20] (0,0) --++ (6,0) node[pos=0.5,below] {\($b\)\,cm} --++ (0,4) node[pos=0.5,right] {\($a\)\,cm} --++ (-6,0) -- cycle;
@@ -1324,10 +1324,10 @@ ENDDOCUMENT();
What are the roots of this polynomial?
-
+
the graph of a polynomial that crosses the x-axis at ,
, and .
-
+
\begin{tikzpicture}
\begin{axis}
@@ -1357,9 +1357,9 @@ ENDDOCUMENT();
a printed at sign, and a percent sign used as a comment marker.
-
+
this image has pictures of text with special characters like $, %, and @
-
+
\begin{tikzpicture}
\node at (0,0) {I need about \$3.50.};
@@ -1409,9 +1409,9 @@ ENDDOCUMENT();
Use the graph to solve the equation f(x)=1.
-
+
a plot of a curve on a cartesian set of axes; the x axis ranges from -1 to 4, and the y-axis ranges from -1 to 4; the curve enters from the left, below the x-axis, and curves upward and to the right until it reaches the point (0,0); from here it continues predominantly rightward for a bit, bending slightly upward more and more as it progresses; it passes through the points (,1) and (,2) before leaving the graph moving more and more upward and to the right.
-
+
@@ -1422,9 +1422,9 @@ ENDDOCUMENT();
The graph reveals that the solution set to f(x)=1 is .
-
+
a plot of a curve on a cartesian set of axes; the x axis ranges from -1 to 4, and the y-axis ranges from -1 to 4; the curve enters from the left, below the x-axis, and curves upward and to the right until it reaches the point (0,0); from here it continues predominantly rightward for a bit, bending slightly upward more and more as it progresses; it passes through the points (,1) and (,2) before leaving the graph moving more and more upward and to the right; a horizontal line segment moves rightward from y=1 on the y-axis until it reaches a point on the curve; a vertical line segment moves down from this point to x= on the x-axis.
-
+
From f908784b5b06a4f2405125c8c06619992ae77941 Mon Sep 17 00:00:00 2001
From: Rob Beezer
Date: Thu, 6 Aug 2026 15:36:49 -0700
Subject: [PATCH 3/6] Errors: the empty WeBWorK statement trips its warning
there
Co-Authored-By: Claude Fable 5
---
examples/errors/sample-errors-and-warnings.xml | 15 +++++++++++++++
.../webwork/sample-chapter/sample-chapter.ptx | 13 -------------
2 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/examples/errors/sample-errors-and-warnings.xml b/examples/errors/sample-errors-and-warnings.xml
index db35ce1ea..30ffc4bc5 100644
--- a/examples/errors/sample-errors-and-warnings.xml
+++ b/examples/errors/sample-errors-and-warnings.xml
@@ -699,6 +699,21 @@ systems.
+
+
+
+
+
+ This exercise has no content in its statement.
+ It should throw a PTX warning during the representations build.
+
+
+
+
+
+
+
+
diff --git a/examples/webwork/sample-chapter/sample-chapter.ptx b/examples/webwork/sample-chapter/sample-chapter.ptx
index 1faf3a0f0..727201100 100644
--- a/examples/webwork/sample-chapter/sample-chapter.ptx
+++ b/examples/webwork/sample-chapter/sample-chapter.ptx
@@ -2314,19 +2314,6 @@ ENDDOCUMENT();
-
-
-
- This exercise has no content in its statement.
- It should throw a PTX warning during the representations build.
-
-
-
-
-
-
-
-
From 92e6b70d8e72b436163988e048d29e4d743a1f77 Mon Sep 17 00:00:00 2001
From: Rob Beezer
Date: Thu, 6 Aug 2026 15:40:35 -0700
Subject: [PATCH 4/6] Schema: name the validation-plus stylesheet plainly
Co-Authored-By: Claude Fable 5
---
schema/pretext.rnc | 2 +-
schema/pretext.rng | 2 +-
schema/pretext.xml | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/schema/pretext.rnc b/schema/pretext.rnc
index e4c82a3af..ce3b74af5 100644
--- a/schema/pretext.rnc
+++ b/schema/pretext.rnc
@@ -1543,7 +1543,7 @@
element macro-file {text}+
}
WWVariable =
- ## The WeBWorK "var" element appears in the RELAX-NG schema as a child of many elements, but almost always as a descendant of a "p" element or a "cell" element. As an element that is only relevant for a WeBWorK problem, occurrences of "var" must be within a "webwork" element. PreTeXt's additional validation will check on these two situations.
+ ## The WeBWorK "var" element appears in the RELAX-NG schema as a child of many elements, but almost always as a descendant of a "p" element or a "cell" element. As an element that is only relevant for a WeBWorK problem, occurrences of "var" must be within a "webwork" element. The validation-plus stylesheet will check on these two situations.
element var {
(attribute name {text},
attribute evaluator {text}?,
diff --git a/schema/pretext.rng b/schema/pretext.rng
index a8c1c2816..20969ef76 100644
--- a/schema/pretext.rng
+++ b/schema/pretext.rng
@@ -4043,7 +4043,7 @@
- The WeBWorK "var" element appears in the RELAX-NG schema as a child of many elements, but almost always as a descendant of a "p" element or a "cell" element. As an element that is only relevant for a WeBWorK problem, occurrences of "var" must be within a "webwork" element. PreTeXt's additional validation will check on these two situations.
+ The WeBWorK "var" element appears in the RELAX-NG schema as a child of many elements, but almost always as a descendant of a "p" element or a "cell" element. As an element that is only relevant for a WeBWorK problem, occurrences of "var" must be within a "webwork" element. The validation-plus stylesheet will check on these two situations.
diff --git a/schema/pretext.xml b/schema/pretext.xml
index c2d1ccd64..94ec54f8d 100644
--- a/schema/pretext.xml
+++ b/schema/pretext.xml
@@ -766,7 +766,7 @@
- A large class of similarly indivisible items are units on physical quantities. The quantity element is allowed to be empty, and the code should silently produce no output. Expressing non-emptiness here might get a bit messy, so an additional validation warning could be a good alternative.
+ A large class of similarly indivisible items are units on physical quantities. The quantity element is allowed to be empty, and the code should silently produce no output. Expressing non-emptiness here might get a bit messy, so a warning from the validation-plus stylesheet could be a good alternative.
SI units
@@ -3273,7 +3273,7 @@
element macro-file {text}+
}
WWVariable =
- ## The WeBWorK "var" element appears in the RELAX-NG schema as a child of many elements, but almost always as a descendant of a "p" element or a "cell" element. As an element that is only relevant for a WeBWorK problem, occurrences of "var" must be within a "webwork" element. PreTeXt's additional validation will check on these two situations.
+ ## The WeBWorK "var" element appears in the RELAX-NG schema as a child of many elements, but almost always as a descendant of a "p" element or a "cell" element. As an element that is only relevant for a WeBWorK problem, occurrences of "var" must be within a "webwork" element. The validation-plus stylesheet will check on these two situations.
element var {
(attribute name {text},
attribute evaluator {text}?,
From 2f38daa104de9bcebbef37fed4c6d1db965dda8c Mon Sep 17 00:00:00 2001
From: Rob Beezer
Date: Thu, 6 Aug 2026 15:40:35 -0700
Subject: [PATCH 5/6] Guide: name the validation-plus stylesheet plainly
Co-Authored-By: Claude Fable 5
---
doc/guide/appendices/schema-install.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/guide/appendices/schema-install.xml b/doc/guide/appendices/schema-install.xml
index 6221bfee7..addd8dd8b 100644
--- a/doc/guide/appendices/schema-install.xml
+++ b/doc/guide/appendices/schema-install.xml
@@ -11,7 +11,7 @@
Schema Tools
- This appendix has technical information about tools that work with the RELAX-NG schema and our additional validation stylesheet. See for a more general overview.
+ This appendix has technical information about tools that work with the RELAX-NG schema and the validation-plus stylesheet. See for a more general overview.
From 0a5cc5d5e2ff14621c5ab9d20f544f3e05ef165c Mon Sep 17 00:00:00 2001
From: Rob Beezer
Date: Thu, 6 Aug 2026 15:47:00 -0700
Subject: [PATCH 6/6] WeBWorK chapter: every answer-format category, and extra
macros
Co-Authored-By: Claude Fable 5
---
.../webwork/an-exercisegroup-exercise.xml | 2 +-
.../my-generated/webwork/answer-arrays.xml | 2 +-
.../webwork/answer-format-extra-macros.xml | 105 +++++++++++
.../webwork/answer-format-gallery.xml | 169 ++++++++++++++++++
.../webwork/deep-nested-lists.xml | 2 +-
.../my-generated/webwork/divisional-bare.xml | 2 +-
.../webwork/divisional-conclusion.xml | 2 +-
.../divisional-introduction-conclusion.xml | 2 +-
.../webwork/divisional-introduction.xml | 2 +-
.../webwork/divisional-title-conclusion.xml | 2 +-
...visional-title-introduction-conclusion.xml | 2 +-
.../webwork/divisional-title-introduction.xml | 2 +-
.../my-generated/webwork/divisional-title.xml | 2 +-
.../webwork/exercisegroup-bare.xml | 2 +-
.../webwork/exercisegroup-conclusion.xml | 2 +-
.../exercisegroup-introduction-conclusion.xml | 2 +-
.../webwork/exercisegroup-introduction.xml | 2 +-
.../exercisegroup-title-conclusion.xml | 2 +-
...isegroup-title-introduction-conclusion.xml | 2 +-
.../exercisegroup-title-introduction.xml | 2 +-
.../webwork/exercisegroup-title.xml | 2 +-
.../webwork/function-with-domain-issues.xml | 2 +-
.../images/box-diagonal-five-image-1.pdf | Bin 2278 -> 2279 bytes
.../images/box-diagonal-five-image-1.png | Bin 3069 -> 3069 bytes
.../images/box-diagonal-thirteen-image-1.pdf | Bin 2404 -> 2406 bytes
.../images/box-diagonal-thirteen-image-1.png | Bin 3502 -> 3502 bytes
.../latex-image-with-preamble-image-1.pdf | Bin 5661 -> 5662 bytes
.../latex-image-with-preamble-image-1.png | Bin 12625 -> 12625 bytes
.../images/randomized-latex-image-image-1.pdf | Bin 3510 -> 3511 bytes
.../images/randomized-latex-image-image-1.png | Bin 4938 -> 4938 bytes
.../images/special-characters-image-1.pdf | Bin 5686 -> 5685 bytes
.../images/special-characters-image-1.png | Bin 9064 -> 9064 bytes
.../images/static-latex-image-image-1.pdf | Bin 8194 -> 8196 bytes
.../my-generated/webwork/inline-bare.xml | 2 +-
.../webwork/inline-conclusion.xml | 2 +-
.../inline-introduction-conclusion.xml | 2 +-
.../webwork/inline-introduction.xml | 2 +-
.../webwork/inline-title-conclusion.xml | 2 +-
.../inline-title-introduction-conclusion.xml | 2 +-
.../webwork/inline-title-introduction.xml | 2 +-
.../my-generated/webwork/inline-title.xml | 2 +-
...ist-indentation-with-images-and-tables.xml | 2 +-
.../my-generated/webwork/list-indentation.xml | 2 +-
.../webwork/mathobject-string-answers.xml | 2 +-
...multiple-choice-popup-or-radio-buttons.xml | 2 +-
.../webwork/number-or-function.xml | 10 +-
.../1_9_1-A_Gallery_of_Answer_Formats.pg | 85 +++++++++
.../1_9_2-Answers_Needing_Extra_Macros.pg | 69 +++++++
.../2_3-Stress_Tests/2_3_5.pg | 9 +
...set1_9-Answer_Formats_and_Extra_Macros.def | 15 ++
.../def/set2_3-Stress_Tests.def | 4 -
.../1_9-Answer_Formats_and_Extra_Macros.pg | 40 +++++
.../webwork/pgml-data-attribute.xml | 2 +-
.../pretext-source-with-server-images.xml | 2 +-
.../webwork/radio-buttons-with-math.xml | 2 +-
.../webwork/single-quote-in-table-cell.xml | 6 +-
.../my-generated/webwork/tables.xml | 2 +-
.../my-generated/webwork/ww-PGML-format.xml | 2 +-
.../webwork/sample-chapter/sample-chapter.ptx | 65 +++++++
59 files changed, 602 insertions(+), 49 deletions(-)
create mode 100644 examples/webwork/sample-chapter/my-generated/webwork/answer-format-extra-macros.xml
create mode 100644 examples/webwork/sample-chapter/my-generated/webwork/answer-format-gallery.xml
create mode 100644 examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_1-A_Gallery_of_Answer_Formats.pg
create mode 100644 examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_2-Answers_Needing_Extra_Macros.pg
create mode 100644 examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set1_9-Answer_Formats_and_Extra_Macros.def
create mode 100644 examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/header/1_9-Answer_Formats_and_Extra_Macros.pg
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/an-exercisegroup-exercise.xml b/examples/webwork/sample-chapter/my-generated/webwork/an-exercisegroup-exercise.xml
index 727bc7bf1..f2ba82d33 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/an-exercisegroup-exercise.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/an-exercisegroup-exercise.xml
@@ -1,6 +1,6 @@
-
+
What is 1+1\text{?}
>
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/answer-arrays.xml b/examples/webwork/sample-chapter/my-generated/webwork/answer-arrays.xml
index c61e072a6..e652fdc80 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/answer-arrays.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/answer-arrays.xml
@@ -1,6 +1,6 @@
-
+
These answer blanks are all expecting some sort of answer in an array format.
{\left(0,0\right)} = {}
{\left\lt 1,2\right>} = {}
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/answer-format-extra-macros.xml b/examples/webwork/sample-chapter/my-generated/webwork/answer-format-extra-macros.xml
new file mode 100644
index 000000000..b73aa6659
--- /dev/null
+++ b/examples/webwork/sample-chapter/my-generated/webwork/answer-format-extra-macros.xml
@@ -0,0 +1,105 @@
+
+
+
+ Three more flavors, each needing a macro file loaded by <pg-macros>.
+
+-
+
Three quarters, as a fraction:
+
+-
+
The solutions of 3x > 6\text{,} as an inequality:
+
+-
+
Four meters, a number with its units:
+
+
+
+
+
+ {\frac{3}{4}}
+
+
+
+
+ x > 2
+
+
+
+
+ 4\ {\rm m}
+
+
+
+
+ 2");
+Context("Numeric");
+$quantity = NumberWithUnits("4 m");
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+Three more flavors, each needing a macro file loaded by [||]*.
+a. Three quarters, as a fraction: [_]{$fraction}{6} [@AnswerFormatHelp('fractions')@]*
+
+a. The solutions of [`3x > 6\text{,}`] as an inequality: [_]{$inequality}{8} [@AnswerFormatHelp('inequalities')@]*
+
+a. Four meters, a number with its units: [_]{$quantity}{8} [@AnswerFormatHelp('units')@]*
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
+]]>
+
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/answer-format-gallery.xml b/examples/webwork/sample-chapter/my-generated/webwork/answer-format-gallery.xml
new file mode 100644
index 000000000..e388b4ab8
--- /dev/null
+++ b/examples/webwork/sample-chapter/my-generated/webwork/answer-format-gallery.xml
@@ -0,0 +1,169 @@
+
+
+
+ Nine flavors of answer, each blank linking to format help of its own kind.
+
+-
+
An angle, in degrees, half of a right angle:
+
+-
+
Three quarters, as a decimal:
+
+-
+
The exponent in 2^3 = 8\text{:}
+
+-
+
The natural logarithm of 2\text{,} exactly:
+
+-
+
The value of \lim_{x\to 2}(x^2+2)\text{:}
+
+-
+
Any formula equal to x^2+1\text{:}
+
+-
+
The open interval from 1 to 5\text{:}
+
+-
+
The point where y=x+1 crosses x=1\text{:}
+
+-
+
The vector from the origin to that point:
+
+
+
+
+
+ 45
+
+
+
+
+ 0.75
+
+
+
+
+ 3
+
+
+
+
+ \ln\mathopen{}\left(2\right)
+
+
+
+
+ 6
+
+
+
+
+ x^{2}+1
+
+
+
+
+ \left(1,5\right)
+
+
+
+
+ \left(1,2\right)
+
+
+
+
+ \left<1,2\right>
+
+
+
+
+ ");
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+Nine flavors of answer, each blank linking to format help of its own kind.
+a. An angle, in degrees, half of a right angle: [_]{$angle}{4} [@AnswerFormatHelp('angles')@]*
+
+a. Three quarters, as a decimal: [_]{$decimal}{6} [@AnswerFormatHelp('decimals')@]*
+
+a. The exponent in [`2^3 = 8\text{:}`] [_]{$exponent}{4} [@AnswerFormatHelp('exponents')@]*
+
+a. The natural logarithm of [`2\text{,}`] exactly: [_]{$logarithm}{6} [@AnswerFormatHelp('logarithms')@]*
+
+a. The value of [`\lim_{x\to 2}(x^2+2)\text{:}`] [_]{$limit}{4} [@AnswerFormatHelp('limits')@]*
+
+a. Any formula equal to [`x^2+1\text{:}`] [_]{$syntaxanswer}{10} [@AnswerFormatHelp('syntax')@]*
+
+a. The open interval from [`1`] to [`5\text{:}`] [_]{$interval}{8} [@AnswerFormatHelp('intervals')@]*
+
+a. The point where [`y=x+1`] crosses [`x=1\text{:}`] [_]{$point}{8} [@AnswerFormatHelp('points')@]*
+
+a. The vector from the origin to that point: [_]{$vector}{8} [@AnswerFormatHelp('vectors')@]*
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
+]]>
+
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/deep-nested-lists.xml b/examples/webwork/sample-chapter/my-generated/webwork/deep-nested-lists.xml
index 633610b90..658acfcab 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/deep-nested-lists.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/deep-nested-lists.xml
@@ -1,6 +1,6 @@
-
+
Ordered list.
-
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-bare.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-bare.xml
index a47e4003e..695fe5623 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-bare.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-bare.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-conclusion.xml
index e6d5066f9..17bd93e0b 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction-conclusion.xml
index de8da43e8..57166d0ad 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction.xml
index f97623c62..06f84e1e8 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-introduction.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-conclusion.xml
index 996cb05ed..dde4d2064 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction-conclusion.xml
index 892b21c32..22c65b622 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction.xml
index f3a65a86f..250036139 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title-introduction.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title.xml b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title.xml
index 7af89d0ce..579147bee 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/divisional-title.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/divisional-title.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-bare.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-bare.xml
index 2caeacb9a..3c93cc421 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-bare.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-bare.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-conclusion.xml
index 45c1a171b..6fa982e3f 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction-conclusion.xml
index 526bf0b3a..7fdb28f26 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction.xml
index 2a59ef14d..bbf476821 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-introduction.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-conclusion.xml
index c909df126..3b268bf07 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction-conclusion.xml
index 547844cef..b6177297b 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction.xml
index 87a649052..e1a4e819f 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title-introduction.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title.xml b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title.xml
index 70c74a699..6dd98d73d 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/exercisegroup-title.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/function-with-domain-issues.xml b/examples/webwork/sample-chapter/my-generated/webwork/function-with-domain-issues.xml
index d267541ee..83945ef73 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/function-with-domain-issues.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/function-with-domain-issues.xml
@@ -1,6 +1,6 @@
-
+
-
Suppose the correct answer is \displaystyle {\sqrt{x-4}}\text{.}
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/box-diagonal-five-image-1.pdf b/examples/webwork/sample-chapter/my-generated/webwork/images/box-diagonal-five-image-1.pdf
index 321ddb9c52a8cc3394fb528f50c19a1d942fc44d..82c1c338cd5adc9f4b04a32cabca8cfdd1a71851 100644
GIT binary patch
delta 547
zcmaDR_*`(qRaPcTgUQ!fWhGn%7Zg6&dc#V@bK6$$;(**^f)gUzbl7iB=3-GuC7)&5wMCgXgwC%za&`Jq(G7?EzArn%7xe$$GyiUub$8DvBzNvAe(ut|CU3UI
z=UKn|-fG+v4%@JP)vIj_k8f~aGbQH5>1mU7o9Zj1IA^3@{xNH=^pvpKf;NxY<~x4h
z_Ewk0#$%by>`zbBI2NV6xwZC}(AgJ3b3>!w`iob{3Ti!@_+b6xj{)v4(=>JarkSr}
zIA8H-)6O5Za&n(_*6*#jwR6j-71>>R$$p1r_uZ|I&U=@0cYkEMMSp_y-^GDT*9owE
zZ>?K-O3q4sX??iY%yZA!Gd;Y&`TpD8o}*~}Js`@ZZ5U(o-1&(^v!U4NIpVWZ34oyChB!?yd*
zsXSYIyiDXhr}ho=(9+u%l5a4FdFg#gJ$+KlvEHVa<;n&dg<8*cw|LRMbBK{bvsks
zJ${yd$2;?@+gI5|cx;+*w`}QUwVAGG67SS1o!GH_SxDvWEAA}ku8H~Y=Qz@}c#XA3
z&DqxA6rsWy7dTc5+cld!vzFJsBAA)j>{ztOzuGM6TY|vNdDmKm-d>eFF89lM-UnxA
zm%sYq*>~?vKFzM{#Sg0KL?wb9@FGahO;+@FXILPNxBCn
delta 19
bcmew>{#Sg0KL?|TxZ$3yh7UG|FXILPOy38n
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/box-diagonal-thirteen-image-1.pdf b/examples/webwork/sample-chapter/my-generated/webwork/images/box-diagonal-thirteen-image-1.pdf
index 5a040d2bbdd3c93fe312bfb0382f456ad2421e48..41d9fc5d40a9a8731b2818544b524bfa8f6ec74c 100644
GIT binary patch
delta 596
zcmaDN^h{_&02`y(9jr3zq@Je$455~2VR{K-~aP##f@`m^EKA3Eni!|_I}5j
zInK8?u+A&(JgxtE-i9OR=HztB`W&i$y
ztAt$(t-d@BTQ2nWLD1aN=(m016|w@_4>#67SbzATX}{T7CrcTfyc#CErz`uPeSH7$
z>&69})~lX4H#L|&cyjsVf~>s#hxXO#pDUlg)-V4YbG~3sZk@?46Vavzig)#6ch){<
zmwL7|_xY#2n*`F|%zpL0Go|=yqR00jk?*Ugpa1zd=);EtOuH|=npXAD-bvyUJLCVq
zOLpybkA0sgyCnGJyIq(3HO?kIv;1c##3HxCB=(-^SH{N8Qx8A(SK9b!!7IK?6N=wG
zH|nzNSurt$^L)aj54j&ie>Hr`UHtlir`_LejK;i1-;Wz?-`+eowOVySFa6b&B=DJESRhu(PU91bL!vkxxQCc^8fpI
zx3>J>yK})01P=E!vnZ-8QCKFV)RDr(lp-@(^odCuONy6+laS|*oryCorFQ3qG>V){
zJX#cNz3KU!6)n$;zh(GtblaZVe|k>thetR5dWO!3?LYc;$NjU<=WDE6`K`BpZCvM?
zInL3WRp*s9u3q0gZ^NN$CEE^&Eql24?0vS*n4f2p-g@jZPgiLU*gd!6#_@f{(VxnX
zh`yPvcY7_5%(sT6Vcf+xiw-Gy9oyJYV&?bj#hFD#$M_y_n*U%~R_yy+;nBsEGwI2C
z`!0m?)$U9UUmzQEYIEMHzb~2enTu3y#QxN$TI_jtaao*Jd-Kx%Ssx_D?W_dr+pZsP
zI<;?_f_1Q;tgq|6+(RpO{^k1pZm-4t+HLRR=Ca>Yx^e8!n$kosmV?f_?(ZsTzs7HJ
z#{2fQRQ6OwznkS(?+c$4TXl58JInL$ubrR2xqa$`hmES+TCehcJyhRf@Pwb~-*3;-
z;`Uuu7Bk|{sO-+=wqNKeWqkhQ_lXJx{!3pz+P1EbW6oOHd3A!FPu)Ye8gN>Q*Xb>u
zakxXubLt0?Wt{g}id})JV<>LIdoz1Q()wRbG6aELN{|OLY`JY{A
z^8L4yy*YH83@r=|OpTHgO)Zj4%+1q`3{6whOifaa(-O^16H_gd>}&|Bn7orCk$KjF
c*^^~C<(a=QU!82vDaUDS$)&35>hHz{0L~N@@Bjb+
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/box-diagonal-thirteen-image-1.png b/examples/webwork/sample-chapter/my-generated/webwork/images/box-diagonal-thirteen-image-1.png
index 93d91c79f9ce9c6740ce3cc8476d654a8804e7d5..ca2a011d69833a116c7d4a3b8b4966cecf4aba81 100644
GIT binary patch
delta 19
bcmZ1{y-s?9KL?wb9!u55DeE?dhw}meL0$&I
delta 19
bcmZ1{y-s?9KL?|TxXGFONAov^hw}meM6(Aa
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/latex-image-with-preamble-image-1.pdf b/examples/webwork/sample-chapter/my-generated/webwork/images/latex-image-with-preamble-image-1.pdf
index ef8ced05e96b5d6e32c0aba501e930873c0f98dd..5dfc4945bcf21a980e17dc1f6fdafb7baf6a44cc 100644
GIT binary patch
delta 873
zcmV-v1D5=qES@Z|F%o|>K0XR_baG{3Z3=kWt&?qU+At8u-|ti0OV9*80pd5EWa0xyLPXcG)O92v;@PKm&6bA*2N(CJAF|B{${G9Z%RaQ*%Ffv$)
z!h{U6)S`btF->JNOi?Y|aa?pdWL#v?)Yv&0_XlKVww4UnVQhN4S9kXsK6W~vFjF2s
z=SBR4!J)OLNJ-zkB$1hX>Fxt2rpz`)WJ=Igq1kJ0FgSLP!lc&C?fgCL49#*LICFpa
zJ-EdEjSD7M$)bOpdsPe>nMD$Iv+bOs&8coHL?BsP>HYa$VM3b~4Y)Hia|hYR<{OKV
zT()V@rt*w);WypHi%n#T#&+?Nw5HKNa|vibr917*
zAI)8{s?WD^s?K|%4Odx=+jFJVkQ{%WR`tR
zlPFslV7w~vJz3ag=|oapU{aK}w+suQb8VIK#{FHI6JEy%zl7iHuwjuIEKTMcp0B)UlBm4Ox$Z7Rsrn)NpnE*Y%C
zxCFH;+I4@|)#4gjT2h3C+E&Vcto8=U%Aj_4N_G9C3L9jdq?@u?1>A&dQy=7{(h3>iNX9^>plaXg+~jb~VF
zH2eUg_rEdL^r!eo`t$f3Oc9*Iu2e*+x+u_lw|6f8nFV`VpGVPZC8
zHDO|8FfcJ@Ff}+iIW{&nGc;l`V>mEAJU3%yH)UaBHe)qmVq`EdF=j9|I5{~sHa0Uf
zVliVlFq2djRZR+jFcgE~q}tk6TM@jo_i}RZE{-Ay)$o>&KLkK)4jEqb!U>8bMp1|v
zP=U*3)zP0;f#Lp-xY-<-_J5YcW@LS>vY15W`T!qb^$JLn_7xupISM5uMNdWwOdp)A
delta 872
zcmV-u1DE`sES)T{F%o|=K0XR_baG{3Z3=kWt&?qU+At7+zxP+%N6-X*iDSo8g;YSS
zsHLL7wsy21(%^szsX;dT#%FzmfOYlK>5;y~23Xq_L2b@EoI4EFLD&QE8X$^np=cJddvSONtk-IKA~X5Y-8)Q7nQe;5l%T6bv)A09bL?J)Nv-SKt@p4pRLgnb)cxjn
z=MwE3=S;4WMLB=>Djza3izMu3+c`y@Q{7gGK(e;d`~AJbgf=T0aA#)b4zi8SHx@m)
zY}24k*=H2Jrt5gIiA>ShE?$y+@x0!`Ljz4d6^uSKo4Ytkmi9wy8hy7*(tt9zTX;X3
zyJS_JZ|zi-_d*-4vKY;CrPSlu+@}cs=&9arT`>?ErMG{c-8qrz=E*w6tuQjnzNSf(
zEetSTrTCsK?6P!2QXODYl(x4F3!vmWd>6Z6X{uoNgTdwW{!?!>y=SzF-#2AcBsubN
z(^Q>(E&suejpUamiI)~+;E{_matB9=^Vms4Y&3~3(s*T{#YCG5GPP#?4F{JDR$*L%
z+9mC}<7$6#4J|Dx!ot~B%73hEgJflJc6XEN>c=T;kad!7%4X$o6Ru6Yk&}}DjLfeg
zlPAbTaA4+p2WZ!~qucQf=9+xKjQ;~Osl_|B7DMG29NjaMde2NAArll@IFR^@Qw_?e
zHDs!e?3XDrlBI^&pBb^s!Wi`&1Vs{~D8vk?
yz~!>)=ufM_aQ{c#Yz|EOKg(e=vc6VXOrmmqfDd5u3P+Ro6(0yV3MC~)Peuw-G^sQI
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/latex-image-with-preamble-image-1.png b/examples/webwork/sample-chapter/my-generated/webwork/images/latex-image-with-preamble-image-1.png
index 0f9e8c2aa2d9c2e135ab3382513f0b8e6e277f6c..7919aef9aa23274ce39432335b717d39746824cd 100644
GIT binary patch
delta 19
bcmcbZbTMgyKL?wbu0`GC-LE!=|1tmoQ*Q{j
delta 19
bcmcbZbTMgyKL?|TxX%5}v6dUde;EJ(P!tFN
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/randomized-latex-image-image-1.pdf b/examples/webwork/sample-chapter/my-generated/webwork/images/randomized-latex-image-image-1.pdf
index ca4a9ebce629bfee876390033549d606859c7ac2..44d22184f1d7debec6ef65756c638f40228248a6 100644
GIT binary patch
delta 875
zcmV-x1C;!>8@C&xChKcBR6#-8VJlri(MrUoat9BN~P=5;~^5lu!(#f?iU}y4bE>gn0(9ACbA8N
zOhuZquFSw7Axfg-EUmw;YRR(Xz(z3YI)fK0k
zMAV&a`j%JeYQ2T$4x${&8GY_{+dR1}N3jx}(WOp6ed_Afj{U3KZf1BM$}!BtSjC0R
za5{3R=7{g*S;Xy#bH4PP$hYm~@>r<$gv>WDN(Xv`k%fQ!QRazE1=eNqKIEx-ZFC11
z*Ydhi;cHxjW09Nq@XyIGZiGp9b3eVmyFCx5Ge*q@Bhe&vUZE{Ws5+hour+AcTXL}T=Sk6|#u8uMgOW`zJs=1Q!8B8ZHOIBUQ)IfvS#9;eVlNr6!s
zfalPqnHzuSg}_E{yHeA~*6WZJ_6%wAZP#FKw-%sP`4%gxoUi#t_S
zA=bKjWbs*1X3h{9J%Hs?@}N)XKNa3(c$2uu(nnN1QsN0f8_0*TR<1Ng3R2%1UV9^aI4{ng#c#i)m68f&Ze(+Ga%Ev{3T19&Z(?c+
zGBJ~z3>ZRUFf(RmW;ZoBGBq|bVm4wjFl9L~W??vHFkvz>W@0%$JYq02W@ctLH8?Ug
zHZo#1VlpsgIWT5nIA$$8@3y;q6vR6K0XR_baG{3Z3=kWjZ|H4+AtJ-->H?G!FWGa#zb_E>uMBMq{!NTSX@8I1^#}8MdFvvfuxN8&uhxChKcBR6#-8VJlmi(MrUoat9BN~P=5^C1$#u!(#f?iU}y4dyo*Oupr56WIns
zrXtPbq1;9kV-|n7m)u9m+{?h-uMcYxD_M8oQ7ptG$c?Ht3Z+5}^)D&=j6=JtD^53w
zs5{&AEw9qmdJE4TOgWS@`rPfd`{c45#Y%KWdX-Ck%JgbZe|6i#49`P3hItsPxR4p9
zBZq2^_+EaBxE*oMm!1>(w!K^)3)P;G`Q}CGK+iC;kUxLQJdvruy3D>0d8%F;-2uk6
zylzzZ8rR@h%PJwqc_(RcWef=Na^bV5u
zuF01YZvfgrPUc#<(ika7{nzl?Kf=jcnW21WOHQK$HD+cpV=`r7W@0#GFfchVHf1m~Vqr94I59J0GiG5vJTNt8W-((jWnpGw
zIAky|IWRV5Ff(FdG+{U~Gh;JmVUzX@Wdl%&g_B+lF9HGulK}=36?1f9a&&ldWo8O9
NGBPy^B_%~qMhf6nmwW&K
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/randomized-latex-image-image-1.png b/examples/webwork/sample-chapter/my-generated/webwork/images/randomized-latex-image-image-1.png
index 8dc374fda04e09aaf5a6966cf90458ec8bb3ac10..b88e44a1e1f5663e0aa5616ef43bd3c3302301a3 100644
GIT binary patch
delta 21
dcmX@5c1mr7Di;Tvn6BAO?P+f}>vG9*0su~>2A%)_
delta 21
dcmX@5c1mr7Di;T%h`8qZn=7|%*5#7r1OQS=2NVDR
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/special-characters-image-1.pdf b/examples/webwork/sample-chapter/my-generated/webwork/images/special-characters-image-1.pdf
index 9cafd8c114ad5b0542473ad6021f095913910a7c..37e26d8c8348d0da53eb35c79bdfbd9caccc7943 100644
GIT binary patch
delta 749
zcmVljRy&D6GlS)E4zih8R3gCgi3y`9|A>+$@%4tB;nf
z_F1Xty_of4l};w_(61?>o)!KM4O
zy0$I@r=MdScH_L%8&d0Q3sC&(c7R5LeOqd-s?@fhbTV7Ot7tCXy;uT?&+%bf;FmbB}SOn`d&)>`S)S|E``xEUTTy4Ho@=U^z7|fc#6+uPyq|-i%&KKDr_w
z>f99A2J(llFISOa2*#~s*st5xe5)%&Yb?V#ieE5HQv;I_6)Zw!H8U_~Ib=CzH8V3a
zVKQN1H8?Y7I5TBtHZ(ahVK6v8JY_XAFlISqIc7C8Gc#c_VPQ2mGiEq5Wo9-sIWl1|
fIFo)Ai3mjo1_0#Q1f!D=79I&OISM5uMNdWwRgztM
delta 750
zcmVlUfoUC>2@qrEaV?ZDhMmQo;j)4MD;zf^}s7eP`EB+DNTb
zBp7z)%#3Y>n9dEl{6lslfCU%@@v_YO=xS4E!)k0DpOsIr+kB!4ah6VVu}S9Bb!v-`Z$
znKj)2ZuM5*g4x@4Z-G-Dj%hTe>;wLap)0u9=eiplisz~=9(M=0AD~InfYJNm@D!&q
z%_6gUuy9@>jVN>8LHKicy3D8fQjJf1p4qH6C7Kf+C6dxqh(xI<6*7@BOaqYwL68Q@
zoxs^8^%@y^w114f2xTHd1{@s~PrQ&xBt)vbV;V6B^Zt=?1`mzHM8q6iWDy4`qZlQM
zJ&MuTJ2J)-$s?31Q4;msM@rMz);n^L&Hlmqa#jm>b_PmjS+BkIZn?bN+`a#DwKlt~
zVRW?C<-X232j3ift9PsB(Rd=1Rd2iFU|N_5JtW_{LVtHvQw~-I&b_k7A>P!swca^a
zP$Z&@ztDZ&RV_}@QQ5V2aRWS}}$5u|L&ecEUQ}M28+{vU^_J~fc#6*uOs@;*^FLVKDs0y
zo7@yQ2J(mQ)UG1K6pUNR@U(7Q^S!AMt+5T~EPesvUsCFm4;3szVKHMhVrDjFWH>lw
zW;tarV>x0mGB7qVV_`UEIAdZkK0IMDV>M!CHf3ZuIAvxzWiVqoVlgr>HZfyiIA%Cw
gVlb0^6^RHX1_l7++ytbP4i+8>F)#`xB}Gq03I||Z3;+NC
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/special-characters-image-1.png b/examples/webwork/sample-chapter/my-generated/webwork/images/special-characters-image-1.png
index 9cb2110be70f73f878c199f287683e055276ec33..bfa1d0317e1000f7d66269fd1880a396208f59a5 100644
GIT binary patch
delta 19
bcmaFi_QGv~KL?wbuJ!X-uL3rP3n~KuQoskl
delta 19
acmaFi_QGv~KL?|TxSru&8_|v7g316#Ck7b+
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/images/static-latex-image-image-1.pdf b/examples/webwork/sample-chapter/my-generated/webwork/images/static-latex-image-image-1.pdf
index 8e1c49f97ff69bb5d80c6cd4edf262b92d9b542d..a2d3c9b165dd533e86011287d5f93044d84be785 100644
GIT binary patch
delta 1206
zcmV;n1WEgXK!iZBLK=TFK0XR_baG{3Z3=kW?N@DY8b=WRo?o#ajViORw|f^wmJFEM
za_kaAT04Xf=VOhpg*$RDk^Ap6v)lm(Ze^@Cs;bC_otd4P-Ff!e(V__>0nyA5&IuPx
z6D|oiCLlZ@LTX7A5uWgggh6v67!g{44F=yQU@(Cp0#qNIga?14LIuZwNSOD1NUU%)
zL`otVhcFMO0!XUB1kPL&=`qm3t|jaNTzxdcf1rHw?j0RIhSNBiIccMg{#;rjX*Zpx
z*>D*~miFw|II=fCcW5tNgmE%v#A9v7m{t?;OS5S{R?grFs2c^N$;N44n9zQiL`9q?
zux>3@3qP|)?U8?vciqLaTVmsO;CaM-anSj=Z4Bu61^PANCnqn?v>l0=;0)Zy9GYk=
z5c5bC1fW%ecWAb~aLCC3bXFyr&`w$=a54c#F(99hf<>C`d7(XGxS!ErfBh^_iTU
z(6gt)Cev||m6kk&^W1_F%!4eAhPD{fL9b6o_Nky3i*SEtyQ`tI8ZN;1&HtNT9JpoR
zqa5s@`N$ENKa^d~P)AfaObtX42lI3jhr=}na%FOIV=jBB^y>(4mUPW%Pg`v
zzD#i`JPz=l;a6sp0^g=+@4`Mo&Bxr;Q-!a+b8slZo72k}PDMH&dS$0^*h!z<(Q#k3
zHS{Dc+g#NkW;QI+?1L*IwB!Wr#^xpfKe`u+3a-A{krtE&s+mgw0$%Hk!Uh7W(oiN+Q-^HARM+{UxV
zf@ojT(>%iS)PbVtgYq#4qtj$Iw_s3hrs%M+i(iS)X@4Hha=^r8?%+utb8-y0
z!zK+U#)JEaQ~h{u;kS%jQ3Z+sh91#BXwq`i*Wto8D%sidU&E#vuz5SM`D}lKn!g3w
z`wv$i2G_9E*)3;#sHvBt#%j#i8Zp*@i&aP|Qz50dfP%dri$LSW_7pKjG@#N=sPb~L
za11WsMsI=EsN}_{nFeb94r(gcpr-i-wZUL?IT*oOH~UQU{%NMw(3#*l=uAyAxGB3N
z3!2EKiKX^S8P2y*+p6THm`OIajhW3{Wx8u8o>m7+qA
z!H@hM^rYCiqFbmnDuF$J16l{U!jq&PEJ9{5V`VdDW-??lVq`L5GhsGjFk@jbGcz<~
zVlXr^IAlINW-w!AGiGKoWHMr8GGQ}eHexViVK6f@G-P5hG%`43lM)|p152;~lY<{s
U1LX^yliMF32s8>MB}Gq03Ns&04gdfE
delta 1204
zcmV;l1WWsbK!QN9LK=TDK0XR_baG{3Z3=kW?N@DYA~z8Je!s#WiK^h&wRfviqyV9b
za!I*B+vGStY!-)X3%hh*PW0b*#_R%1XceONR8^-0JTsmd+s`~68BG`oh-QXxPPky2
za7nl^0pS4=QcI$U@Ptn!44MJQ#l!DmVs2!o2T8Vuhn2
zQWD8Hgn2L(KvD%JaORpwkAV($EnyGf>Z1|<1Lc$V@9FS4oW{w_Nn3UF$I=o>yXid5
zhRZOrv}eD>k-ht&Lwo5WjFT}V9&0nkw3>ilnoaYuat2Spxlu5hY@J>T6WTA6sEE@9
z)~&^A;R9>b9{GQG-(4Ks5*xPz&m-=OgU-ioV?f6*&~FJpJ9~Ae-AK#?HE!GtAuE6)*|C?SMxMkp@
z9PFU^$Pt)7mR-$IM^q@L2BL_gdAbe6JdjmkR-nkSnHr(rX!RAl7IMMgbQ);=_&K^`
zZR4uq9o?(ypgP`rOZ>N<^woQkaQvy8l3o+x_?EN@tQr!$A=n$*(K@VZM&b=QHevrc
z9&M=tk2wxT?&$rGkH6Zez@shT7?VvLCx5lcSrba45l>)9V6dspeOj!@=YJMV
zc}#Kk`Q&7s2guY53)|{plx9BT7%k1Gll5Y5pY?g%&bwg|&eIu8kMXgNGluEOyD?{;
z2ZN^rXMFkR8-w$LO*SxKCF!tyEKorUr=#?zBt{Yv!QHCA#M9zA$Cte;YnH-9%*#x2pad6dOVKn)-MjuVY7Z0F&4%S#*2o(rOV
zNzd~L>!|}p(Ff&I4$2i^5J%_9Y;M7z+Dy@5VHZCWpVR(4oaKOt%iO_Ao^o;uxWgt5
zC&q*Oh*SM|ZsE6#TvG)O0Ss-?-)M5;rfq`uQWy7}y+BR97ByC5#x{tt23)K{N|_2Ny#o~N{Zs@RFSe(MF`@yLZbFrpi-luw
z0XKRFw8lwZjhbno=I^1Vf-P#AZ&4czM%RN8tabO2Y2H80v>G}S9D>f&B!io>PqLti
zT$)&Fe=o!N4r)6mc`as=?KNU1`QKhpP&TNYf4V$>xOTKYz%~7^-cTbB-B2ki^ceie
z-$PG|y(_wdTH_?J=RX1d9=WlTrXDOpH8nV4I50CXHDxwtH#a#rWn(loV>LK8Vr4mD
zGcaXiK0GxwIAJ(2GcYw}HfA?BIXGowG&N&2I5%QtIbky}Wn+^RA8rFHumY2XA5{b2
S3!9VOA0G%Z3MC~)PeuyY7&e6f
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-bare.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-bare.xml
index cd4d98af6..b7ccc74b1 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-bare.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-bare.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-conclusion.xml
index 7be2a5fff..c8df2319b 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction-conclusion.xml
index 8ace6d69d..35d3ed810 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction.xml
index 147440b0f..58bee8993 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-introduction.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-title-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-title-conclusion.xml
index 5392474cd..4b67e2814 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-title-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-title-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction-conclusion.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction-conclusion.xml
index 800774531..cd8f3ad4b 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction-conclusion.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction-conclusion.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction.xml
index 983f0197e..85c2c5707 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-title-introduction.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/inline-title.xml b/examples/webwork/sample-chapter/my-generated/webwork/inline-title.xml
index 8c02f1307..5ac291688 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/inline-title.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/inline-title.xml
@@ -1,6 +1,6 @@
-
+
1+1=2
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/list-indentation-with-images-and-tables.xml b/examples/webwork/sample-chapter/my-generated/webwork/list-indentation-with-images-and-tables.xml
index 97593bc46..3033d9895 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/list-indentation-with-images-and-tables.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/list-indentation-with-images-and-tables.xml
@@ -1,6 +1,6 @@
-
+
-
Structured item
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/list-indentation.xml b/examples/webwork/sample-chapter/my-generated/webwork/list-indentation.xml
index 4f9e40a9e..bb7ee80d2 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/list-indentation.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/list-indentation.xml
@@ -1,6 +1,6 @@
-
+
-
Simple item
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/mathobject-string-answers.xml b/examples/webwork/sample-chapter/my-generated/webwork/mathobject-string-answers.xml
index 30425e12d..ea5978605 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/mathobject-string-answers.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/mathobject-string-answers.xml
@@ -1,6 +1,6 @@
-
+
-
Special characters used by XML, character escaping: <>&'";
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/multiple-choice-popup-or-radio-buttons.xml b/examples/webwork/sample-chapter/my-generated/webwork/multiple-choice-popup-or-radio-buttons.xml
index b68f09b6a..21ac59d2c 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/multiple-choice-popup-or-radio-buttons.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/multiple-choice-popup-or-radio-buttons.xml
@@ -1,6 +1,6 @@
-
+
My favorite color is
-
?
-
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/number-or-function.xml b/examples/webwork/sample-chapter/my-generated/webwork/number-or-function.xml
index e93f26d26..96a67deef 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/number-or-function.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/number-or-function.xml
@@ -1,9 +1,9 @@
-
+
-
-
Suppose the correct answer is {-2}\text{.}
+Suppose the correct answer is {3}\text{.}
-
-
Suppose the correct answer is \displaystyle {\frac{7-2x^{7}}{x}}\text{.}
+Suppose the correct answer is \displaystyle {\frac{3x^{9}+9}{x}}\text{.}
- -2
+ 3
- \frac{7-2x^{7}}{x}
+ \frac{3x^{9}+9}{x}
Solution explanation goes here.
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_1-A_Gallery_of_Answer_Formats.pg b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_1-A_Gallery_of_Answer_Formats.pg
new file mode 100644
index 000000000..1484bba5b
--- /dev/null
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_1-A_Gallery_of_Answer_Formats.pg
@@ -0,0 +1,85 @@
+#############################################
+### Generated from PreTeXt source
+###
+### https://pretextbook.org
+###
+#############################################
+## DBsubject()
+## DBchapter()
+## DBsection()
+## Level()
+## KEYWORDS()
+## TitleText1()
+## EditionText1()
+## AuthorText1()
+## Section1(not reported)
+## Problem1(1.9.1)
+## Author()
+## Institution()
+## Language(en-US)
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "contextForm.pl",
+ "PGcourse.pl",
+);
+COMMENT('Authored in PreTeXt');
+
+############################################################
+# Header
+############################################################
+
+############################################################
+# PG Setup Code
+############################################################
+Context("Numeric");
+$angle = Real(45);
+$decimal = Real(0.75);
+$exponent = Real(3);
+$logarithm = Compute("ln(2)");
+$limit = Real(6);
+$syntaxanswer = Formula("x^2+1");
+Context("Interval");
+$interval = Compute("(1,5)");
+Context("Vector");
+$point = Point("(1,2)");
+$vector = Vector("<1,2>");
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+Nine flavors of answer, each blank linking to format help of its own kind.
+a. An angle, in degrees, half of a right angle: [_]{$angle}{4} [@AnswerFormatHelp('angles')@]*
+
+a. Three quarters, as a decimal: [_]{$decimal}{6} [@AnswerFormatHelp('decimals')@]*
+
+a. The exponent in [`2^3 = 8\text{:}`] [_]{$exponent}{4} [@AnswerFormatHelp('exponents')@]*
+
+a. The natural logarithm of [`2\text{,}`] exactly: [_]{$logarithm}{6} [@AnswerFormatHelp('logarithms')@]*
+
+a. The value of [`\lim_{x\to 2}(x^2+2)\text{:}`] [_]{$limit}{4} [@AnswerFormatHelp('limits')@]*
+
+a. Any formula equal to [`x^2+1\text{:}`] [_]{$syntaxanswer}{10} [@AnswerFormatHelp('syntax')@]*
+
+a. The open interval from [`1`] to [`5\text{:}`] [_]{$interval}{8} [@AnswerFormatHelp('intervals')@]*
+
+a. The point where [`y=x+1`] crosses [`x=1\text{:}`] [_]{$point}{8} [@AnswerFormatHelp('points')@]*
+
+a. The vector from the origin to that point: [_]{$vector}{8} [@AnswerFormatHelp('vectors')@]*
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_2-Answers_Needing_Extra_Macros.pg b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_2-Answers_Needing_Extra_Macros.pg
new file mode 100644
index 000000000..66f64b2f7
--- /dev/null
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_2-Answers_Needing_Extra_Macros.pg
@@ -0,0 +1,69 @@
+#############################################
+### Generated from PreTeXt source
+###
+### https://pretextbook.org
+###
+#############################################
+## DBsubject()
+## DBchapter()
+## DBsection()
+## Level()
+## KEYWORDS()
+## TitleText1()
+## EditionText1()
+## AuthorText1()
+## Section1(not reported)
+## Problem1(1.9.2)
+## Author()
+## Institution()
+## Language(en-US)
+
+DOCUMENT();
+
+############################################################
+# Load Macros
+############################################################
+loadMacros(
+ "PGstandard.pl",
+ "PGML.pl",
+ "AnswerFormatHelp.pl",
+ "parserNumberWithUnits.pl",
+ "contextFraction.pl",
+ "contextInequalities.pl",
+ "PGcourse.pl",
+);
+COMMENT('Authored in PreTeXt');
+
+############################################################
+# Header
+############################################################
+
+############################################################
+# PG Setup Code
+############################################################
+Context("Fraction");
+$fraction = Fraction(3, 4);
+Context("Inequalities");
+$inequality = Compute("x > 2");
+Context("Numeric");
+$quantity = NumberWithUnits("4 m");
+
+############################################################
+# Body
+############################################################
+
+BEGIN_PGML
+Three more flavors, each needing a macro file loaded by [||]*.
+a. Three quarters, as a fraction: [_]{$fraction}{6} [@AnswerFormatHelp('fractions')@]*
+
+a. The solutions of [`3x > 6\text{,}`] as an inequality: [_]{$inequality}{8} [@AnswerFormatHelp('inequalities')@]*
+
+a. Four meters, a number with its units: [_]{$quantity}{8} [@AnswerFormatHelp('units')@]*
+
+END_PGML
+
+############################################################
+# End Problem
+############################################################
+
+ENDDOCUMENT();
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/2-Technical_Examples/2_3-Stress_Tests/2_3_5.pg b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/2-Technical_Examples/2_3-Stress_Tests/2_3_5.pg
index a52d7f368..ccd05210a 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/2-Technical_Examples/2_3-Stress_Tests/2_3_5.pg
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/2-Technical_Examples/2_3-Stress_Tests/2_3_5.pg
@@ -27,6 +27,7 @@ loadMacros(
"PGstandard.pl",
"PGML.pl",
"AnswerFormatHelp.pl",
+ "niceTables.pl",
"PGcourse.pl",
);
COMMENT('Authored in PreTeXt');
@@ -45,6 +46,14 @@ Context('Numeric');
############################################################
BEGIN_PGML
+>> [@DataTable(
+ [
+ [
+ PGML(q"What's up, Doc?"),
+ ],
+ ],
+ align => '*{1}{l}',
+ valign => 'middle',);@]* <<
END_PGML
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set1_9-Answer_Formats_and_Extra_Macros.def b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set1_9-Answer_Formats_and_Extra_Macros.def
new file mode 100644
index 000000000..4743bd816
--- /dev/null
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set1_9-Answer_Formats_and_Extra_Macros.def
@@ -0,0 +1,15 @@
+openDate = 01/01/2027 at 12:00am
+dueDate = 12/31/2027 at 10:00pm
+answerDate = 12/31/2027 at 10:00pm
+paperHeaderFile = Integrating_WeBWorK_into_Textbooks/header/1_9-Answer_Formats_and_Extra_Macros.pg
+screenHeaderFile = Integrating_WeBWorK_into_Textbooks/header/1_9-Answer_Formats_and_Extra_Macros.pg
+description = Answer Formats and Extra Macros
+problemListV2
+problem_start
+source_file = Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_1-A_Gallery_of_Answer_Formats.pg
+problem_id = 1
+problem_end
+problem_start
+source_file = Integrating_WeBWorK_into_Textbooks/1-Instructive_Examples/1_9-Answer_Formats_and_Extra_Macros/1_9_2-Answers_Needing_Extra_Macros.pg
+problem_id = 2
+problem_end
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set2_3-Stress_Tests.def b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set2_3-Stress_Tests.def
index 7f6db8094..55c0cf125 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set2_3-Stress_Tests.def
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/def/set2_3-Stress_Tests.def
@@ -25,7 +25,3 @@ problem_start
source_file = Integrating_WeBWorK_into_Textbooks/2-Technical_Examples/2_3-Stress_Tests/2_3_5.pg
problem_id = 5
problem_end
-problem_start
-source_file = Integrating_WeBWorK_into_Textbooks/2-Technical_Examples/2_3-Stress_Tests/2_3_6.pg
-problem_id = 6
-problem_end
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/header/1_9-Answer_Formats_and_Extra_Macros.pg b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/header/1_9-Answer_Formats_and_Extra_Macros.pg
new file mode 100644
index 000000000..5953c2ab4
--- /dev/null
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pg/Integrating_WeBWorK_into_Textbooks/header/1_9-Answer_Formats_and_Extra_Macros.pg
@@ -0,0 +1,40 @@
+# Header file for problem set 1_9-Answer_Formats_and_Extra_Macros
+# This header file can be used for both the screen and hardcopy output
+
+DOCUMENT();
+
+loadMacros(
+ "PG.pl",
+ "PGbasicmacros.pl",
+ "PGML.pl",
+ "PGcourse.pl",
+);
+
+TEXT($BEGIN_ONE_COLUMN);
+
+$texTopLine = "\noindent {\large \bf $studentName}\hfill{\large \bf {".protect_underbar($courseName)."}}";
+if (defined($sectionName) and ($sectionName ne '')) {$texTopLine .= " {\large \bf { Section: ".protect_underbar($sectionName)." } }"};
+$texTopLine .= "\par";
+
+####################################################
+#
+# MODES provides for distinct output for TeX and HTML
+#
+####################################################
+
+TEXT(MODES(
+ TeX =>"$texTopLine",
+ HTML=>"",
+));
+
+TEXT(MODES(
+ TeX =>"\noindent{\large \sc {Assignment ".protect_underbar($setNumber)." due $formatedDueDate}}\par".
+ "\noindent \bigskip ",
+ HTML=>"WeBWorK Assignment ".protect_underbar($setNumber)." is due: $formattedDueDate. $PAR",
+));
+
+TEXT("This assignment contains exercises from Section 1.9 of Integrating WeBWorK into Textbooks.");
+
+TEXT($END_ONE_COLUMN);
+
+ENDDOCUMENT();
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pgml-data-attribute.xml b/examples/webwork/sample-chapter/my-generated/webwork/pgml-data-attribute.xml
index 55e070368..6255cb521 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/pgml-data-attribute.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pgml-data-attribute.xml
@@ -1,6 +1,6 @@
-
+
some PGML math: [`\frac{1}{2}+\frac{3}{2}=2`]; and some *bold text* makes:
some PGML math: \frac{1}{2}+\frac{3}{2}=2; and some bold text
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/pretext-source-with-server-images.xml b/examples/webwork/sample-chapter/my-generated/webwork/pretext-source-with-server-images.xml
index b7ba38932..23848c832 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/pretext-source-with-server-images.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/pretext-source-with-server-images.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/radio-buttons-with-math.xml b/examples/webwork/sample-chapter/my-generated/webwork/radio-buttons-with-math.xml
index 4e6d28efc..134340964 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/radio-buttons-with-math.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/radio-buttons-with-math.xml
@@ -1,6 +1,6 @@
-
+
There is math in each option for this question. Which expression is not a polynomial?
-
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/single-quote-in-table-cell.xml b/examples/webwork/sample-chapter/my-generated/webwork/single-quote-in-table-cell.xml
index 1b0bd5d82..f4b587deb 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/single-quote-in-table-cell.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/single-quote-in-table-cell.xml
@@ -1,6 +1,6 @@
-
+
@@ -10,7 +10,7 @@
-
+
-
+
A table with minimal XML source.
diff --git a/examples/webwork/sample-chapter/my-generated/webwork/ww-PGML-format.xml b/examples/webwork/sample-chapter/my-generated/webwork/ww-PGML-format.xml
index 41ce8e826..fc4495aa2 100644
--- a/examples/webwork/sample-chapter/my-generated/webwork/ww-PGML-format.xml
+++ b/examples/webwork/sample-chapter/my-generated/webwork/ww-PGML-format.xml
@@ -1,6 +1,6 @@
-
+
Smart double quotes: Life is about making an impact, not making an income.
Smart single quotes: Whatever the mind of man can conceive and believe, it can achieve.
Regular apostrophes: My siblings mothers daughter isnt my daughters siblings mother.
diff --git a/examples/webwork/sample-chapter/sample-chapter.ptx b/examples/webwork/sample-chapter/sample-chapter.ptx
index 727201100..b30a5bfa6 100644
--- a/examples/webwork/sample-chapter/sample-chapter.ptx
+++ b/examples/webwork/sample-chapter/sample-chapter.ptx
@@ -1492,6 +1492,71 @@ ENDDOCUMENT();
+
+ Answer Formats and Extra Macros
+
+ Each answer blank may carry a category, which decorates the blank with a link to WeBWorK's help for entering an answer of that flavor. The gallery below exercises the categories whose answers need only the standard contexts; a second exercise loads extra macro files, with a pg-macros element, for the three categories that need them.
+
+
+ A Gallery of Answer Formats
+
+
+ Context("Numeric");
+ $angle = Real(45);
+ $decimal = Real(0.75);
+ $exponent = Real(3);
+ $logarithm = Compute("ln(2)");
+ $limit = Real(6);
+ $syntaxanswer = Formula("x^2+1");
+ Context("Interval");
+ $interval = Compute("(1,5)");
+ Context("Vector");
+ $point = Point("(1,2)");
+ $vector = Vector("<1,2>");
+
+
+ Nine flavors of answer, each blank linking to format help of its own kind.
+ An angle, in degrees, half of a right angle:
+ Three quarters, as a decimal:
+ The exponent in 2^3 = 8:
+ The natural logarithm of 2, exactly:
+ The value of \lim_{x\to 2}(x^2+2):
+ Any formula equal to x^2+1:
+ The open interval from 1 to 5:
+ The point where y=x+1 crosses x=1:
+ The vector from the origin to that point:
+
+
+
+
+
+
+ Answers Needing Extra Macros
+
+
+ contextFraction.pl
+ contextInequalities.pl
+ parserNumberWithUnits.pl
+
+
+ Context("Fraction");
+ $fraction = Fraction(3, 4);
+ Context("Inequalities");
+ $inequality = Compute("x > 2");
+ Context("Numeric");
+ $quantity = NumberWithUnits("4 m");
+
+
+ Three more flavors, each needing a macro file loaded by pg-macros.
+ Three quarters, as a fraction:
+ The solutions of 3x > 6, as an inequality:
+ Four meters, a number with its units:
+
+
+
+
+
+