* Add a pretitle style property for nested flows.
This allows us to raise nested flows above the title. So that we do
things like raise the abstract above the title:
```
\begin{abstract}
Abstract text
\end{abstract}
\titleCommand{...}
```
This style is required by the acmart style guide.
* Paragraphs and nested flows extracted in the same order
* Fix `scribble/acmart`'s abstract form so that it gets lifted above `maketitle`, where it should be.
The relative-path computation assumed that a relative path was
always possible, but a relative path can't go from one drive
to another.
Also, the relative-path computation didn't take into account
case-insensitivity, so it failed in a different-drive way
when the drive case was different between two paths.
Closesracket/racket#1625
While done as a tex hack, macros in latex can have multiple optional
arguments. As such, we should support it with command-optional.
Meaning that the type of command-optional-arguments is now (Listof String)
The existing scribble/acmart language in this repo felt more like latex than Scribble. This package brings scribble/acmart more inline with the existing `scribble/acmart` package that was already on the package server. In particular, this commit:
* Remove maketitle from scribble/acmart
* Extends the title form to also have the fields in `scribble/base`'s title.
* Support author information. (Like scribble/sigplans authorinfo)
* Removed unneeded functions now redundant due to the author function. Namely, affiliation based ones.
* Factor out common functions to scribble/acmart and scribble/base into private module.
These functions might make sense to be public, but since they were already private in base
I thought it made sense to leave them that way. Additionally, it might make sense to have the
file be something other than private/tag, as private/tag currently requires tag, which is
different than the normal way where its tag that requires private/tag.
* Add short-title to scribble/latex-properties
* Adds an `command-optional` property which is like `command-extras`, but is a single
optional argument placed before the mandatory ones.
* Create email, affiliation, and institution structs so that authors can have multiple of each.
* Add/improve documentation and history (and bump version number).
Just like the 10pt option in `scribble/sigplan`,
putting @9pt @10pt @11pt or @12pt on the #lang line of a `scribble/acmart`
document passes to corresponding string to `\documentclass[....]`
And just like TeX, it's ok to give multiple font sizes. All but the last
are ignored.
The function bound to `make-my-notes` by `define-footnote` (as in:
```
(define-footnote my-note make-my-notes)
```
) now produces a part with the `unnumbered` style.
This way, footnote sections can go between any two sections on a page
without upsetting the section numbers.
Certain lifted reference forms carried the prefix of the original
section, but in general the section needs to be similarly carried for
rendering elements that may contain references.
Also, fix the contract on `elemref` and `elemtag` to use
`taglet?` instead of `tag?`.
Thanks to Dupéron Georges.
For something like
#lang scribble/manual
@(require scribble/eval)
@interaction[(define x 2)
x]
the `interaction` form generated an empty nested table for the zero
results from `define`. When rendering via Latex, that empty table
could create vertical whitespace. Produce zero lines in the enclosing
table, instead.
The current expader's `namespace-require` has a bug that prevents
it from reporting a conclict when `(for-label <lib>)` creates
a conflict due to different provided bindings of the same name
at different phases from <lib>. Avoid depending on that bug.
The error-logging change in 81aeab1687 didn't work well for me
in further experiments. Change `interactions`, etc., to have a
`#:no-errors?` argument, instead. Also, add `eval:no-prompt`,
which provides an alternative to `def+int`.
Improve the documentaiton by correcting mistakes and filling
in some missing exports.
Instead of creating a table to combine "Examples:" with the exmaple
content, use a compound paragraph (which didn't exist when `examples`
was first implemented). A compound paragraph provides better and more
consistent typesetting; for example, it doesn't make the word
"Examples:" use a fixed-width font in HTML output.
When an expression in `examples` or `interactions` raises an
exception, the error message is rendered as part of the documentation.
Now, however, unless the expression is wrapped with `eval:error`, an
error is also logged.
Logging an error is a compromise between backward compatibility (for
documents that rely on undeclared but expected errors) and making a
document fail completely (which would be nicer when an error is not
expected).
One problem involved context that should not be included in
a generated submodule, while another one was an issue with
the previous repair to the shift to label phase.
This heuristic could go slightly wrong, for example causing "10.000"
to render as "#i10.0" instead of "10.0", but it won't affect cases
where the output already matched the input.
The recursive macro used by `#%module-begin` had a `...` in a pattern
that only matches once, but the match is attempted every time around,
and the `...` list accumulated the body of the module.
Thanks to Shriram Krishnamurthi for reporting the problem.