Do not require esint for \int (bug 9498)

We also get a consistent look with amsmath, so require esint or amsmath.
When resolving alternatives, do also take into account whether the package
is available. For this to work, we also need to test for amsmath.sty (which
was surprisingly not yet done).
This commit is contained in:
Georg Baum 2015-05-16 12:29:54 +02:00
parent bec3f7bc8c
commit 08b2859663
3 changed files with 16 additions and 2 deletions

View File

@ -272,6 +272,7 @@
\TestPackage{achicago} \TestPackage{achicago}
\TestPackage{algorithm} \TestPackage{algorithm}
\TestPackage{algorithm2e} \TestPackage{algorithm2e}
\TestPackage{amsmath}
\TestPackage{amstext} \TestPackage{amstext}
\TestPackage{apacite} \TestPackage{apacite}
\TestPackage{apalike} \TestPackage{apalike}

View File

@ -995,7 +995,7 @@ tbond cmsy 180 186 mathord x
# If the wasysym integrals are really wanted then one has to load the package # If the wasysym integrals are really wanted then one has to load the package
# manually and disable automatic loading of amsmath and esint. # manually and disable automatic loading of amsmath and esint.
iffont esint iffont esint
int esint 001 0 mathop ∫ esint int esint 001 0 mathop ∫ esint|amsmath
intop esint 001 0 mathop ∫ esint intop esint 001 0 mathop ∫ esint
iint esint 003 0 mathop ∬ esint|amsmath iint esint 003 0 mathop ∬ esint|amsmath
iintop esint 003 0 mathop ∬ esint iintop esint 003 0 mathop ∬ esint
@ -1021,7 +1021,7 @@ ointctrclockwiseop esint 023 0 mathop ∳ esint
ointclockwise esint 025 0 mathop ∲ esint ointclockwise esint 025 0 mathop ∲ esint
ointclockwiseop esint 025 0 mathop ∲ esint ointclockwiseop esint 025 0 mathop ∲ esint
else else
int cmex 82 242 mathop ∫ esint int cmex 82 242 mathop ∫ esint|amsmath
intop cmex 82 242 mathop ∫ esint intop cmex 82 242 mathop ∫ esint
iint wasy 115 0 mathop ∬ esint|amsmath iint wasy 115 0 mathop ∬ esint|amsmath
iintop wasy 115 0 mathop &Int esint iintop wasy 115 0 mathop &Int esint

View File

@ -1756,10 +1756,23 @@ void LaTeXFeatures::resolveAlternatives()
vector<string> const alternatives = getVectorFromString(*it, "|"); vector<string> const alternatives = getVectorFromString(*it, "|");
vector<string>::const_iterator const end = alternatives.end(); vector<string>::const_iterator const end = alternatives.end();
vector<string>::const_iterator ita = alternatives.begin(); vector<string>::const_iterator ita = alternatives.begin();
// Is any alternative already required? => use that
for (; ita != end; ++ita) { for (; ita != end; ++ita) {
if (isRequired(*ita)) if (isRequired(*ita))
break; break;
} }
// Is any alternative available? => use the first one
// (bug 9498)
if (ita == end) {
for (ita = alternatives.begin(); ita != end; ++ita) {
if (isAvailable(*ita)) {
require(*ita);
break;
}
}
}
// This will not work, but not requiring something
// would be more confusing
if (ita == end) if (ita == end)
require(alternatives.front()); require(alternatives.front());
features_.erase(it); features_.erase(it);