mjo-common: prevent \Sn[1] and \Hn[1] from dropping their superscripts.
This was a TODO item for a while; a standalone "S" or "H" doesn't have
the same meaning as, say, a standalone \mathbb{R} does. The "n"
doesn't indicate the arity of a Cartesian product, so for example S^2
isn't two copies of S^1. Dropping the superscript was therefore
misleading (and nonstandard notation).
Michael Orlitzky [Fri, 25 Oct 2019 22:31:14 +0000 (18:31 -0400)]
mjo-proof_by_cases.tex: indent the cases and use italics for "Case N".
This is an aesthetic choice that will probably change every time I
write a paper that uses this environment. In my current endeavor, I
think having the cases indented is necessary to separate them from the
rest of the document (to show that they're still part of the current
theorem/proof). Moreover the use of italics keeps the reader from
lumping the "Case N" in with the stream of bold Definitions,
Propositions, Theorems, and Examples surrounding them.
I've checked that this change isn't fatal to either my thesis
(double-spaced) or my polyhedral positive operators paper.
Michael Orlitzky [Sun, 15 Sep 2019 21:01:48 +0000 (17:01 -0400)]
Put \ifx guards on most other package includes, too.
We shouldn't be trying to load "amsopn" ten times, for example. But
testing whether or not a package is loaded is tricky. First, I tried
the \@ifpackageloaded macro: that causes problems with some of my
existing documents, and the "spacefactor" error that results is
apparently a FAQ. But I don't know what to do about it.
The other way to test if a package is loaded is by checking for some
(unique?) macro that it defines. That's what I've guessed at here. It
works in most cases, like when we want \operatorname from "amsopn."
But, some packages also didn't have something obvious to check for, so
coverage isn't 100%.
Michael Orlitzky [Sun, 15 Sep 2019 20:51:23 +0000 (16:51 -0400)]
Replace all uses of \providecommand with \newcommand.
We generally want to know if some of our macros aren't being used. But
before introducing the \ifx guards on file includes, we were forced to
use \providecommand in e.g. mjo-common.tex, since it gets included
more than once. Now that we have the guards, change all
\providecommands to \newcommands.
Michael Orlitzky [Sun, 15 Sep 2019 20:16:08 +0000 (16:16 -0400)]
Wrap all mjotex files in conditionals to prevent double-loading.
I plan to start putting glossary entries in mjo-common, and that
reveals a problem: some files (i.e. mjo-common.tex) get loaded more
than once. And there's not always a way to ignore the duplicate
definitions. So, finally, after avoiding it for as long as possible,
I've wrapped everything in "ifx" tests that check the value of a
macro I define (just like #ifdef HAVE_FOO in C).
The \ifx test was chosen over of \ifdefined (which is an e-TeX
primitive) because it makes the conditional simpler; we don't need to
have an empty "if" block. Of course, testing against \undefined only
works if \undefined is... undefined. But theoretically someone could
probably redefine \ifdefined, too. Whatever. I can change it if it
ever causes a problem.
Michael Orlitzky [Thu, 12 Jan 2017 18:49:04 +0000 (13:49 -0500)]
Fix the bibliography DOI output when the hyperref package is not loaded.
The last attempt at adding hyperref support for DOIs worked, but it
broke things when the hyperref package isn't loaded. This commit fixes
it by conditionally defining a no-op \href in the absense of the
hyperref package.
Now that I understand what's going on a little bit better, I was also
able to eliminate some of the urlbst boilerplate.
Michael Orlitzky [Wed, 14 Sep 2016 15:32:08 +0000 (11:32 -0400)]
Drop the weird cone inequality operators and rename the standard ones.
Most of the cone inequality operators I had (for example, \lekstar)
were nonstandard, and it doesn't make sense to have then in
mjotex. The few standard "curly inequality" operators now have better
names like \gecone rather than \gek which required you to think of
"k" as a cone.
Michael Orlitzky [Wed, 10 Aug 2016 04:17:06 +0000 (00:17 -0400)]
More fiddling to get consistent spacing in proof-by-cases environments.
To get consistent paragraph spacing, the "parsep" value was set on our
pcases environment. This naturally messed up the spacing between the
case label and the following paragraph, so the "itemsep" value was
tweaked, and a custom \vspace was added to each item.
Michael Orlitzky [Wed, 10 Aug 2016 03:14:03 +0000 (23:14 -0400)]
Add \par after the \hfill in each proof-by-cases case.
This is another attempt to fix the last two commits; the \hfill\par
seems to work better than \break or simply \hfill in that it always
puts the paragraph break there and gets the spacing right no matter
how you format the following text.
Michael Orlitzky [Wed, 10 Aug 2016 03:08:57 +0000 (23:08 -0400)]
Revert "Add a \break after \hfill in the proof-by-cases."
This reverts commit 58bb9b9e4a1ee3ae509b7bd7c5aabf5c8986446e. It turns
out that with an extra line break, you can control the (line) spacing
after the case label even without the \break.