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.
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).