diff options
author | Karl Berry <karl@freefriends.org> | 2006-08-27 18:26:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-08-27 18:26:03 +0000 |
commit | 7c55de4fbb8a3fd98697b47aa5500a56a590f2c0 (patch) | |
tree | d9d4dfcca2982461056dbcc7de6d39d353cc16a4 /Master/texmf-dist | |
parent | 5e59e37461e19015d111223f5cfec50a616ecd6c (diff) |
amslatex package amsmath update from latex-tds (27aug06)
git-svn-id: svn://tug.org/texlive/trunk@2050 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
38 files changed, 23639 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/amsmath/amsbsy.pdf b/Master/texmf-dist/doc/latex/amsmath/amsbsy.pdf Binary files differnew file mode 100644 index 00000000000..2348790f37b --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amsbsy.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/amscd.pdf b/Master/texmf-dist/doc/latex/amsmath/amscd.pdf Binary files differnew file mode 100644 index 00000000000..29ea7dce315 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amscd.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/amsgen.pdf b/Master/texmf-dist/doc/latex/amsmath/amsgen.pdf Binary files differnew file mode 100644 index 00000000000..c49f976b59f --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amsgen.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/amsldoc.pdf b/Master/texmf-dist/doc/latex/amsmath/amsldoc.pdf new file mode 100644 index 00000000000..d715f46c381 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amsldoc.pdf @@ -0,0 +1,3355 @@ +%PDF-1.4 +% +1 0 obj<</Type/Catalog/PageLabels<</Nums[0 4 0 R 4 5 0 R]>>/OpenAction 6 0 R/Pages 2 0 R/Outlines 3 0 R/PageMode/UseOutlines>> +endobj +2 0 obj<</Type/Pages/Kids[8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R]/MediaBox[0 0 595.276 841.89]/Count 35>> +endobj +3 0 obj<</Type/Outlines/First 14 0 R/Last 15 0 R/Count 13>> +endobj +4 0 obj<</S/r>> +endobj +5 0 obj<</S/D>> +endobj +6 0 obj<</S/GoTo/D[16 0 R/Fit]>> +endobj +7 0 obj<</PTEX.Fullbanner(This is pdfTeX, Version 3.141592-1.40.0-beta-20060213-2.2 (Web2C 7.5.5) kpathsea version 3.5.5)/Trapped/False/ModDate(D:20060826181836+02'00')/Author(American Mathematical Society)/Producer(pdfeTeX-1.40.0)/Title(User's Guide for the amsmath Package (Version 2.0))/Creator(LaTeX with hyperref package)/CreationDate(D:20060826181836+02'00')>> +endobj +8 0 obj<</Type/Pages/Kids[16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R]/Parent 2 0 R/Count 6>> +endobj +9 0 obj<</Type/Pages/Kids[22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R]/Parent 2 0 R/Count 6>> +endobj +10 0 obj<</Type/Pages/Kids[28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R]/Parent 2 0 R/Count 6>> +endobj +11 0 obj<</Type/Pages/Kids[34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R]/Parent 2 0 R/Count 6>> +endobj +12 0 obj<</Type/Pages/Kids[40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R]/Parent 2 0 R/Count 6>> +endobj +13 0 obj<</Type/Pages/Kids[46 0 R 47 0 R 48 0 R 49 0 R 50 0 R]/Parent 2 0 R/Count 5>> +endobj +14 0 obj<</Next 52 0 R/Title(1 Introduction)/A 51 0 R/Parent 3 0 R>> +endobj +15 0 obj<</Title(Index)/A 53 0 R/Prev 54 0 R/Parent 3 0 R>> +endobj +16 0 obj<</Type/Page/Contents 55 0 R/Resources 56 0 R/Parent 8 0 R>> +endobj +17 0 obj<</Type/Page/Annots[59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R 81 0 R 82 0 R 83 0 R 84 0 R 85 0 R 86 0 R 87 0 R 88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R]/Contents 57 0 R/Resources 58 0 R/Parent 8 0 R>> +endobj +18 0 obj<</Type/Page/Annots[100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R]/Contents 98 0 R/Resources 99 0 R/Parent 8 0 R>> +endobj +19 0 obj<</Type/Page/Contents 117 0 R/Resources 118 0 R/Parent 8 0 R>> +endobj +20 0 obj<</Type/Page/Annots[121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R]/Contents 119 0 R/Resources 120 0 R/Parent 8 0 R>> +endobj +21 0 obj<</Type/Page/Contents 131 0 R/Resources 132 0 R/Parent 8 0 R>> +endobj +22 0 obj<</Type/Page/Annots[135 0 R]/Contents 133 0 R/Resources 134 0 R/Parent 9 0 R>> +endobj +23 0 obj<</Type/Page/Annots[138 0 R 139 0 R]/Contents 136 0 R/Resources 137 0 R/Parent 9 0 R>> +endobj +24 0 obj<</Type/Page/Annots[142 0 R 143 0 R 144 0 R 145 0 R]/Contents 140 0 R/Resources 141 0 R/Parent 9 0 R>> +endobj +25 0 obj<</Type/Page/Annots[148 0 R]/Contents 146 0 R/Resources 147 0 R/Parent 9 0 R>> +endobj +26 0 obj<</Type/Page/Annots[151 0 R 152 0 R]/Contents 149 0 R/Resources 150 0 R/Parent 9 0 R>> +endobj +27 0 obj<</Type/Page/Annots[155 0 R 156 0 R]/Contents 153 0 R/Resources 154 0 R/Parent 9 0 R>> +endobj +28 0 obj<</Type/Page/Contents 157 0 R/Resources 158 0 R/Parent 10 0 R>> +endobj +29 0 obj<</Type/Page/Contents 159 0 R/Resources 160 0 R/Parent 10 0 R>> +endobj +30 0 obj<</Type/Page/Annots[162 0 R]/Contents 161 0 R/Resources 147 0 R/Parent 10 0 R>> +endobj +31 0 obj<</Type/Page/Contents 163 0 R/Resources 164 0 R/Parent 10 0 R>> +endobj +32 0 obj<</Type/Page/Contents 165 0 R/Resources 166 0 R/Parent 10 0 R>> +endobj +33 0 obj<</Type/Page/Annots[169 0 R]/Contents 167 0 R/Resources 168 0 R/Parent 10 0 R>> +endobj +34 0 obj<</Type/Page/Contents 170 0 R/Resources 171 0 R/Parent 11 0 R>> +endobj +35 0 obj<</Type/Page/Annots[174 0 R]/Contents 172 0 R/Resources 173 0 R/Parent 11 0 R>> +endobj +36 0 obj<</Type/Page/Annots[177 0 R]/Contents 175 0 R/Resources 176 0 R/Parent 11 0 R>> +endobj +37 0 obj<</Type/Page/Annots[180 0 R]/Contents 178 0 R/Resources 179 0 R/Parent 11 0 R>> +endobj +38 0 obj<</Type/Page/Annots[183 0 R]/Contents 181 0 R/Resources 182 0 R/Parent 11 0 R>> +endobj +39 0 obj<</Type/Page/Contents 184 0 R/Resources 185 0 R/Parent 11 0 R>> +endobj +40 0 obj<</Type/Page/Annots[188 0 R 189 0 R]/Contents 186 0 R/Resources 187 0 R/Parent 12 0 R>> +endobj +41 0 obj<</Type/Page/Annots[192 0 R]/Contents 190 0 R/Resources 191 0 R/Parent 12 0 R>> +endobj +42 0 obj<</Type/Page/Contents 193 0 R/Resources 194 0 R/Parent 12 0 R>> +endobj +43 0 obj<</Type/Page/Annots[197 0 R]/Contents 195 0 R/Resources 196 0 R/Parent 12 0 R>> +endobj +44 0 obj<</Type/Page/Contents 198 0 R/Resources 199 0 R/Parent 12 0 R>> +endobj +45 0 obj<</Type/Page/Annots[202 0 R 203 0 R]/Contents 200 0 R/Resources 201 0 R/Parent 12 0 R>> +endobj +46 0 obj<</Type/Page/Contents 204 0 R/Resources 205 0 R/Parent 13 0 R>> +endobj +47 0 obj<</Type/Page/Annots[208 0 R 209 0 R 210 0 R 211 0 R 212 0 R 213 0 R 214 0 R 215 0 R 216 0 R 217 0 R 218 0 R 219 0 R 220 0 R 221 0 R 222 0 R 223 0 R 224 0 R 225 0 R 226 0 R 227 0 R 228 0 R 229 0 R 230 0 R 231 0 R 232 0 R 233 0 R 234 0 R 235 0 R 236 0 R 237 0 R 238 0 R 239 0 R 240 0 R 241 0 R 242 0 R 243 0 R 244 0 R 245 0 R 246 0 R 247 0 R 248 0 R 249 0 R 250 0 R 251 0 R 252 0 R 253 0 R 254 0 R 255 0 R 256 0 R 257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R 265 0 R 266 0 R 267 0 R 268 0 R 269 0 R 270 0 R 271 0 R 272 0 R 273 0 R 274 0 R 275 0 R 276 0 R 277 0 R 278 0 R 279 0 R 280 0 R 281 0 R 282 0 R 283 0 R 284 0 R 285 0 R 286 0 R 287 0 R 288 0 R 289 0 R 290 0 R 291 0 R 292 0 R 293 0 R 294 0 R 295 0 R 296 0 R 297 0 R 298 0 R 299 0 R 300 0 R 301 0 R 302 0 R 303 0 R 304 0 R 305 0 R 306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R]/Contents 206 0 R/Resources 207 0 R/Parent 13 0 R>> +endobj +48 0 obj<</Type/Page/Annots[340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R]/Contents 338 0 R/Resources 339 0 R/Parent 13 0 R>> +endobj +49 0 obj<</Type/Page/Annots[465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R]/Contents 464 0 R/Resources 339 0 R/Parent 13 0 R>> +endobj +50 0 obj<</Type/Page/Annots[593 0 R 594 0 R]/Contents 591 0 R/Resources 592 0 R/Parent 13 0 R>> +endobj +51 0 obj<</S/GoTo/D[20 0 R/XYZ 99.895 745.367 null]>> +endobj +52 0 obj<</Next 596 0 R/Title(2 Options for the amsmath package)/A 595 0 R/Prev 14 0 R/Parent 3 0 R>> +endobj +53 0 obj<</S/GoTo/D[45 0 R/XYZ 150.705 603.565 null]>> +endobj +54 0 obj<</Next 15 0 R/Title(Bibliography)/A 53 0 R/Prev 597 0 R/Parent 3 0 R>> +endobj +55 0 obj<</Filter/FlateDecode/Length 256>>stream +xeAK099$f&MwAA^{(m֭ZmDafx7>hZIhJNZfT%&:v9N3Z|]ir#?V4Lhyh3giJ +y)~srKJH*Jv]W +endstream +endobj +56 0 obj<</Font<</F15 598 0 R/F17 600 0 R/F16 599 0 R>>>> +endobj +57 0 obj<</Filter/FlateDecode/Length 1558>>stream +xZr6g:.PHKvfڙ$FMM2THq>@="MLb[j7&% }sgg~{Eɔ6" F'Hbf(z@EIIeR*"|jvjƏ2"$v40e]MM;g<rp4e /G5xL&ѦL: +aR;dFpiaJܙy_D-̚n
͝ +k$kq8_ylqǽWyaa8_)ph:f-J2~ܭZ}rg~\_ +BmPT9' l:{M5F!Z](]}iTur\HFj4E\_@Tg 0~VfmWtPR<0 d +,vaoM1T:O(m;a[H!EĮNJm2TydUZ斪xHk!m--^хf؝$@~.^vV 7N]HE\B +lϢ2q +Q$,hNzj4=ړg;Z}1.,~P=!8Sk
_;i5't+ƛln*sV+6zO2t| z/B7v +nQ~ls Ir'MB}{a6O!$ #-)(V>%DhӕD&Egeq9nԽ +",wq4eH g<>v6?qEv5B-artuoqv7mU.e}zz$r"D!RH2`;x8CLZ=W2{@R SOfn<~ϣV?mZCo*BGn]4{(:3~G +\x3}åνz
Pu +endstream +endobj +58 0 obj<</Font<</F31 605 0 R/F18 602 0 R/F30 604 0 R/F29 603 0 R/F8 601 0 R>>>> +endobj +59 0 obj<</Subtype/Link/Rect[149.709 663.855 229.811 672.766]/Dest[20 0 R/XYZ 99.895 745.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +60 0 obj<</Subtype/Link/Rect[149.709 638.129 326.442 648.977]/Dest[21 0 R/XYZ 150.705 670.56 null]/C[1 0 0]/Border[0 0 0]>> +endobj +61 0 obj<</Subtype/Link/Rect[149.709 614.339 266.578 625.188]/Dest[21 0 R/XYZ 150.705 251.496 null]/C[1 0 0]/Border[0 0 0]>> +endobj +62 0 obj<</Subtype/Link/Rect[164.653 603.199 244.105 612.11]/Dest[21 0 R/XYZ 150.705 182.327 null]/C[1 0 0]/Border[0 0 0]>> +endobj +63 0 obj<</Subtype/Link/Rect[164.653 588.183 260.183 599.032]/Dest[22 0 R/XYZ 99.895 521.705 null]/C[1 0 0]/Border[0 0 0]>> +endobj +64 0 obj<</Subtype/Link/Rect[164.653 575.105 337.948 585.954]/Dest[22 0 R/XYZ 99.895 459.188 null]/C[1 0 0]/Border[0 0 0]>> +endobj +65 0 obj<</Subtype/Link/Rect[164.653 562.027 323.557 572.875]/Dest[23 0 R/XYZ 150.705 713.772 null]/C[1 0 0]/Border[0 0 0]>> +endobj +66 0 obj<</Subtype/Link/Rect[164.653 548.949 344.755 559.797]/Dest[23 0 R/XYZ 150.705 418.501 null]/C[1 0 0]/Border[0 0 0]>> +endobj +67 0 obj<</Subtype/Link/Rect[164.653 535.871 364.404 546.719]/Dest[23 0 R/XYZ 150.705 223.083 null]/C[1 0 0]/Border[0 0 0]>> +endobj +68 0 obj<</Subtype/Link/Rect[164.653 522.793 303.908 533.641]/Dest[24 0 R/XYZ 99.895 326.197 null]/C[1 0 0]/Border[0 0 0]>> +endobj +69 0 obj<</Subtype/Link/Rect[164.653 509.715 296.713 520.563]/Dest[25 0 R/XYZ 150.705 554.732 null]/C[1 0 0]/Border[0 0 0]>> +endobj +70 0 obj<</Subtype/Link/Rect[164.653 496.637 423.958 507.485]/Dest[25 0 R/XYZ 150.705 386.942 null]/C[1 0 0]/Border[0 0 0]>> +endobj +71 0 obj<</Subtype/Link/Rect[164.653 483.559 284.869 494.407]/Dest[26 0 R/XYZ 99.895 745.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +72 0 obj<</Subtype/Link/Rect[164.653 470.481 278.836 481.329]/Dest[26 0 R/XYZ 99.895 479.206 null]/C[1 0 0]/Border[0 0 0]>> +endobj +73 0 obj<</Subtype/Link/Rect[149.709 448.629 350.784 457.54]/Dest[27 0 R/XYZ 150.705 632.404 null]/C[1 0 0]/Border[0 0 0]>> +endobj +74 0 obj<</Subtype/Link/Rect[164.653 435.551 227.002 444.351]/Dest[27 0 R/XYZ 150.705 565.193 null]/C[1 0 0]/Border[0 0 0]>> +endobj +75 0 obj<</Subtype/Link/Rect[164.653 420.536 297.875 431.384]/Dest[28 0 R/XYZ 99.895 745.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +76 0 obj<</Subtype/Link/Rect[164.653 409.395 209.955 418.195]/Dest[28 0 R/XYZ 99.895 541.777 null]/C[1 0 0]/Border[0 0 0]>> +endobj +77 0 obj<</Subtype/Link/Rect[164.653 394.38 276.317 405.228]/Dest[28 0 R/XYZ 99.895 265.812 null]/C[1 0 0]/Border[0 0 0]>> +endobj +78 0 obj<</Subtype/Link/Rect[164.653 383.239 261.014 392.15]/Dest[29 0 R/XYZ 150.705 745.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +79 0 obj<</Subtype/Link/Rect[164.653 370.161 214.936 378.961]/Dest[29 0 R/XYZ 150.705 597.048 null]/C[1 0 0]/Border[0 0 0]>> +endobj +80 0 obj<</Subtype/Link/Rect[164.653 357.083 257.029 365.994]/Dest[29 0 R/XYZ 150.705 480.272 null]/C[1 0 0]/Border[0 0 0]>> +endobj +81 0 obj<</Subtype/Link/Rect[164.653 344.005 290.182 352.916]/Dest[29 0 R/XYZ 150.705 383.834 null]/C[1 0 0]/Border[0 0 0]>> +endobj +82 0 obj<</Subtype/Link/Rect[164.653 330.927 266.797 339.838]/Dest[29 0 R/XYZ 150.705 279.17 null]/C[1 0 0]/Border[0 0 0]>> +endobj +83 0 obj<</Subtype/Link/Rect[164.653 315.912 338.141 326.76]/Dest[29 0 R/XYZ 150.705 155.786 null]/C[1 0 0]/Border[0 0 0]>> +endobj +84 0 obj<</Subtype/Link/Rect[164.653 304.771 343.261 313.682]/Dest[30 0 R/XYZ 99.895 693.21 null]/C[1 0 0]/Border[0 0 0]>> +endobj +85 0 obj<</Subtype/Link/Rect[164.653 291.693 275.155 300.604]/Dest[31 0 R/XYZ 150.705 745.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +86 0 obj<</Subtype/Link/Rect[164.653 276.678 252.767 287.526]/Dest[31 0 R/XYZ 150.705 539.209 null]/C[1 0 0]/Border[0 0 0]>> +endobj +87 0 obj<</Subtype/Link/Rect[164.653 265.537 234.336 274.448]/Dest[31 0 R/XYZ 150.705 394.363 null]/C[1 0 0]/Border[0 0 0]>> +endobj +88 0 obj<</Subtype/Link/Rect[149.709 239.811 247.447 250.576]/Dest[32 0 R/XYZ 99.895 222.591 null]/C[1 0 0]/Border[0 0 0]>> +endobj +89 0 obj<</Subtype/Link/Rect[164.653 226.733 317.109 237.581]/Dest[32 0 R/XYZ 99.895 155.575 null]/C[1 0 0]/Border[0 0 0]>> +endobj +90 0 obj<</Subtype/Link/Rect[164.653 214.762 283.125 224.503]/Dest[33 0 R/XYZ 150.705 249.23 null]/C[1 0 0]/Border[0 0 0]>> +endobj +91 0 obj<</Subtype/Link/Rect[149.709 190.972 268.236 200.713]/Dest[33 0 R/XYZ 150.705 92.908 null]/C[1 0 0]/Border[0 0 0]>> +endobj +92 0 obj<</Subtype/Link/Rect[149.709 166.076 261.349 176.924]/Dest[34 0 R/XYZ 99.895 572.986 null]/C[1 0 0]/Border[0 0 0]>> +endobj +93 0 obj<</Subtype/Link/Rect[164.653 152.998 350.484 163.846]/Dest[34 0 R/XYZ 99.895 506.125 null]/C[1 0 0]/Border[0 0 0]>> +endobj +94 0 obj<</Subtype/Link/Rect[164.653 141.027 297.266 150.768]/Dest[34 0 R/XYZ 99.895 318.75 null]/C[1 0 0]/Border[0 0 0]>> +endobj +95 0 obj<</Subtype/Link/Rect[164.653 126.842 339.94 137.69]/Dest[35 0 R/XYZ 150.705 720.255 null]/C[1 0 0]/Border[0 0 0]>> +endobj +96 0 obj<</Subtype/Link/Rect[164.653 113.764 287.11 124.612]/Dest[35 0 R/XYZ 150.705 447.093 null]/C[1 0 0]/Border[0 0 0]>> +endobj +97 0 obj<</Subtype/Link/Rect[149.709 89.975 283.451 100.823]/Dest[35 0 R/XYZ 150.705 310.723 null]/C[1 0 0]/Border[0 0 0]>> +endobj +98 0 obj<</Filter/FlateDecode/Length 737>>stream +xWMS0W(òca(`u+Kbed+KP>:$K^kޮ&V E35)D*D +5'I%A0/&:繷BjDæi7*'ޖ'9::I5k״$ORa6m"8{i"'\f#EsR-. sMx{gz3pHq$Ɛi{(W2a +RP r<"Lje3A`;#и<:9%ʿ!')bvZx· $2/$#TE
l<O}lcgE +cP>-wIr@F_"g䰱ڣDţpwo dmPō$[9bnjn@P<Cky#fs$ }_olڙuPnNn=A'٨p뷙m.zVr6ib璨\KZ:fSQKf\t,!m°FyrGXs1e20~ZTY +endstream +endobj +99 0 obj<</Font<</F18 602 0 R/F30 604 0 R/F8 601 0 R>>>> +endobj +100 0 obj<</Subtype/Link/Rect[98.899 732.471 202.271 743.319]/Dest[36 0 R/XYZ 99.895 608.922 null]/C[1 0 0]/Border[0 0 0]>> +endobj +101 0 obj<</Subtype/Link/Rect[113.843 722.453 193.295 731.364]/Dest[36 0 R/XYZ 99.895 540.449 null]/C[1 0 0]/Border[0 0 0]>> +endobj +102 0 obj<</Subtype/Link/Rect[113.843 710.498 326.352 719.409]/Dest[36 0 R/XYZ 99.895 441.301 null]/C[1 0 0]/Border[0 0 0]>> +endobj +103 0 obj<</Subtype/Link/Rect[113.843 696.605 223.128 707.454]/Dest[37 0 R/XYZ 150.705 652.438 null]/C[1 0 0]/Border[0 0 0]>> +endobj +104 0 obj<</Subtype/Link/Rect[113.843 686.587 220.845 695.498]/Dest[37 0 R/XYZ 150.705 239.096 null]/C[1 0 0]/Border[0 0 0]>> +endobj +105 0 obj<</Subtype/Link/Rect[98.899 662.732 301.138 673.581]/Dest[37 0 R/XYZ 150.705 92.908 null]/C[1 0 0]/Border[0 0 0]>> +endobj +106 0 obj<</Subtype/Link/Rect[113.843 652.714 210.633 661.625]/Dest[38 0 R/XYZ 99.895 698.002 null]/C[1 0 0]/Border[0 0 0]>> +endobj +107 0 obj<</Subtype/Link/Rect[113.843 638.822 204.448 649.56]/Dest[38 0 R/XYZ 99.895 541.723 null]/C[1 0 0]/Border[0 0 0]>> +endobj +108 0 obj<</Subtype/Link/Rect[113.843 626.867 218.091 637.604]/Dest[42 0 R/XYZ 99.895 163.689 null]/C[1 0 0]/Border[0 0 0]>> +endobj +109 0 obj<</Subtype/Link/Rect[113.843 614.912 200.214 625.649]/Dest[43 0 R/XYZ 150.705 506.823 null]/C[1 0 0]/Border[0 0 0]>> +endobj +110 0 obj<</Subtype/Link/Rect[98.899 594.931 231.056 603.842]/Dest[43 0 R/XYZ 150.705 327.663 null]/C[1 0 0]/Border[0 0 0]>> +endobj +111 0 obj<</Subtype/Link/Rect[113.843 581.039 273.384 591.887]/Dest[43 0 R/XYZ 150.705 262.639 null]/C[1 0 0]/Border[0 0 0]>> +endobj +112 0 obj<</Subtype/Link/Rect[113.843 571.021 205.776 579.932]/Dest[44 0 R/XYZ 99.895 676.665 null]/C[1 0 0]/Border[0 0 0]>> +endobj +113 0 obj<</Subtype/Link/Rect[113.843 557.128 193.614 567.977]/Dest[44 0 R/XYZ 99.895 623.54 null]/C[1 0 0]/Border[0 0 0]>> +endobj +114 0 obj<</Subtype/Link/Rect[113.843 545.173 222.796 556.021]/Dest[44 0 R/XYZ 99.895 377.508 null]/C[1 0 0]/Border[0 0 0]>> +endobj +115 0 obj<</Subtype/Link/Rect[98.899 523.255 165.157 534.104]/Dest[45 0 R/XYZ 150.705 603.565 null]/C[1 0 0]/Border[0 0 0]>> +endobj +116 0 obj<</Subtype/Link/Rect[98.899 503.275 129.264 512.186]/Dest[45 0 R/XYZ 150.705 603.565 null]/C[1 0 0]/Border[0 0 0]>> +endobj +117 0 obj<</Length 90>>stream + +BT +/F8 9.9626 Tf 150.705 763.367 Td (iv) Tj +/F18 7.9701 Tf 295.627 0 Td (CONTENTS) Tj +ET + +endstream +endobj +118 0 obj<</Font<</F18 602 0 R/F8 601 0 R>>>> +endobj +119 0 obj<</Filter/FlateDecode/Length 2973>>stream +xڵZ[o~__R@pfHR4آJK
/Z^s#)#ikxwtU꧱WWw$~obڭ<^] +|:])Qsc՚F[mw;@
"XYow7l\lq&:䲰Q'L0q<YUYAfv:l+:篲Ԛg_f ӽw-¶'+bȄHVaH9ZMks!$.mWE2fR^zo$eB}jU^<=V{wMˍVHs_
l c1"t};]o[pfǶuOq蹳]vMYn<XeMm3+j&縱mV27<Cuz{vMj +i"k +_[B4n +Cpeg[*)|eSΛyT,V:2qv@aO6k +Ѵqw}O6g<+34~߬yXspgĦ4D30nւ\NU9M*3Nr +Vu;5HQ쩢>SbcM_TBuŕi[X[Ǖ9.ΦƙJِV#'t8;q\^C[9"0&3 +Y|TGhmbr s +g #`1iB +9mAA]H}SOD^%KțjY:*~\ +WC<
8ssS.N
\z[;bD@]u^4waT`+zr8S(
H +DAUpisQo86{tpVk=}6Uy{[0n@D!-gEf(IA{Ⱥ"sqð{Yu0IYNJJgB$H:t=D!422-zdcb'fg&Y#YhB, +]8hc_4#]VX1d6 +QεD@:֩DԒ +\|T@t´^Jm;TZ(v9]=vB<F%z
JMqvc,4TcJxbd"۷Y%;DEC%!M/u|E8l4M^`MSw#: +endstream +endobj +120 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F29 603 0 R/F8 601 0 R/F7 606 0 R>>>> +endobj +121 0 obj<</Subtype/Link/Rect[113.889 651.623 120.863 660.035]/Dest[45 0 R/XYZ 150.705 437.023 null]/C[0 1 0]/Border[0 0 0]>> +endobj +122 0 obj<</Subtype/Link/Rect[259.548 625.498 444.603 636.623]/A<</Type/Action/S/URI/URI(http://www.ams.org/tex/amsmath.html)>>/C[0 1 1]/Border[0 0 0]>> +endobj +123 0 obj<</Subtype/Link/Rect[111.103 613.543 249.085 624.668]/A<</Type/Action/S/URI/URI(ftp://ftp.ams.org/pub/tex/)>>/C[0 1 1]/Border[0 0 0]>> +endobj +124 0 obj<</Subtype/Link/Rect[332.651 516.759 339.625 525.172]/Dest[45 0 R/XYZ 150.705 604.562 null]/C[0 1 0]/Border[0 0 0]>> +endobj +125 0 obj<</Subtype/Link/Rect[364.155 514.269 444.603 526.224]/A<</Type/Action/S/URI/URI(http://www.ams.org/tex/amsfonts.html)>>/C[0 1 1]/Border[0 0 0]>> +endobj +126 0 obj<</Subtype/Link/Rect[98.899 502.59 210.729 513.715]/A<</Type/Action/S/URI/URI(http://www.ams.org/tex/amsfonts.html)>>/C[0 1 1]/Border[0 0 0]>> +endobj +127 0 obj<</Subtype/Link/Rect[305.574 492.849 312.548 501.262]/Dest[45 0 R/XYZ 150.705 553.143 null]/C[0 1 0]/Border[0 0 0]>> +endobj +128 0 obj<</Subtype/Link/Rect[332.664 492.849 339.638 501.262]/Dest[45 0 R/XYZ 150.705 579.046 null]/C[0 1 0]/Border[0 0 0]>> +endobj +129 0 obj<</Subtype/Link/Rect[364.155 490.358 444.603 502.313]/A<</Type/Action/S/URI/URI(http://www.ams.org/tex/author-info.html)>>/C[0 1 1]/Border[0 0 0]>> +endobj +130 0 obj<</Subtype/Link/Rect[98.899 478.68 226.918 489.805]/A<</Type/Action/S/URI/URI(http://www.ams.org/tex/author-info.html)>>/C[0 1 1]/Border[0 0 0]>> +endobj +131 0 obj<</Filter/FlateDecode/Length 2477>>stream +xڽYݏwG-+r?% +EI)R!ؗ^R̓/Eї~qvv7/7}ytu]$&NV&U\fuY1^Ήlexnb4\|Luɔwo^u^7p^rW (Њ7OCgSIv-3[){/XQvv7gm6^6?H`O3/q(LM*Nv{l:]JGfDec4mS
2ylrzT{H^$lvH9+]UW>8ӡlµtW͎CeWm.8'w:D +`
Q{Ijq0KOQSibd~6<fj'JRHO -|y5K5,U]TsQ5)ݩZw#^ +lYHF/5XH)Lqo&^r䛮nHՔ/h0pN:Pf\Qs OT:@R
X<NU";J{֟Kn}ޗ48L~<lmRY[I~>:ү8*^m0 nn*OKOo<^@7055HR,J9-Q瞀(y9cGqy=>-vɯ*FZdu.|(!SR Os5!EB <zB.˜R#'־%YBlw>mb(l1Tޛ:B:0f'b8/OH<hC>fd͌dnt
alO`%)ƀC](];E(rwOhOio2rhY5
A5K
!$$D"[~t)Kdq߆K}YWC9kBx_J4Odpr4Kf4W +yi<S¨+vTfIL\TԆR'Uh-:i.MMv9i ,kHII SP3uVpewiA +,ź={UEkgi +|LrKQC7PФדq=;'pO]py!!0xHVd:('?n*|綮v(vg5也mkO9&Gt l(FYyt +endstream +endobj +132 0 obj<</Font<</F31 605 0 R/F8 601 0 R/F18 602 0 R/F1 608 0 R/F30 604 0 R/F29 603 0 R/F7 606 0 R/F16 599 0 R>>>> +endobj +133 0 obj<</Filter/FlateDecode/Length 3516>>stream +xڝZm۶Gh:J}(JpN:n^4+x$*$w@" ,>ԓ'EgYY2[Ya$-ֳ74 +b~%^-w߾.z~ϟzb⟰4"RZVYgr>[ɕ 2{JX
56tn]uk?y/uWu]-2B)f +Kdn.l[ӵ-ZUrdUn63/uy7p)z:։{X+Y^^ +&[6.Q2U?&rUrMM8Hϩ +V4o!@uC]rN̅d`jpe:ݪރ- q3^<a\pEVW+<{gƇUO
<: 5݀aI?Ƚ 9FMjɒK=B)yV '2T¹U'a$m5;zce13Ғ, +<e +LZ- ʹTYحgޟs39)\:8R +MRWKHux4]6&ت] zKWD7nRہLk7~[<<q0> +X%$MJx6D5
^\QsOs%Χ EE
:^1\+6˱~y햢8@U[Ccp
"/>Eۼ##ۀړz`pXe{z!]`2ۃPv_uLQ _*5ktR#T@%, +<8)!p]Ψ܂wm_HMڐb%C^}ә INLݧՄ xi=ဌ.B&$̠xE +F!r4)]⍛pVlG*~@zB`JL} +e~0Tďd
_ +}
>"HBJZ)XY8>CȤ}mpbn9ĊtWmPc>rK +wL`iV_,xATӗ'>ϸGLg{ 'KLvv'oj^U9eʴ","S5F>PO$R^'7xSA{iP?8 +1`RPL pm"6U>z͂ް~frM0.F +tKE
gkK7EiQJ?z <#F~8W~9No3h!a%9.MNjy:N$rrySC:!_Ȟ0涫M
3z\v璉?<QrM:}d)?o@Ruɡ;vm\ߊy9Ӭ, +O5sVĺc2M
\qJ"̋wA2<h2 +75ojq͛`pEϔ0fU<_*>Ue@y׀ݷ-,p
h~l +`&Ў_+'Kw֩]S(?8ݷa0,Y +endstream +endobj +134 0 obj<</Font<</F31 605 0 R/F19 610 0 R/F14 607 0 R/F8 601 0 R/F36 611 0 R/F18 602 0 R/F30 604 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +135 0 obj<</Subtype/Link/Rect[151.784 467.009 158.246 477.111]/Dest[22 0 R/XYZ 115.138 111.837 null]/C[1 0 0]/Border[0 0 0]>> +endobj +136 0 obj<</Filter/FlateDecode/Length 3187>>stream +x]6y
)H'~TТ)ڢ"[AZ[U+Kd)K6mo +˚"3p~y_I9'Tgjs\O.HƓ_ +LJ;V~Mџue!t*A ciѺ4US2̹tVbt3K7Q|9OuS.2D0(RŔ**^6Ɉz-75G])Rʦ^˪6cˀ@*= 7@1-*AН33HB8yZ0ok{CH=B8p^u\0F90k9RjŀIT.ܤ-0onJKKFrS]X l,'t,X}wV4K,jg`ݮCqi,5#(lf@f
JJ6t^) +UX8 +H|n_V4{UT.Qvh#n29+|c Q|٢ŅIV=MJoMѲ\#spo1FZ6VѬW]C xESnzYS+:DlYmgWFB~Bq5OYT+uR<{9s(uS`EY]Wv8kɹ\m*ڨC)*eJ6a2}
L㸈ݲYP\y
)?VQWxJ*8Z3>\j0,\YJOg$1c-;<e*j0>&O/J+-K %dtwS +!Rqo9q`:EE+ +AK`Jiɡ5oީ4@p#vGfЎǍڗ]j=ۄ3rqH";Ne>w@=>d:ZB +gpK@E>p1Kp.й 1oWO< P)x>1=D-N1{\<҄Lu7vC0|>XsFZvtBf@,
2[ +
qy3uOj᪡F a `>^д@ye4D@X'{uaw <%!@|r#Pǃ0|B R/G̣O{g"5`z@j8T.6]]
(XY.>*
;czd2[3E{4_Qy~G
Y<(;A-0d +kւa$Uu%4N yqUalu}
Q +vdx<4<A.w`㺡Rd6xGNEtڔWUs_}~U?x +&w[m֯۳mgju}ոe~٤qw_CU~w_˾o=Ūξn<c)Pg"ͽ`M`dS%}Ќ +YXfM!vN +2^_F$*E*j
F;@`p_w/mzxΪGFA3oTY݆ug~C$>'Xv;rԓY-&S6,0jibgVk"ຊ)m (TtO"֟N_x>R~S^/`bu.gShj?{!HOYeS|k$Mk
x(=I8&5QGL A +@F ԩBѱHDjF_+&Il "ҵsB^U7{s PT8|#r$bK"~=hv9c^T3o8Ta($Lm2pX,na.PYm=9Y>]7vlIa( i .AZ>jK-" +@qlkm(Q +{JU>j#$HK5f\MdSWR74_h(9و?S ؊ڊPme\Vdz3m̬2[+T,Z?y:̟a{G uafmQ]M"7hfQcQin9e;7| +endstream +endobj +137 0 obj<</Font<</F14 607 0 R/F8 601 0 R/F18 602 0 R/F1 608 0 R/F6 615 0 R/F11 612 0 R/F35 609 0 R/F7 606 0 R/F31 605 0 R/F13 614 0 R/F10 613 0 R/F30 604 0 R/F9 616 0 R>>>> +endobj +138 0 obj<</Subtype/Link/Rect[268.97 364.155 283.692 376.11]/Dest[46 0 R/XYZ 153.347 749.85 null]/C[1 0 0]/Border[0 0 0]>> +endobj +139 0 obj<</Subtype/Link/Rect[177.106 169.014 191.828 180.969]/Dest[46 0 R/XYZ 153.347 749.85 null]/C[1 0 0]/Border[0 0 0]>> +endobj +140 0 obj<</Filter/FlateDecode/Length 2116>>stream +xřsܶ3'AE"ohRf:Cԙzr:R':<R>zwIv[= ggM&I(%bRM.ɯC +MÈ! ^tb2xËW??_+(&1%Z/cRl@L'oADDB +f"/?$E(Wxb!l6'[0-"~Mrpry4P!8T{PzP@娒#H+=GF~urxyp2?| Fiw}7jap,ٗyS۰28&ARU4yUֺU6gnmm뼭Gd6ZuV-]<NqrsS.TWn{S;bmhx#yY)t1;Q)"ԅؘNJ=*<w RddhĵQNb$Dzc"A<fHwH}eS3"mw,YX]K7(12(Ϡd)gP|T!瞽SLU+.GU08Qmu4j>G*Ob6g15:BB99bLq@p!v>O q< ~3[cw'Yd^O.}u|Ȝ·>myuwi?a<8LIWKFДa6rap#i\ifؾ!
=ھa,HbONM/.kn]}=nC +ۙ&fM*JVeCk76X`-Bn*%yA8767uEu^Vpt])ԅlCkLjk`OVu!Ǻ*6S^+/tDDŽU^!(Jg +d/%S7
~@IJEn#|VW^9LeU[ V_YlFwi~ݭ")b,$;}Ȏ E CvȮ7(9z/1}Ȏ$ZTC*T9*!J <=iEvd'bKvX"ƾ .qbs"F8'':vYy1u4xHzbv!%:rG|v$iE(&O%<`~&!4܇<{ +Ʀ4w0j ZE)hDZzz)i/,x!];H!A=jP-(R4y\^>B]s<`:QfCc7Nt0`Qnq<d3Cf5|3q
556j=opS`qӨYd+EaKEߕ ga,?h\U,ulM:il}U +|(TEw6V 7^}1^(G=6v*2i4L;Zo[A6a`4v7lSo1s;O^am]2>!;\"jPJNa+o +endstream +endobj +141 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F13 614 0 R/F8 601 0 R/F1 608 0 R/F18 602 0 R/F30 604 0 R/F11 612 0 R/F7 606 0 R>>>> +endobj +142 0 obj<</Subtype/Link/Rect[364.669 633.361 384.372 645.316]/Dest[25 0 R/XYZ 472.609 722.867 null]/C[1 0 0]/Border[0 0 0]>> +endobj +143 0 obj<</Subtype/Link/Rect[364.669 618.417 379.391 630.372]/Dest[27 0 R/XYZ 350.124 258.724 null]/C[1 0 0]/Border[0 0 0]>> +endobj +144 0 obj<</Subtype/Link/Rect[335.868 445.982 355.572 457.937]/Dest[25 0 R/XYZ 472.609 722.867 null]/C[1 0 0]/Border[0 0 0]>> +endobj +145 0 obj<</Subtype/Link/Rect[335.868 431.038 350.591 442.993]/Dest[27 0 R/XYZ 350.124 258.724 null]/C[1 0 0]/Border[0 0 0]>> +endobj +146 0 obj<</Filter/FlateDecode/Length 3575>>stream +xڽZ[ܶs7l;DRypHa)m줅v٥=#Mu5{.FN+^/OW}e&E"Ӌ<SBeU}e0.).rQqE1XE|Ϟ"7Juoo_rړZ÷|f_dZK
wTlEgmuN_piA/m6.p>J,nk$P5^c+GCgPQ[.
0o{lT &n/CvnĂZ)- +Y\Din'ҟnG]+$jWkdE`CcpH3V)ZFTfu՛]a4tP7 +m]m"vt2~o"\pi:'fUg٘Lh+YQvkcw-.t9ꍗbt:j;RA`VP-H[/[-UVY(OO6^Ƌ+S +`I| "4* +HAF
㥮m冸vTtn`{8kf(`Ƒm{w;R%v!,D"M-V2}b +=jAZ[ko;{&ЄƩX4+>GQJuQD~ +S)|T"z2]e{VJ@ĝɩeeǚLv${e:?`"&Td?ttgSt'3.4+ *$8<
77JgwlӂU=5`xZX T-;A6Ёz\kG7c'DYP%H0jB')y!ꔓe$RxLTd +-K!g*{C-hlq{c;nglƓ1UG7WYJ'z\9x + #,XݲYy)n){ŚۃqI#|ķoq+ +rA +N[{XD'M +yj~\zQF?Y3GqwVtq8$49i/:<
7IǢHϮr U.+m*c3\hRy`۾=9mJ!gʙ*Yl|,$\,)NjN"C6x
ӛVT;+@S5wm\W"M:XN鯃QiQ/\`jj. 39ӀIϤ2xeL
S-cn{l +0t{ϵڛp,ywՙ0ɹGɇP16=Pm˷8غF!SE2Cevф<..:R%Lq^_gyD'쯓_M|41
9@:_ZbbAp'0XFObne)В\G9£s7S0ٵM95%PޑO6iP U,PF7/䟟b˲ߢЂ1s@!LX8XTGG⌍uGR]j.I6[qφzo't2Pܣ'#7g4qPF`i*eo..wuY%2kJ8)CBRB+gC/Ʒo$pSJZ2 +endstream +endobj +147 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F13 614 0 R/F10 613 0 R/F8 601 0 R/F18 602 0 R/F1 608 0 R/F30 604 0 R/F11 612 0 R/F35 609 0 R/F7 606 0 R>>>> +endobj +148 0 obj<</Subtype/Link/Rect[278.033 562.655 285.007 574.61]/Dest[33 0 R/XYZ 150.705 92.908 null]/C[1 0 0]/Border[0 0 0]>> +endobj +149 0 obj<</Filter/FlateDecode/Length 2772>>stream +xَ1B^0yؙ>沠ِI@a̒!5ꞃj@eUuW>ɟ"y"yNj4Q\%zaL&?2v껫JŚ]}__?\eLRO"B4,]._&+Bzr%DWRI֙O]YfY?mT!@<ZD³,&{r6á#I#9~y9ΧK
+[ݷfK`džcѰ2k6<ִz_Ɏc#9BU֦7X L4\V<vELZAdF) +rmzm!SeVH% .*ةQ)"ht} 5nXTq)AĽr`t˄n5I$BOՔ$}@n_OhvX@LV@'U"ьEU%qqg +'dAӚ2NXA]+t%rGۗIIΣ,좯f8+35-wФ-M5e +w q&ntN5ќ2_4ۖl#!6|?8w<x*;[
-4n#7# V8YÀ7å`S +e{TMO:fmSUhsh\Fh:)Ko0` wvsj:ѽ.sݰ}4~-2-:`mkq;NL b5K Sd-g}]"1Q:&fӚ{^C]ȵϳ" +sJy*xZ1+vSs\A<:Oo˭do?FnMS N<gj&&\sFu3ћ3m(M0ΧB!EA6'+SI, +Y>Pޝ@
2֎6NO;-ڒV' <7;4Ϣ@*:>D-wICN].Ee߲5['k@SѸ +mEFUrZYra[wy0v_=ٖu刳hi-F16rsir9?b~XcK+Vz+AMRvt`c@lw "9*.qebj1w0݆6ΊGxl6ځ8=ј<6PK9[[VSC3LzH;ɧgE&P4UNIQ@6%4J'L +-힡-i{q16-3%bk۵[͍LۜRo +endstream +endobj +150 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F13 614 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F11 612 0 R/F7 606 0 R>>>> +endobj +151 0 obj<</Subtype/Link/Rect[163.005 691.121 169.979 703.077]/Dest[33 0 R/XYZ 150.705 92.908 null]/C[1 0 0]/Border[0 0 0]>> +endobj +152 0 obj<</Subtype/Link/Rect[434.861 413.029 441.835 421.442]/Dest[45 0 R/XYZ 150.705 437.023 null]/C[0 1 0]/Border[0 0 0]>> +endobj +153 0 obj<</Filter/FlateDecode/Length 3496>>stream +xZmoN-2A:[V +˘Q\_Dž%تSJJMORI-<| ( +4h]4H<Mq}]WtCW)+j5z}:}۲ +RȽsYN3\Uͥ-v$0,6W/.oh;khݦjbY[hK
GzjT,^mncgyp-R8@Hʴ\+a8Il:N̠ \Y%?žgӻ2eB懶-oPJ̣5{G`TUv+8Zw2x =i9TS&2fIrO!zE2ҝG^%YEE])l<.-P9SX `vIS1.ښE]msۭKӵ[ʮab5Vn%f0Of.|npqOgkOCs#`]W.O]_u]4esh[`1SkBEYēS!y*(Z/;jkWe)ڻbӲB8ua䡸Eb<o6X:UԷҶ&Z7X6Iڽm3"+E_J4TWt]qYx6;Jr*j/5,3F++Oai5v,3QGKA\ +\m]A +8IXI$e]%*6'Xȧ&|Z]ʒ|)j[YZCgr6pΕH(%ȏfL +la@v2݄O6
m+xNv4@[ߍcd'Ѷ\"ۭ|j߭zx=6-'+F#ePo~ƊԓRoz#5u
$G52y=QUi;܍bδL༬Pmے`/c](ːaEd1sXyO1lS^;rtc.۬&=1C~]Фcv;Riil2qef%B3q,v)uy1>s+]-aDոG߀3*Q:ɠ>OE^Ey~m9_,nL+Ṋ;aD!{'{Dv}Ih甾k_=чz +{5IGݻj(k7֢7e%;R-C=}R)>GfY(6=%d#b[3x_H^Wuҥ'8$mbd2s!WM`>!j MRLW/Fݖkmo&SF_hhva/=%+P}ҙB`cʤ>.
APΡS"MOCǺݘ$)70f"h!)_-ؘ#I}E<O!CR3\wCdk-xi54"r*g+_j4s;|d6뜜M0} +.?_
!oMki!1FRc*mňm>F^KKr=D7:%Cem`]K?v!-ׄI/ +h%>8l:WR#} +woMfk?ߪ B?<Bgu,$9Oy~L/*ԙF&abdV^f5QT{p#?@} +endstream +endobj +154 0 obj<</Font<</F14 607 0 R/F8 601 0 R/F18 602 0 R/F1 608 0 R/F36 611 0 R/F29 603 0 R/F11 612 0 R/F7 606 0 R/F35 609 0 R/F31 605 0 R/F19 610 0 R/F10 613 0 R/F30 604 0 R>>>> +endobj +155 0 obj<</Subtype/Link/Rect[320.928 686.587 327.902 695]/Dest[45 0 R/XYZ 150.705 437.023 null]/C[0 1 0]/Border[0 0 0]>> +endobj +156 0 obj<</Subtype/Link/Rect[309.847 436.912 316.309 449.505]/Dest[27 0 R/XYZ 165.948 121.302 null]/C[1 0 0]/Border[0 0 0]>> +endobj +157 0 obj<</Filter/FlateDecode/Length 2958>>stream +xڭZs۸_P3鄚 H"%ܴKerD[)RG|{w +f]dYA0KP_\}hu25R<c9seE)hIN1p/H'fI@R y;QMbj%i$MQɈCZzLc3 J*$ i_|^X)X(HX6_?D-_Xɯ`!"e@H?k hMRD@VRE|^\0ME4N.F2GSbbC}t? tO3. +\S~cwI6jƓFh'֓^
$( M9h -J{`UWk4u@1疘0Q$iȟ7*t뱕LLG&~$I!}RR +S8> +pd-WBW9nvd[?9yϏix^& +㟚?P\|;ŭ";CPB-TUqN
+9:f!
N,dQ8,2%?4
e
?Rqby)N>PP$V@ِ4y` +Ch0&ˍYz4hl,fl3? +I)q8
}GGG>%K&R9ʙQ6dT#\(15k0Gv0-N$PN,ZFZRl]<-,|6i ) ClK5Ś{*$2h#5mNi
'u* {3@dc{#L?
n +lį0=gLvK+AlG3ګj + +endstream +endobj +158 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F10 613 0 R/F8 601 0 R/F6 615 0 R/F1 608 0 R/F18 602 0 R/F30 604 0 R/F11 612 0 R/F7 606 0 R>>>> +endobj +159 0 obj<</Filter/FlateDecode/Length 3147>>stream +xڵZݏP @S權"iA5hn8'lv-$gw3R>zwS/ŏp8ًg̲8S\.X:IgZX(=(fK泋_`"33g:avQ,9o#7o^zu~x3_4^M]&+4o?]|{doఱ~t`it^QA# +yw刎O +WJ=Ywx6kKō#+;^3s21NU}ʤ>KpVx9_I@ն|W<LEQwmAx!Ƥ´$Eֻq\t.&ͧ'*nqXYi\h5|8Es3
`ʛ懃EQuU^d>6M,@OeYsGRSbগ%X.MSŭ{vAb5c1bɠWUԺUn5
Uѩ5le}sxI4r<iՑi68}gUgWmƬʛ|ݕsѦ71|B3tM,VhCOg`F̻se) dTEXL*]ip%J(dk' "~hQ( +: 3{ +vX[@5LX$l<W`s*(rjmA,y&i5
VuK[rLc/6J-b?IzP}*z4OGSa?>|4qD.ծպl{쪭mMz/ݡ38EfM%{8O= + +)G2Ȋ2 Օ?4`i_xDE"1
!`mP3>Ogz)AS=vҹƦjÜeii|4cE5%5_Tbd5ȯx)]*sd|,fZgN#KSp/Rn|b|oWEQMއ4Lݢqn_Ik:#_m!Onn@ȧ%,j +[4xqFֿ
|RTǀbNHb?EQ=uP[ȖUSwMeD'{C->-J#}
UQ4B>UmM,֛)d * A\)x[дeg_mnz)Y
.-%_:Mwɰh,h4S[Μ-`ڊj2?^`!MUC@eX%yЖ +P
;"m_53:kB#bl}2[SГzWRͲ{ƷiR=KR~lZ0IYM!`aE{NX_zabuzӴ#VՖށθwbF\@NJ pyĵsaGZ!*_r' #}$p.2Eh6`̱(? e}em"(a?SqfS( +2+_GgIQ$S$ׇk"{[˒@0F +)IσPN}pC+XNq!0ܭ=auc#ƏXpMz9eу +hKTWBJr9F_~9L+
+endstream +endobj +160 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F13 614 0 R/F10 613 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F11 612 0 R/F9 616 0 R/F7 606 0 R>>>> +endobj +161 0 obj<</Filter/FlateDecode/Length 3138>>stream +xZ[ܶNѷ? '7A[ njg4;5%=4Mw(:$;:_P3 Q8*ΗE,$I5S%>߽LR.E?Ͽ}h?w_Ü7/$)_&?QA +9'()M7dڭ&IW)mq
i_\娘G"Ez5wTθ+ mɻ"'iG K7<=\QSig2"<JzHN]!@HR"-۲^c[ƫmg2*J4TeL-Js7SƎU9F) +nʻ
ЊSɢ:ay32sjGW6yH$$V,,~*ĵ +8@1NFk/
Ki@54$/NÀq!<^FBuD^$pBk ֺVaasiΛ:`YA#>, +]tn&I"n*nDCʹMvOvcn9x{-~S8u1ܕ f +n7u#f;Xа{6ud)nS6r3d?6sOV)rMk߁_%Ryȝ7lqs5!bK%皞ÐG!ϳ՜"R2SܼtG½7u}Uc8v~xTlm +3>R]S&xQʫmO* +؋3q_ 8i" Svr,ԝmIˮ.]A;]ʽwej?nV]٤"A2 +@s<TBB<."oam;ۘH +!svS+hx16u(Xk0'_a ~/ϱ#t|T.#ElLsOeГف띛5|D!ZlՃ,I9åTqcäjS+yX +{^&O"-u*wfil`j:~gi]W/=BJ%2.߭$Ar]
[Ga*Z%6L۞c엚T+ù4<im0PfܫdV}&SK 46|q^oMeG&y_`^Y]WgN[}Tvٹ*30m<䥇<nV@;<,]L{R%bD׃{[d$Wb(y2}`cw/0@_)!k
Y83
kc@1O +:j5؋jϗvtLtfjQaM-\6}3E*|N$t1"$/9Twz"xQm)O]rS-s )Y=(AG|a!HbSg\PXo1j%&r;oXI"ٶmƁ"vJ!Ҍ9gsduBmu]uNGr6;<SeE\%Sú7|?l@CnjeAL^cxf[uhUn/؏7u@?
Ԏ'ǐ18"x{vtM?&qm/}oD63m!RF bLռu_/˭؍4ӬYߕP/Ms`ʅ> +cX-\gA/Vp`Ul(_:kiq=eblfh{7-Mc'רva
ryxfk>1-A#`Vx\=5xs♻HUั2&v]=.>bŧ:66oćd037T5`pfvbHH?ܠ3Tq4@Νi}/'趖{`QNʮ4,u'[%$LKd|.&C##r'wO}Bg_pV#[/pK
rmk,ٿ7R +endstream +endobj +162 0 obj<</Subtype/Link/Rect[292.257 703.958 306.98 714.806]/Dest[34 0 R/XYZ 99.895 318.75 null]/C[1 0 0]/Border[0 0 0]>> +endobj +163 0 obj<</Filter/FlateDecode/Length 3492>>stream +xZݏo^<MB!ֆ%!Im4Ӣ-p<wG[_!l.E+KA_pvfvv7|كOBFgW#iSR;r:s(j<:{29QTV"(EĈ$WYWO|xo'y6/?#&y:H3 LL0H4 jj9*jT3)]
4 ˤ<N;yvSZ'SxC9rQ0] )32ȓB2#`$=၄)ӑ)QVX5.h`1*R[=%f z!πCN#!2n;E.-Կ婷^)|Bv0xD]y)R`N'spRTRWK% +Yn>f*6¤戺Z +Yf)iOQ;PTW:Cd6چQvO*鄴yeS9e{ϴ\voeWKi`t^65)n7ECӽQwݬPH(lv0lյDd/[am +qn$fEFmB+9Lj&u^Aͼ
[mה
ZZ5/1ui+ldur9DK
e0 +EficjC ˶JfprO_+:e˶ +TO}>>]
gɉXr9i/9k4
`lc.3wq[yZ=U#yR2A]?}/[z*蹩¦b'n8OPlj)\2跦ȓUz8X'/o)
REՋnPj3$K&)g7mG! +kQ>괤 OStZw+T{5ُcQ6~} S6{>5LsSWd0w%,S[]Zx+hM Ga_1p8yDޞ +Xϲ4w/6IBVjxy&87ܖ{:& [d~CQÞ0y1|5oKM8H@~͕ekgTgUS- =϶ s/1ϸkP2R|iFss6MRP¬T3EEG||6Y 4zt˴'`&m!RFA8X4 e{S&INx*: +ea(G +5l ¾rwk).?"QP>;Bqw +M)4G#qY +OMxj#Ɇ@egnفklɭwa>5ͱ̅0i~mW⢁B
PHH.ҪB3m:bjMۡF\tE4kaQqR. ^ʜ +֬WXbI +XٴP +
e_'l6`HJ:.<$,ޏ,2(e¬.ѐT8į>*Xy˝DuE- BuU!kyatqnx=9 4KcOTbGa/\F:͘FG\܀yFw\g_ֱ/Tv
մ6[4̛CL\_mXΪƼE;;VQ7-`B}K- +endstream +endobj +164 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F10 613 0 R/F8 601 0 R/F18 602 0 R/F1 608 0 R/F30 604 0 R/F11 612 0 R/F7 606 0 R>>>> +endobj +165 0 obj<</Filter/FlateDecode/Length 3620>>stream +xZ[on_<'ЇȎ*$*AtSllDmj.4^{Che[$0`qss':9N,219ejK3)r'IEz<2O'O"ySet_ؖɷ$O?kIi TZrDiN%|rUW'}=[-6ɋ[y`HjhVK7=gX$=;]Y4ᯮ0SĈtYɭ'쬭/GYʏ@-C5U`4d*DZ1vUN/|,&9 +]nUm@w"uO ì[4@7_ي~p^NݾM=#N1qB% "@jSgDQo5pWk?:%&"h 8>}5=IKXb }^%ZI9UsFb7N흚{eԕ&rII"Se#ebC㕥~<s.5kdNu^Nv#t*(&{"_NFif`qQUj>lˏƶSM/ڢH
a,@oL>-\o"stަ>p2h zbӬU*5؎H{QH{B{Rv)4oq΅R:t1tx +aUI/Ş `ibY7{=>9Hl"&"L2E,cd*q~8&d +RDzTU5WHD"2(aЉ s,`3AUBH c:!~УP_1(I|8%h:7TXٮHI"F8/U;#%1X~:PLYso[5bľYq\~LZXKO6ؐ9q]dE(SH[bYWD(`xΗ֗HH{q +it LAH +.AH%e&K9chfΘZ
M&*XŔ-Q*%~CwD%moX@[֥H82ͼ8[-};CiP ZDdM;4FKn3U0jI=wѳqD c= [yI5wu{UPX a ۔v9XuL߂AdEQ2$oObfK֘߷FM*Jd*[2lۮMs +_5똑P<KM?H,YI/J7N<4Œ } +,g~glXl}
Vc{ݹKY\\Կ bz-|k*FoLYJI+u[R$d֑?}!mr[UnRW[sl:}孀m|HB@zM[I!$0va$; +cٴ_c\ݫSF*t`ç; +hI>zudyďTYMēʩQ#OfN#˶Y=]0!C?Aab'ĵϫ7~(\$z +
_C}6BN +IxM +]4-}˹ +fpbdC_4K-(-0ȑD.k/pEH
@Q=ngknm"o=4a{0/d]'Ga( +endstream +endobj +166 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F10 613 0 R/F8 601 0 R/F18 602 0 R/F1 608 0 R/F30 604 0 R/F29 603 0 R/F11 612 0 R/F12 617 0 R/F7 606 0 R>>>> +endobj +167 0 obj<</Filter/FlateDecode/Length 3163>>stream +xڽَ@~(yYX>ؤq` vX0Gp"e;3XSC0*VW}/R<^]߮"2^]WA$w +TpI|GdSQ]!{?(S¾ +NKT)@+eD|k]]YZ?N;J*3(ǚl(>lK44V]m/!1m
DkN.+,."{T#línj׃uy
뤱r::5SCrSXf!8$?8ks8b$|:l5d L^-ҘtMѾ^T&jme^E1 ?;w̌&+|Ol +BYl{Y[@ vVU[ +
I*ՙ\; +orPSMwD2mlf9'ZP$olvus{ Sj^)(m!wC&2G2၊8OE#9j obo44p?㠀Nq +aWz<uVGb0bAf
(1CJl-47;6u6fQ{OsMgmNDVZTόclŔag))yy+<&MTXamBe +SᐃqP*Yt6V8fbVn~X/Th&LkJE>?)PUFK1(ޜAH-HFz6j~sʶ"'5 +Cy^?%,p3*d>;?9TgzҪoi"pWUW}K@7n6'1{>sgH膚6/9 "̩ቚ{g /UK2JM~7
1R`InW0k2pCynzCD6ރE<E9wGMkaU{"\amfA:ZVJbi%CfP` ÿ3FNLbwl<L[WމmxW\`g*rJK0! o/_)fÜ$dрji@͐@B>`l?^]ӦL`*@}f[*ӓ敯nG}}}?2ik +endstream +endobj +168 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F8 601 0 R/F18 602 0 R/F36 611 0 R/F30 604 0 R/F11 612 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +169 0 obj<</Subtype/Link/Rect[399.135 525.604 413.857 536.452]/Dest[35 0 R/XYZ 150.705 720.255 null]/C[1 0 0]/Border[0 0 0]>> +endobj +170 0 obj<</Filter/FlateDecode/Length 2843>>stream +xYoܸ.зS}8 Z)õ).+@x@ޕmv=IuwCj5sIERp8?=_x>3̚.gֲܪ˴ga_OezLY'O;l>;9i37o;?/Yf8M(̈́~W~3ΙU&-,cFB:ss?nr +)ѳ2h"C)x_ѥ2ńU:BsTH1fd=\{!,<)z7I| +Rƍ?HeJs'Maxw]IM]WnSw<KR)@dѪR$$e{OVN3yRR{m34Yv +mȞ%r&)2\:Œa%-+W9O]JkZ]h\{.~)ɴ"Lr9s8batRh㾸*;8/^ ԹY87Oz;yy\m _t7%`QLwis|2fqݘ1\ir⓴}|rIp&
rN*pn}ؤ TWΪ{zQ]U:sY719}E)\_DMׁDWNOő_3&/qKQ}c%l + +(Év)2uɚzH/pmܼ~Uz{ќ-"3 +llwx" oqiU6hLl0#MK wv O4I_ݼ! 2s>T'7ڎOgsLo#гPjW² DYbhG83 X%T +עm[@acce৸ʈalC)tD@4&@v>BW} #EOt,:8ƻfYipJy/DWu_WuחŚC+-'hTevPkfQ(!aC7¸˪^./jK|eY=4H)4䎈=I -k
ZD+p`NOX0vW erk$lo׆ )w+ e[ +x{ +&j/VsݝхStӱJrExtkow/\Qi_eCcnpu{]f0v;!m؇=dG>g"F$MMCua?rCX·h6/F'DMugpO`2O)9D~`7dTaEdRۨ!;1SxU#D$ +<DsJ[S?}_G\Bh3xtw+k[BuVn\i_Y +d"_Ƽl+$Od0qn?i2,%:x.%%*}<o@pTs8M(2A94c;ϭm8M'%z&)bE[bUnGʓNpU.ɷU춏^ 7ٔ +U4[C#mD.ɏuT矠y4,IZgc +FℊTr>*åb6uz=IThew,k2.ǿp-+Zr=E[^*[re^abՇ"A +endstream +endobj +171 0 obj<</Font<</F8 601 0 R/F1 608 0 R/F36 611 0 R/F18 602 0 R/F6 615 0 R/F29 603 0 R/F11 612 0 R/F35 609 0 R/F7 606 0 R/F31 605 0 R/F13 614 0 R/F10 613 0 R/F30 604 0 R/F9 616 0 R/F12 617 0 R/F16 599 0 R>>>> +endobj +172 0 obj<</Filter/FlateDecode/Length 3008>>stream +xڵZm۶N<R%HЙuMyxw%*R9_>)R4,X,}yv/|vY!LeS;3-tֳDfsJ7E(bĉ©,Ǐy6w.y8wEru?rtBfJLhr몭W?|j[2Yc +!)ƓAeGs::$n/QDKv9!
m¥+-zyզ\U۪ktP3~u}}յ]6k&#<2)g|&<l:Kvmջn.x|NGʄǘW$k+'yR5떷m79h
O4S?ѸZÊ4^dDZp,JzhjS-?ۄ:۫MI73S}</ɓ/(~gE<9;K+]g&ODb-*.vؔp0 !,+vEƵQY1UOJY"`S\9px_8OAo0툦)vn pp]lxYPиODʣk:4m}qI&P5a횦Ko]ov<iUf9*%8Cs誗oT]诈骋}{OV}yTD8FߞXSUnX-R|WF/_BTl7
/x},,d<ׁ=vW%iu"F幐yΩt!rGRdCt $B\dզpywv]C'HJ#2K,QS0+s>WU_OUv> .i-
Êx_e?eJ`JÞx$Bt*tn\ 5Od34ه+9L.9GX#gۆSTgXww4-!\v ȿ跁&ٖ+ɡ-/*v>6Yےkz3#mM.ڮ.`bvOx/x5yJV>Czk3|#AYl8CK8F'8A2"9LM13B{_;bn/673} ?K^vB +7 ++wȽeq
_<L.\OWD:PP_uz{%a +XTCWsh}{̲Pڳf.@]siy0E6,म@M@L +"K<D!(M# +udTUMhd#K)D@y 8͟E B.Ԣ71^VX=Zd^뛈N6sf*NbrRBgȒF,2}lDKr1E3.EtVXA?eqޮBrʅ
:.42(w<i195'>elzfR3 +UK9-,'?܊} +Ρ+ ИH\&[ + +O5sy2B&+JēIC}_}DQ# ]hX20eBs*!
d8$L^y'ʈ#?7>E nI&(7g}BΞt[Ž?ATW:(GXuKz_Tc(H<;ַӡ2ǘ3_u + +>ۿ8aTdzS~^t)i<OUkh4&<kRs/M8Vw{DWH0(N:U(鎽Vʻ`Ib¡z@%idRo=qI[Z&=_"S6lgP3f pၨ?pj6$y0ʧ)iޜ\)WdTΈr,2 +XGV8F!g lf3?y7\']RVd6}=TПTcsoc-R;?4e/QQl]JTw(1S}k,B
gEݼ0 +OjQͫ_a[}._/CB腴 +endstream +endobj +173 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F13 614 0 R/F10 613 0 R/F8 601 0 R/F6 615 0 R/F18 602 0 R/F1 608 0 R/F30 604 0 R/F29 603 0 R/F11 612 0 R/F7 606 0 R>>>> +endobj +174 0 obj<</Subtype/Link/Rect[264.362 608.43 271.336 620.385]/Dest[21 0 R/XYZ 150.705 670.56 null]/C[1 0 0]/Border[0 0 0]>> +endobj +175 0 obj<</Filter/FlateDecode/Length 3478>>stream +xڭZ60z8DFcUW/-&\KsH[dEYrtV$E
yfϾ?쫧*%~jvef,dv]xE˳/??|3#/yzӹ?s#~`tYƸOL6peO%0EќX3߽~ȦY`f<EFo_/Ꮦf,jr_<|9||<+h,~8yeQo?[ÙW~Vqn[&3?R'zJibxƅWT0ޖM]ScUyn]Ar}P<pL쇁D>|C4B9-G_һ*ߢDlMDf!H8UN>]&ʫ-pgRTvp]wu#}7
h[JW7N[Q^)YcwESƼKgGn@&Hd 5mC,4bUEuE.ϒڳM8A`22)\x}Ի|Wvܒ
ʞp굜m[m\6˄]5T@VMU$Cs1T*aӄD*ldw0" +#[nm4d1ő +$ +q2AQo PC)PӾRg=&4ŶZ-rV80
И}n*AN?߄@I蔴O<г'@&a9M +14|6Gab,)qKG͑pt"0v +IՃGB +T/w9-F?~s5 ."
{Ѧ߸h)]`|̱RMm
`Bg&Ln{n<2D-G'%Q_mpDTr+iOñ1?Tɜ]}1x +AmmqHv˹B?0
{ zY*՚pdA@V8Ŝz`|rkpsh;W;Bׄp,ah)S6G!CIp]d~/<pU#5&J[ڰp5knW;xs(BX(щyϢS|#ry7k#T%<cq*2g'.| }J1(egx(L|V58oBСD#.dq%w6
o|mzeS- jAr'uR]d3ng9] +AtUwxII~l+J*.)D'qsGӡ +wɉ1/ۭ BQ6a(!U
e>-7<zt@AR(#V\A<],̪.PRFKBGjmh
EN;U+W+oWゐWLx *|#]{9jceZvG7w\n/76Iݺnq +m;Ÿa8d$ +찦&lU^6s|d^9Nr@,>D6Nq1\]7QBẟ=rHawT/vg)e7pV3h,X!"xST+ +H' +f~[D.i5jo
6?<SuxS~bvX %U#E>XV>ﶅstR'\Md8{CWb|`l@8
!됟=<õ"][P;8M6qS۶xm; +G1^Y㌃i`CFvm[e!N.9 wxruB@c' +,^]/Ӻn=uy{;31wWor?8.ԗ8V)ne/W&H⥛Dw#ۂM^r M,+Ϥ>C,}I`d-@bˏ {o!Rg!`ZB'lm,á_PyPj`_Q.qlDLa2vbNכnS, +@=,jR0G?k +l +1Byďs.bL:.@PC +endstream +endobj +176 0 obj<</Font<</F31 605 0 R/F37 618 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F29 603 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +177 0 obj<</Subtype/Link/Rect[314.514 499.794 321.487 508.207]/Dest[45 0 R/XYZ 150.705 538.642 null]/C[0 1 0]/Border[0 0 0]>> +endobj +178 0 obj<</Filter/FlateDecode/Length 2891>>stream +xڕ]۸͛qEQeRW$`A@嵺K{g8,tve5|۫>,E<Zx2F#K&c=GWB4Ku
,|"uC6>OD<4r|.#z"^<C|Go^"5-Wo
Iޓmw.@X&Eg;+`$JPK/8Km X]pNm,0XeX`;&'ueюE|&dӊYFt[WbT096/2br +;ʬZH)TR2_ +}r3!ygd:q$s<eR)6I\Xڼ^5$nedOR͒8C}qEl'momvefQfy${ LVYNie6"6<uъugogw9w;2/.|>_/wδe,1ӄ1~wU=$2@ RAy5"=UX'C~<aʰ@Q[!]Qg)pAGyPsaպLXC;Wմ͌ +OjSgD.6n|ZO~m6ŝ:S +lM +ȗm0=JXzD[:-.uN[chJ-;"h/2;[|_G17k&!v *af:=ѕ!X$$CG{]׃*T +|6FB4L*=xV⌅aօyЫS]2sasmyPeAwM:i[OpӤ+q;J2dLզ>6Xg<@y,FjxHf:U~ShZXLA@X6KS]% +G7 +*n +/Z!Q`E}[YVTЇb[fD,V1M]3|i+DM(MSLIŇdo/܁b_~Yλ#=.TAu{cS(
zفƅBDC$4sta&1@cj|h
BR縐ő퉼-mjh?a +}"Mc[aVJBۃiS2.eNHUB'cBC,X<eͻ69 ղ*sOy>a~QubG<#XB*JL:G%BMoF}#om*Xʇ_+omLwmc=JMg+ ū7cǷHaLTq75"/<E]ч6i5)Ppѫ`|7$,4+YmVw1
CY&u?(-t3_Koi~8̾.EAQX~t6l[YeږY4xA#h6&S
fpVB鑙}JQf{p؎Auc +~Nܯf?g2P+kP`y +endstream +endobj +179 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F13 614 0 R/F8 601 0 R/F18 602 0 R/F44 619 0 R/F30 604 0 R/F11 612 0 R/F38 621 0 R/F40 620 0 R/F7 606 0 R>>>> +endobj +180 0 obj<</Subtype/Link/Rect[339.497 408.894 346.471 417.307]/Dest[45 0 R/XYZ 150.705 604.562 null]/C[0 1 0]/Border[0 0 0]>> +endobj +181 0 obj<</Filter/FlateDecode/Length 2203>>stream +xڵX[o~7#/Y
Êu-R +)#/]C8FXj"l,\omYV??[kXQiCg{>a}?Rˆ3io[K"ק]K`:.qoj~#'R^Q+̭Aed
n t7ܭ7|7N9?3 +.ORu + A H"L{3t}1jl{c* +|$҂t26,rg5<ksg8}"@%GN&҉Dǵvgڼv:TEО͔)]66&rd*7֛PWfk!֛ +xB2jUWKB5M3`)"_9oo0&jRRtW)D"\˝ +0Gk`iwW3-=48
rLmMeӎqsR1r ]l_cd#Ihyz<2+\`.8EBK>PX.JwXOI5+FOg3i^Q.C +H#٩Q{dGx+,X]0Xe%ѕR dUkWWm"s\Fw.(cؓ +lvvjes\>5Q;P?3:=qrgba!n!t,$q1q,8J?MNLٕYEtBt,p0ᖔH/r8ݳ)r^DL}Or_iϟ/w]kwmi +N x +_S-▢/gXjG}!U2(?Pj)ʀH
u]8"zlΐ}KD=}m:Um1a&PwcǏGK{S1S @R8삀~b%ږ5=
H:&KfU8FuC9~B +endstream +endobj +182 0 obj<</Font<</F31 605 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F29 603 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +183 0 obj<</Subtype/Link/Rect[344.192 670.222 351.165 678.635]/Dest[45 0 R/XYZ 150.705 437.023 null]/C[0 1 0]/Border[0 0 0]>> +endobj +184 0 obj<</Filter/FlateDecode/Length 2391>>stream +xY6*bZ"Lv.Ef]\\i[.%% wCɲW) }2Ǽ87{x$dx"7D`"&t6z$bIzf,=,sŔ'ә| Nf
iAK:ͳMxfBAL6<p.eJn}Ȣ.d3+OJmzlkSQ%A@l{M%ZijkK~ɶ^5
c(zFW喆Uۆu$`Gj]ɪfҬ#IC
\_tVMvZgLw*ŀq1TaO@^@&זث_-,Vk˯iu +\l]. +
oNw -(><#&Ao3yZg!xp~Y\ѷu))cHfo㙍hBH0&Ɉ>1vش0j0>i3gZ,Q6ĎUGi^(쌻1|~xFCf4R7$&h,]/2f&kTy>j#M`d$O<]D+
Ž! N3ϙ1?&{?K#>Kb90 +(r` +SVڒ4m'x+`u;V##Jpu~AL zr. zi"]-i,,w +TڞU +XRxX5/bQ};e\xzŝ{u_M|(Flu˯iF-؛$Tt+Shz +,@
#\6|H֕1Fڷ:Z] +GZNiۦ]Wyƭ H= +0SAzr棂-#蓂;I[ + +endstream +endobj +185 0 obj<</Font<</F31 605 0 R/F18 602 0 R/F8 601 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +186 0 obj<</Filter/FlateDecode/Length 1996>>stream +xڭX۸~q1+R\aMC@
ڦm5z8wCʒä)!g8~"cEz( +"K#b[<d-WHWj887i`E*R<,""s$#Z "D$/eו́~4CQ赒J.V"I?-Ql}a{e' etg ȫWn03T 7'X9@Gp/ףqwl +x ;/S6ңBކ^=/D4溧<j;p|1j96N<TmAnerTnbnm~n9Ӿy%CbnO+N8, m,U"4ȃZ6KO4
׃-ʾ\ +:.H}j2PmO3ޮ4KƄ +ɈxOxK0m}5lhawv^LH+RZ',"Y%zORfw +n97:sV
JNEo>%bYGc9D/XU4HF?JOZ(lx߬lܰȢL, Ӆ`a,\/|(O!Dk9 DX1f2=i'?9]v +2W,}r+Q5itc5z?(-Èpn 3 +ṕTȯYլسrD2KW27O<9ch$S
rW=0}9+\"V>:l8L
5Isu
VPqR;k)A']o`ʡW~z?K(%
U5l߹.IL¤A8:(+um
̓]gB<!߭*{];wIlƦN +hڇFUؖYLK\vZ5R_a:}A k!PtLG6ᐊ&`B씥|.mh8p`gRXr<͏iFaQ%>Qz)XX$x~@atnuz5NUe]B>K9$sj +YZT;aQs=jQ@$$ +endstream +endobj +187 0 obj<</Font<</F31 605 0 R/F18 602 0 R/F14 607 0 R/F8 601 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +188 0 obj<</Subtype/Link/Rect[201.978 445.365 208.952 453.778]/Dest[45 0 R/XYZ 150.705 437.023 null]/C[0 1 0]/Border[0 0 0]>> +endobj +189 0 obj<</Subtype/Link/Rect[182.859 344.094 189.833 352.506]/Dest[45 0 R/XYZ 150.705 437.023 null]/C[0 1 0]/Border[0 0 0]>> +endobj +190 0 obj<</Filter/FlateDecode/Length 2006>>stream +xڝXYs~WGpT́k7hMŻE?,DHD @OH#Q^ʘϯ{xr1;$gy"v㈥Q<IdNf7@p2l<eO"L$ȃ_>S9.V
~8{qFt_ I']7 B"`^mWe9# ,cCs~~>Wsg@\۷o\yhh\7-ק,,n5AA,C_C;p++K5ն/>ƩFYw.nhwەg68SR2Gf1UQX1E5g2.*©F 4!_)(Fu9'aOV<iEx +Zƪf +iTE^CT&g!2ѕݺF62 D-WEFɘ0G2A~ۖF<F0^c&lfU} jSc^ x-и*U- +=3|) l39t|Ȍ| +\խH4fɨ&VU.av
ꫳ)YQ|[.ePGfcc
×]#FH>4_,.1@P9f
miMxf%;jj%~||8py>uߞFI\NO.wvݲB|>LƘΡvBŀY3LLbɿGg$yrxF<L̒@4Kt<,Vhe[lV"M>8րi>ft?Tx K,-eqSKۺx(H9}B +wDZM]̇FۚH,P3.t
_=Ohvp)lOd겁bU[3gA}!^T|/oJeF.}czͲ4N+`Es7kY6;Uv[Qq;{WM\lG@N{"8~RG`5',J@uprk&1tf8to*7VsKvMG͒ +yaލ<STY7_QǞ{*cB2jfrb0&`G.EEKP:&~Jaj=\7,$YٯKHZf,`X%<,0>冖fĴ2z+ R尢Xe+β<= ?!(rBfY:\R#;LKX42`cb_l?~˼s +endstream +endobj +191 0 obj<</Font<</F31 605 0 R/F18 602 0 R/F14 607 0 R/F8 601 0 R/F35 609 0 R>>>> +endobj +192 0 obj<</Subtype/Link/Rect[448.558 667.007 476.01 678.962]/Dest[31 0 R/XYZ 150.705 379.84 null]/C[1 0 0]/Border[0 0 0]>> +endobj +193 0 obj<</Filter/FlateDecode/Length 1779>>stream +xXmo6_}iDzklH
]-R.0Fc-zq%9/w䑲(M
}xw<>1yIIDȣr$$NI2h2&szs<4v^7S:.ы)WGh<IH#O&2l: *V_Mb&ߡx4u߫pP6yyG˺Aa-3q*(RtD{M\JIGBvr0;wsgw9r!ZC!i!(>#Q6+6͘/ekYn,JIP5W(tW:ݦaWM:2*ԩzfO39M?iA|y**l-JPv +u㘐QW`C*|H#jbIWFϦAH]NsudX$[5xj~%sG'Q뎒1GM5ZM;ʍ:ng8U):k]Նq9ݔR;aƸ +̜渉QI$a=>P8@oB-~/ ADxO9Yz>aq$fN(51>5PC)HRNXYz([,p\vUoډʼn<ͫk6N(#9rXD86`x+QŅ @]0q9 \ed +dufDkkqwy<zHɀe5˩1h@GơmDI̭QNnYHBb_$a~f*ZaAdM҄˒9AF+uu*~*tHACJNjibILϿ
#bG]j +&`WEO/ /1گMݠ-g>HUHO<[cjuJ3 +V=(fJ-ȈzpKt*} +KS}Y7R+ԕPeB4䳝;w) +endstream +endobj +194 0 obj<</Font<</F31 605 0 R/F18 602 0 R/F30 604 0 R/F8 601 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +195 0 obj<</Filter/FlateDecode/Length 2682>>stream +xڝYoFЗC( r|8i +hӻV2]fvfv/wvy~'(RN.ibfHlrDJO'2db+U$5")t4:}3,1:ziGiGn\>gܓ&W7uٔC6L!FTOċL)]\[jlj]
Telcg4ʹ;z]6{I.@GFE + 5H2$z})M!k3&5lomxJ4W=cxL9:fB]a? +H3s?,vy9 ;wmj
yu.:kSΧ*nDzn{+:jf(xwP~δX.V:CKߟM$SHr$5U +k^uz_t1!2Ab!&J<BӮEV/F31}~ +XՏǚc-AɊ<ukL`M;X1؏RT sP$T;UkAÙMDٹnB ]H +xtVx.M{YA}Y6(9~SW3 +=zj^%/FLw]Lee@ p\0S"D%h9qq +a8:6}Zh=Q6ץ"~7ˁm'`@i"Q3v=n(Cpjꠡ_'ς`("EUY~V]ݸX-^4\h(OwҙPBnj͌A_Q@\vlM:S"3x:.ոDYbO0[䐆O={z?bȰ&b"hLʭ +'
+B}^O,8. +/[Shi8JH@gX_؏,\::Zvtb3x)<$9v9gUħ50-0o"̈,'zb
B2B% ++x3 boUuM~o9D|;.znƌ5 +!pkvy(XTFwf2}a)˘Mu2ﭣf1q2ZQz] h5FOdwsm+ +YOGdLev9qY9n@Arfgm$F1L`1Hv,O=KdUiY4ChC2#,CAp?HermtE#< aXd-GJH`3)DủeHe/^\,
+endstream +endobj +196 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F29 603 0 R/F38 621 0 R/F35 609 0 R/F7 606 0 R>>>> +endobj +197 0 obj<</Subtype/Link/Rect[414.383 326.667 441.836 337.515]/Dest[43 0 R/XYZ 150.705 490.257 null]/C[1 0 0]/Border[0 0 0]>> +endobj +198 0 obj<</Filter/FlateDecode/Length 2082>>stream +xXK۸;#t$+!˧7cgRvf⑫RɁޭ5YrE@wٟ_l<jޭ\dyJHDIZoW<~w8no|]^__[Z
U.$LsE"JS/GllO0n +BDv_LYy[銡~k{gq*P foP5`Ov紻c҉lcE%6g+pIHb_N婈TI8WvT~h? +Ocjr]JυLdVj"\ÀBؒZ~gݒQoyg Ẍ́>a"]kL*"&tȃaB% %M0sBwmAte辰a T"]3%ynTeQv05zo=wY +NMǛ[1WIb 0)@"'3KSEcړ[@?L'V@I.VV;Tt@#!T-Gbm/nsߍ@k3%=`$Ċe:bWEU0VM};^IiKP d]jgnK<t&)cC@Q[bQFu179%Ɖv;fj:e
nUA)ch.t֧R\D9w<YVf ~Rc0apc NǣU톥cW) ۵vT.@>UK'|nI7%m>$TmMS?w|Hvev6hLJʮ@x{<;
G +A7=="뫟HS\xiYnSN`rd>*1[+24af +>X έ]H
6DK.`GvkHhҭh_t +wߊc{02& |"~o) B:M $g ZjgC/q1 Jd]{zspQzĒQQS +<F |:eHG|)tєh|M^
FE41BfU?ttߌVƞS]0@B|!,vY\p'ċ_NKPғrI0O@mk0/Epy +z&{ѷ0gWZ[]9F(IY^Խhxӆma>T؏=9U(!'Y0Rjhk\#y,X>轿cG2B<+[ϗŊBnpzjWs=t +endstream +endobj +199 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F38 621 0 R/F35 609 0 R/F7 606 0 R>>>> +endobj +200 0 obj<</Filter/FlateDecode/Length 2356>>stream +xڽXo~G5nv$ +wki%,I6@,)aR담\3|3o0t2_Mx,N&Y*L|9D:A'3YQRd)u6_.ޝoAvJ6%>s]Tv:_W՛|?I#5GO^t:WʿWLݛ#=Þaߺ,Ze)F}IjhgQ(ygF3d93IBݣۖ3%dTU9:e2tdAY嶶APO]TO2.UA.iޤGؒsvKw S9cCrńTC18Q8Ly;@ުrW{UYl1{Xnc5)?z#u +ͻZn%B8i=O @-
O<"nYwEIT͍wQd Ӕ9rvI)x0qdrHY +vTt53hm릲M=բ?|5=Hc@GIY6-r?M[{
I8ǩg*h^лb,9Ӛ^|nr]f*9(GDLLȹ?AՖ)sv4sG8 +qX`IA1p&,4H N\'%=ؕpgMO7z %S!M)\ǵPW9 +쪕Sb + +2$D=Á=!* +ҽ|6R=^7 +&axR1}0~KOa4_A|Z>đ()J1-Ef7V*xq[u yc2aH!CH;[:_N=t"gOq[*@w`H|V#Lqtu6bxl'_:ft#G$ +/iQ<oFǀEGl\kBy4/\(+c1OǦ@acוdwk#~m94P8 /;Jzip{42c~Sg#;)QES_1~TvQsĀeD2)9Y\>_r2_b)j0ϽĆ ry*P]ǖl"5ky,X~X`-lG0HhLҼS?܁ٿ<=}xx`֧u>mY0l8ø^~U2[njhnj(altXn +^Oٌ,fP31t[<#x˻ZdI929cκ:WQUנ)Ɠ4x>Ldc^9V1FWv}uHMF{1a)UgHFwts)M|8y8$v# ٩y
o2i2̌REmK9KzϛJ=^(MwĽ;{+T|.ɠx_h*y.`v[_u=i:~l
U+@gxӀW8ܗ%}`V/+GFM{o<k5r>Ɵ${BEhMu4?dq)N k20{slt7Nc_FLs +endstream +endobj +201 0 obj<</Font<</F31 605 0 R/F37 618 0 R/F14 607 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F29 603 0 R/F7 606 0 R/F35 609 0 R>>>> +endobj +202 0 obj<</Subtype/Link/Rect[165.206 463.203 495.412 474.328]/A<</Type/Action/S/URI/URI(http://www.ams.org/cgi-bin/bookstore/bookpromo?fn=91&arg1=bookvideo&itmc=MLTEX)>>/C[0 1 1]/Border[0 0 0]>> +endobj +203 0 obj<</Subtype/Link/Rect[165.206 451.524 271.805 462.373]/A<</Type/Action/S/URI/URI(http://www.ams.org/cgi-bin/bookstore/bookpromo?fn=91&arg1=bookvideo&itmc=MLTEX)>>/C[0 1 1]/Border[0 0 0]>> +endobj +204 0 obj<</Filter/FlateDecode/Length 1337>>stream +xKSFs)%JM!VK +\-@-vwOa@ےre[==iƌ'o~60̙9f +LhLAx_~_sL.p
st9BtARiLDҲF1(&
'dtW8Vq6kJ0v~w^חᗧu_Xc?K>~J78+{b]\wj&_U^d&s攪SZM^Y:/*B,/f^& +y7یVB&Xaz4'Nbp I0imK
F$&X ~ed*,ޕM)5=G<ab8S)P=(SOզrLKJ+{+OX(N&mV:0A|C>3St/+ِsT_sZtγ͗/9s!Nq@Gh/Wub$lSGY|z7߳$opЊٮ]/(%V@' :;[B=8x"Z|I~Dy(߉`5T1ÒH!%Ҡƒ9)ѩS;S2Sd +Ǚr#^c39v]М&oLg(يV[?+R|q +Jw;ھp8)`RCގq}R9)-\W{a^PپiUCxJ߽13~wi}[K`x:0)XJ-Z W*=:[VE_ +=P2{4S)* KoqS*1#5l
5Q,Fܱ<< W^ + +endstream +endobj +205 0 obj<</Font<</F31 605 0 R/F14 607 0 R/F8 601 0 R/F18 602 0 R/F30 604 0 R/F11 612 0 R/F7 606 0 R>>>> +endobj +206 0 obj<</Filter/FlateDecode/Length 1872>>stream +xZKsFW(7&&9Ż٪$C|s@e vO Y=\0_wO?L(%ZJ6Qϕ3jB9|͜Q8]9iSf;[0N4WЮPEaYrY/P;+V3Gc/"RhdU<V|P?ANOh]\oz{=Xhc0<{QĞ"&f&$J[838S·t|t*D2xh-ᗤ4JDVˎGcd_r*ʧl!少+ &yaTLO7&w>ͥtU|9XKQ=Qţ/9GqTkyjW=ʈİqR>u@4Y0sRj\eů>? fEР;tI:%}e&< [FpB!om
9ر`~ؖGlF!(M/QRniY',-jMQ+ AF +*%\g~;0hvOEhר̢;[ե8`Xo
x0)Vр:,7=h#t\E<v'ƺ?:sQu94cdہd
6ĖdٜyCTg7?DI* 4f %Sa*E|ry hЀ'g3V`x\w[ϴ%mlwY&x7fz]@Uߩm^YCCŴSFREk0O6: gRfVO:ap=]=p±CtB1\qNuMU{A@Hi7UЫ).geC˹r`ı+C\k4E8qGuZsgo&ľey4̉A+-NC0G|kG݄KW
>ZaEfqO> =L;w8UG{H`(XG,`I:o*43? +H2[OrcGіv|`9>Y,vby!ffp3:> +\|4oxK}īEl/;DS)QrwW.2RP
ׁ['ɄV`8
Oع^6wjߦ +endstream +endobj +207 0 obj<</Font<</F31 605 0 R/F29 603 0 R/F8 601 0 R/F35 609 0 R>>>> +endobj +208 0 obj<</Subtype/Link/Rect[166.258 692.288 173.231 703.136]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +209 0 obj<</Subtype/Link/Rect[166.258 680.225 173.231 691.074]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +210 0 obj<</Subtype/Link/Rect[166.258 668.163 173.231 679.011]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +211 0 obj<</Subtype/Link/Rect[166.258 656.1 173.231 666.948]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +212 0 obj<</Subtype/Link/Rect[166.258 644.037 173.231 654.885]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +213 0 obj<</Subtype/Link/Rect[177.327 644.037 184.301 654.885]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +214 0 obj<</Subtype/Link/Rect[188.397 644.037 195.371 654.885]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +215 0 obj<</Subtype/Link/Rect[199.466 644.037 206.44 654.885]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +216 0 obj<</Subtype/Link/Rect[210.536 644.037 222.491 654.885]/Dest[38 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +217 0 obj<</Subtype/Link/Rect[226.587 644.037 238.542 654.885]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +218 0 obj<</Subtype/Link/Rect[171.488 631.974 178.462 642.822]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +219 0 obj<</Subtype/Link/Rect[182.558 631.974 189.531 642.822]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +220 0 obj<</Subtype/Link/Rect[187.179 608.155 199.134 619.003]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +221 0 obj<</Subtype/Link/Rect[203.23 608.155 215.185 619.003]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +222 0 obj<</Subtype/Link/Rect[239.482 596.092 251.438 606.94]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +223 0 obj<</Subtype/Link/Rect[234.252 583.752 241.226 594.877]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +224 0 obj<</Subtype/Link/Rect[229.492 571.966 241.448 582.814]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +225 0 obj<</Subtype/Link/Rect[223.791 559.903 230.765 570.752]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +226 0 obj<</Subtype/Link/Rect[218.561 547.564 225.535 558.689]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +227 0 obj<</Subtype/Link/Rect[239.262 535.501 246.235 546.361]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +228 0 obj<</Subtype/Link/Rect[249.224 535.501 256.198 546.361]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +229 0 obj<</Subtype/Link/Rect[260.294 535.501 272.249 546.361]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +230 0 obj<</Subtype/Link/Rect[275.238 535.501 287.193 546.361]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +231 0 obj<</Subtype/Link/Rect[249.722 523.438 256.696 534.298]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +232 0 obj<</Subtype/Link/Rect[260.792 523.438 272.747 534.298]/Dest[38 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +233 0 obj<</Subtype/Link/Rect[276.843 523.438 288.798 534.298]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +234 0 obj<</Subtype/Link/Rect[292.894 523.438 304.849 534.298]/Dest[42 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +235 0 obj<</Subtype/Link/Rect[249.722 511.375 256.696 522.235]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +236 0 obj<</Subtype/Link/Rect[260.792 511.375 267.766 522.235]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +237 0 obj<</Subtype/Link/Rect[260.183 499.312 267.157 510.173]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +238 0 obj<</Subtype/Link/Rect[271.253 499.312 278.226 510.173]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +239 0 obj<</Subtype/Link/Rect[255.173 487.25 262.147 498.375]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +240 0 obj<</Subtype/Link/Rect[210.536 475.464 217.51 486.312]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +241 0 obj<</Subtype/Link/Rect[215.766 463.401 222.74 474.249]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +242 0 obj<</Subtype/Link/Rect[224.262 451.061 231.236 462.186]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +243 0 obj<</Subtype/Link/Rect[235.332 451.061 242.306 462.186]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +244 0 obj<</Subtype/Link/Rect[219.032 439.275 226.006 450.123]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +245 0 obj<</Subtype/Link/Rect[230.101 439.275 237.075 450.123]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +246 0 obj<</Subtype/Link/Rect[241.171 439.275 253.126 450.123]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +247 0 obj<</Subtype/Link/Rect[234.723 427.212 246.678 438.061]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +248 0 obj<</Subtype/Link/Rect[245.931 415.15 257.886 425.998]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +249 0 obj<</Subtype/Link/Rect[231.744 403.087 236.504 413.935]/Dest[16 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +250 0 obj<</Subtype/Link/Rect[241.851 403.087 248.825 413.935]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +251 0 obj<</Subtype/Link/Rect[251.814 403.087 258.788 413.935]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +252 0 obj<</Subtype/Link/Rect[264.135 403.087 271.109 413.935]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +253 0 obj<</Subtype/Link/Rect[274.097 403.087 286.053 413.935]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +254 0 obj<</Subtype/Link/Rect[291.399 403.087 303.355 413.935]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +255 0 obj<</Subtype/Link/Rect[189.559 393.069 201.514 401.482]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +256 0 obj<</Subtype/Link/Rect[204.503 393.069 216.458 401.482]/Dest[45 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +257 0 obj<</Subtype/Link/Rect[224.262 378.792 231.236 389.917]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +258 0 obj<</Subtype/Link/Rect[235.332 378.792 242.306 389.917]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +259 0 obj<</Subtype/Link/Rect[229.492 366.729 241.448 377.854]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +260 0 obj<</Subtype/Link/Rect[229.492 354.943 236.466 365.791]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +261 0 obj<</Subtype/Link/Rect[240.562 354.943 247.536 365.791]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +262 0 obj<</Subtype/Link/Rect[224.262 342.88 231.236 353.728]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +263 0 obj<</Subtype/Link/Rect[235.332 342.88 247.287 353.728]/Dest[45 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +264 0 obj<</Subtype/Link/Rect[229.492 330.817 236.466 341.666]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +265 0 obj<</Subtype/Link/Rect[240.562 330.817 247.536 341.666]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +266 0 obj<</Subtype/Link/Rect[251.632 330.817 263.587 341.666]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +267 0 obj<</Subtype/Link/Rect[192.409 318.755 204.364 329.603]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +268 0 obj<</Subtype/Link/Rect[192.409 306.692 204.364 317.54]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +269 0 obj<</Subtype/Link/Rect[192.409 294.629 204.364 305.477]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +270 0 obj<</Subtype/Link/Rect[176.718 282.289 188.673 293.414]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +271 0 obj<</Subtype/Link/Rect[239.262 270.227 246.235 281.087]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +272 0 obj<</Subtype/Link/Rect[250.331 270.227 257.305 281.087]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +273 0 obj<</Subtype/Link/Rect[261.401 270.227 273.356 281.087]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +274 0 obj<</Subtype/Link/Rect[218.672 246.378 230.627 257.226]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +275 0 obj<</Subtype/Link/Rect[286.225 234.315 298.18 245.163]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +276 0 obj<</Subtype/Link/Rect[181.949 221.975 193.904 233.1]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +277 0 obj<</Subtype/Link/Rect[198 221.975 209.955 233.1]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +278 0 obj<</Subtype/Link/Rect[234.252 209.913 246.207 221.037]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +279 0 obj<</Subtype/Link/Rect[219.087 186.37 231.043 197.218]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +280 0 obj<</Subtype/Link/Rect[189.559 162.352 201.514 172.702]/Dest[31 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +281 0 obj<</Subtype/Link/Rect[205.61 162.352 217.565 172.702]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +282 0 obj<</Subtype/Link/Rect[187.179 150.012 199.134 161.137]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +283 0 obj<</Subtype/Link/Rect[187.179 137.949 199.134 149.074]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +284 0 obj<</Subtype/Link/Rect[181.949 125.886 193.904 137.011]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +285 0 obj<</Subtype/Link/Rect[181.949 113.824 193.904 124.949]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +286 0 obj<</Subtype/Link/Rect[187.179 102.038 199.134 112.886]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +287 0 obj<</Subtype/Link/Rect[197.363 89.975 209.319 100.823]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +288 0 obj<</Subtype/Link/Rect[392.631 692.288 399.605 703.136]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +289 0 obj<</Subtype/Link/Rect[403.701 692.288 415.656 703.136]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +290 0 obj<</Subtype/Link/Rect[439.012 680.228 445.986 690.811]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +291 0 obj<</Subtype/Link/Rect[439.012 668.168 445.986 678.751]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +292 0 obj<</Subtype/Link/Rect[371.239 656.108 383.194 666.956]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +293 0 obj<</Subtype/Link/Rect[402.621 643.771 414.576 654.896]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +294 0 obj<</Subtype/Link/Rect[376.469 631.987 388.424 642.836]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +295 0 obj<</Subtype/Link/Rect[355.548 608.215 367.503 619.063]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +296 0 obj<</Subtype/Link/Rect[428.552 596.154 435.526 606.738]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +297 0 obj<</Subtype/Link/Rect[376.469 584.094 388.424 594.942]/Dest[42 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +298 0 obj<</Subtype/Link/Rect[412.861 572.034 419.835 582.617]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +299 0 obj<</Subtype/Link/Rect[423.93 572.034 435.885 582.617]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +300 0 obj<</Subtype/Link/Rect[376.469 559.974 383.443 570.822]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +301 0 obj<</Subtype/Link/Rect[428.385 547.637 435.359 558.497]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +302 0 obj<</Subtype/Link/Rect[376.469 535.854 388.424 546.702]/Dest[31 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +303 0 obj<</Subtype/Link/Rect[376.469 523.517 388.424 534.143]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +304 0 obj<</Subtype/Link/Rect[366.008 511.733 377.964 522.083]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +305 0 obj<</Subtype/Link/Rect[376.469 499.673 388.424 510.023]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +306 0 obj<</Subtype/Link/Rect[371.239 487.613 383.194 497.963]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +307 0 obj<</Subtype/Link/Rect[376.469 475.553 388.424 485.903]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +308 0 obj<</Subtype/Link/Rect[413.081 463.216 425.037 473.843]/Dest[45 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +309 0 obj<</Subtype/Link/Rect[397.39 451.156 409.346 461.782]/Dest[45 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +310 0 obj<</Subtype/Link/Rect[427.915 439.372 439.871 450.22]/Dest[31 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +311 0 obj<</Subtype/Link/Rect[366.008 427.312 377.964 438.16]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +312 0 obj<</Subtype/Link/Rect[371.239 415.252 383.194 426.1]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +313 0 obj<</Subtype/Link/Rect[366.008 403.192 377.964 414.04]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +314 0 obj<</Subtype/Link/Rect[371.239 391.132 383.194 401.98]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +315 0 obj<</Subtype/Link/Rect[366.008 379.071 377.964 389.92]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +316 0 obj<</Subtype/Link/Rect[381.699 355.299 393.655 366.147]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +317 0 obj<</Subtype/Link/Rect[381.699 343.238 393.655 354.087]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +318 0 obj<</Subtype/Link/Rect[376.469 331.178 388.424 342.026]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +319 0 obj<</Subtype/Link/Rect[371.239 319.118 383.194 329.966]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +320 0 obj<</Subtype/Link/Rect[449.694 306.781 456.668 317.906]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +321 0 obj<</Subtype/Link/Rect[460.763 306.781 472.719 317.906]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +322 0 obj<</Subtype/Link/Rect[366.008 294.721 377.964 305.846]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +323 0 obj<</Subtype/Link/Rect[366.008 282.937 377.964 293.786]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +324 0 obj<</Subtype/Link/Rect[376.469 270.877 388.424 281.726]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +325 0 obj<</Subtype/Link/Rect[402.621 258.817 414.576 269.167]/Dest[44 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +326 0 obj<</Subtype/Link/Rect[366.008 246.757 377.964 257.605]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +327 0 obj<</Subtype/Link/Rect[413.081 234.42 420.055 245.545]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +328 0 obj<</Subtype/Link/Rect[429.88 222.637 436.854 233.485]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +329 0 obj<</Subtype/Link/Rect[404.614 198.516 411.588 209.1]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +330 0 obj<</Subtype/Link/Rect[418.312 186.179 430.267 197.304]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +331 0 obj<</Subtype/Link/Rect[459.934 174.119 466.908 184.979]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +332 0 obj<</Subtype/Link/Rect[413.081 162.059 425.037 173.184]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +333 0 obj<</Subtype/Link/Rect[418.312 150.276 425.286 161.124]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +334 0 obj<</Subtype/Link/Rect[366.008 138.215 377.964 149.064]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +335 0 obj<</Subtype/Link/Rect[376.469 114.095 383.443 124.943]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +336 0 obj<</Subtype/Link/Rect[376.469 102.035 383.443 112.883]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +337 0 obj<</Subtype/Link/Rect[376.469 89.975 383.443 100.823]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +338 0 obj<</Filter/FlateDecode/Length 2113>>stream +xZK:R~A6@$A#Qw$RKR^;SM65Z";>&_}UOBcx.!8J/6o^.~K9DU̸%^YVd(.iS6$%<a?'-,MHi߈^\n%"q6{kRV;D1IMRl!>Fᐟ^Z#Gv<I j(/EYv31ՂCfiU_] +Ir]%KyUAŰ + wN+쎩yu"ZuG!PP *:8Օ#i6A!*Oh8߇}}A>@u{BIdɨފm9LGK(BWʊ6Z9
hCO}Uie£GSB>=vȶMwwݟOt݆9IY=Ǩl#Ȫ*im4@Y<Ci
\D㬺"Hk=9|:4,W4&D +,.BHʘp32i + +SgF@oKTtQ3 +$ vͻ/,+"^,^CͱO9ۋ'moom%(kJSr qns[[v!@ՖYH`N\l m/C=vzո;~u,^dE2n`H@(>͋fO"I\ +.Cpy9sa;zٮJVM~:d +B]=a<%S焨^Dr"t_;d$h'.ίn;#zL8d "^2a0BUXV}"9~0B`vm$зmH̃vÑ
IA3)d?8
WsN_&t`:]֝#p~XZ:o=czy|cgƚ@MBhm;nQdd
XapE+P"U76c.<1yu
qNpӁן^|0Ib9j08 r.`'}yNV@E{vw7yjm!.z +qD|?t+:A̽՞7pn[5-T:僥A/+:Hps5.@Qf\L8#4kwtt[O:~rh1G֤}9u<W묛
lPy6n1bxg_X|yjl؛Q<C^d9>bɄAФq٥7_3Ԧhx{\Bǂ
4 + +15 ߿O H%$'+z;rk+-bY-`-hs547a[-,}٤}*(8 +endstream +endobj +339 0 obj<</Font<</F31 605 0 R/F18 602 0 R/F8 601 0 R/F35 609 0 R>>>> +endobj +340 0 obj<</Subtype/Link/Rect[136.369 732.471 143.343 743.319]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +341 0 obj<</Subtype/Link/Rect[136.369 720.516 143.343 731.364]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +342 0 obj<</Subtype/Link/Rect[178.212 698.835 190.167 709.462]/Dest[44 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +343 0 obj<</Subtype/Link/Rect[173.149 675.201 180.122 685.785]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +344 0 obj<</Subtype/Link/Rect[204.143 662.969 211.117 673.83]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +345 0 obj<</Subtype/Link/Rect[215.213 662.969 222.187 673.83]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +346 0 obj<</Subtype/Link/Rect[226.282 662.969 238.238 673.83]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +347 0 obj<</Subtype/Link/Rect[242.333 662.969 254.288 673.83]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +348 0 obj<</Subtype/Link/Rect[136.369 651.014 143.343 662.139]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +349 0 obj<</Subtype/Link/Rect[206.201 639.059 213.175 649.919]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +350 0 obj<</Subtype/Link/Rect[218.414 639.059 225.388 649.919]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +351 0 obj<</Subtype/Link/Rect[228.377 639.059 235.351 649.919]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +352 0 obj<</Subtype/Link/Rect[240.59 639.059 252.545 649.919]/Dest[38 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +353 0 obj<</Subtype/Link/Rect[138.75 629.318 150.705 637.731]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +354 0 obj<</Subtype/Link/Rect[191.856 603.47 198.83 614.319]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +355 0 obj<</Subtype/Link/Rect[164.265 591.515 171.239 602.363]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +356 0 obj<</Subtype/Link/Rect[222.657 579.56 229.631 590.408]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +357 0 obj<</Subtype/Link/Rect[168.416 567.605 175.39 578.453]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +358 0 obj<</Subtype/Link/Rect[225.757 555.65 232.731 566.498]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +359 0 obj<</Subtype/Link/Rect[204.365 543.695 211.339 554.543]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +360 0 obj<</Subtype/Link/Rect[209.373 531.463 216.347 542.323]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +361 0 obj<</Subtype/Link/Rect[183.913 507.552 195.869 518.677]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +362 0 obj<</Subtype/Link/Rect[125.909 495.597 137.864 506.722]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +363 0 obj<</Subtype/Link/Rect[131.139 474.47 143.094 485.318]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +364 0 obj<</Subtype/Link/Rect[162.134 462.238 169.108 473.098]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +365 0 obj<</Subtype/Link/Rect[173.204 462.238 180.178 473.098]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +366 0 obj<</Subtype/Link/Rect[167.751 450.283 179.707 460.91]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +367 0 obj<</Subtype/Link/Rect[131.139 438.604 143.094 449.453]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +368 0 obj<</Subtype/Link/Rect[147.19 438.604 159.145 449.453]/Dest[31 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +369 0 obj<</Subtype/Link/Rect[142.43 426.649 154.386 437.497]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +370 0 obj<</Subtype/Link/Rect[183.443 414.694 190.416 425.542]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +371 0 obj<</Subtype/Link/Rect[192.2 381.058 199.174 391.918]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +372 0 obj<</Subtype/Link/Rect[202.611 381.058 209.584 391.918]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +373 0 obj<</Subtype/Link/Rect[213.021 381.058 224.977 391.918]/Dest[38 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +374 0 obj<</Subtype/Link/Rect[228.413 381.058 240.369 391.918]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +375 0 obj<</Subtype/Link/Rect[243.357 381.058 255.313 391.918]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +376 0 obj<</Subtype/Link/Rect[204.143 369.103 211.117 379.963]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +377 0 obj<</Subtype/Link/Rect[215.213 369.103 222.187 379.963]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +378 0 obj<</Subtype/Link/Rect[125.909 357.148 137.864 368.273]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +379 0 obj<</Subtype/Link/Rect[146.83 345.193 158.785 356.318]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +380 0 obj<</Subtype/Link/Rect[125.909 324.065 137.864 334.914]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +381 0 obj<</Subtype/Link/Rect[152.06 312.11 159.034 322.958]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +382 0 obj<</Subtype/Link/Rect[125.909 300.155 137.864 311.003]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +383 0 obj<</Subtype/Link/Rect[226.061 276.245 238.017 287.093]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +384 0 obj<</Subtype/Link/Rect[186.072 264.29 193.046 275.138]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +385 0 obj<</Subtype/Link/Rect[152.06 242.886 164.016 253.734]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +386 0 obj<</Subtype/Link/Rect[141.6 230.93 153.555 241.779]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +387 0 obj<</Subtype/Link/Rect[136.369 218.975 148.325 229.823]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +388 0 obj<</Subtype/Link/Rect[131.139 207.02 143.094 217.868]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +389 0 obj<</Subtype/Link/Rect[125.909 195.065 137.864 205.913]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +390 0 obj<</Subtype/Link/Rect[141.6 182.833 153.555 193.958]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +391 0 obj<</Subtype/Link/Rect[160.612 159.199 172.567 170.048]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +392 0 obj<</Subtype/Link/Rect[207.99 147.244 214.964 158.092]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +393 0 obj<</Subtype/Link/Rect[157.291 135.289 164.265 146.137]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +394 0 obj<</Subtype/Link/Rect[183.055 123.334 190.029 133.917]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +395 0 obj<</Subtype/Link/Rect[194.125 123.334 206.08 133.917]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +396 0 obj<</Subtype/Link/Rect[125.909 101.93 137.864 112.778]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +397 0 obj<</Subtype/Link/Rect[168.222 89.975 180.178 100.823]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +398 0 obj<</Subtype/Link/Rect[325.66 732.471 332.633 743.319]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +399 0 obj<</Subtype/Link/Rect[336.729 732.471 343.703 743.319]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +400 0 obj<</Subtype/Link/Rect[330.89 720.087 342.845 731.211]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +401 0 obj<</Subtype/Link/Rect[325.66 708.256 332.633 719.104]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +402 0 obj<</Subtype/Link/Rect[320.429 696.148 332.384 706.996]/Dest[31 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +403 0 obj<</Subtype/Link/Rect[336.48 696.148 348.435 706.996]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +404 0 obj<</Subtype/Link/Rect[352.531 696.148 364.486 706.996]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +405 0 obj<</Subtype/Link/Rect[368.582 696.148 380.537 706.996]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +406 0 obj<</Subtype/Link/Rect[341.351 684.04 353.306 694.889]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +407 0 obj<</Subtype/Link/Rect[351.424 671.656 358.398 682.516]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +408 0 obj<</Subtype/Link/Rect[362.494 671.656 369.468 682.516]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +409 0 obj<</Subtype/Link/Rect[309.969 659.548 321.924 670.673]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +410 0 obj<</Subtype/Link/Rect[315.199 647.718 322.173 658.566]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +411 0 obj<</Subtype/Link/Rect[326.269 647.718 338.224 658.566]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +412 0 obj<</Subtype/Link/Rect[342.319 647.718 354.275 658.566]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +413 0 obj<</Subtype/Link/Rect[330.89 635.61 342.845 646.458]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +414 0 obj<</Subtype/Link/Rect[330.89 611.395 342.845 622.243]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +415 0 obj<</Subtype/Link/Rect[330.89 599.01 342.845 610.135]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +416 0 obj<</Subtype/Link/Rect[309.969 587.179 321.924 598.028]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +417 0 obj<</Subtype/Link/Rect[315.199 574.795 327.154 585.92]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +418 0 obj<</Subtype/Link/Rect[331.25 574.795 343.205 585.92]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +419 0 obj<</Subtype/Link/Rect[325.66 562.964 337.615 573.812]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +420 0 obj<</Subtype/Link/Rect[325.66 550.856 337.615 561.705]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +421 0 obj<</Subtype/Link/Rect[341.379 526.245 353.334 537.093]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +422 0 obj<</Subtype/Link/Rect[330.89 502.03 342.845 512.878]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +423 0 obj<</Subtype/Link/Rect[346.941 502.03 358.896 512.878]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +424 0 obj<</Subtype/Link/Rect[330.89 489.922 342.845 500.771]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +425 0 obj<</Subtype/Link/Rect[346.941 489.922 358.896 500.771]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +426 0 obj<</Subtype/Link/Rect[336.12 477.815 348.075 488.663]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +427 0 obj<</Subtype/Link/Rect[341.351 465.707 353.306 476.555]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +428 0 obj<</Subtype/Link/Rect[330.89 453.6 342.845 464.448]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +429 0 obj<</Subtype/Link/Rect[330.89 441.492 342.845 452.34]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +430 0 obj<</Subtype/Link/Rect[336.12 429.384 348.075 440.232]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +431 0 obj<</Subtype/Link/Rect[330.89 417.277 342.845 428.125]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +432 0 obj<</Subtype/Link/Rect[330.89 405.169 342.845 416.017]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +433 0 obj<</Subtype/Link/Rect[330.89 393.061 337.864 403.645]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +434 0 obj<</Subtype/Link/Rect[364.736 380.954 371.71 391.802]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +435 0 obj<</Subtype/Link/Rect[382.973 368.846 389.946 379.429]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +436 0 obj<</Subtype/Link/Rect[330.89 356.739 342.845 367.587]/Dest[42 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +437 0 obj<</Subtype/Link/Rect[315.199 344.631 327.154 355.479]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +438 0 obj<</Subtype/Link/Rect[320.429 332.523 332.384 343.371]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +439 0 obj<</Subtype/Link/Rect[341.351 320.139 348.324 331.264]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +440 0 obj<</Subtype/Link/Rect[384.357 308.308 396.312 319.156]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +441 0 obj<</Subtype/Link/Rect[315.199 296.2 327.154 307.049]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +442 0 obj<</Subtype/Link/Rect[315.199 284.093 327.154 294.941]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +443 0 obj<</Subtype/Link/Rect[330.89 271.708 337.864 282.833]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +444 0 obj<</Subtype/Link/Rect[393.433 259.877 400.407 270.461]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +445 0 obj<</Subtype/Link/Rect[404.503 259.877 411.477 270.461]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +446 0 obj<</Subtype/Link/Rect[415.572 259.877 427.528 270.461]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +447 0 obj<</Subtype/Link/Rect[431.623 259.877 443.579 270.461]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +448 0 obj<</Subtype/Link/Rect[357.042 247.493 364.016 258.618]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +449 0 obj<</Subtype/Link/Rect[368.111 247.493 375.085 258.618]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +450 0 obj<</Subtype/Link/Rect[377.576 223.159 384.55 233.742]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +451 0 obj<</Subtype/Link/Rect[357.042 210.774 364.016 221.899]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +452 0 obj<</Subtype/Link/Rect[367.502 198.667 374.476 209.792]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +453 0 obj<</Subtype/Link/Rect[362.272 186.559 369.246 197.684]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +454 0 obj<</Subtype/Link/Rect[351.811 174.728 363.767 185.576]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +455 0 obj<</Subtype/Link/Rect[357.042 162.621 364.016 173.469]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +456 0 obj<</Subtype/Link/Rect[382.806 150.513 389.78 161.096]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +457 0 obj<</Subtype/Link/Rect[341.351 138.405 353.306 149.253]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +458 0 obj<</Subtype/Link/Rect[357.402 138.405 369.357 149.253]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +459 0 obj<</Subtype/Link/Rect[388.037 126.298 395.01 136.881]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +460 0 obj<</Subtype/Link/Rect[382.806 114.19 389.78 124.773]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +461 0 obj<</Subtype/Link/Rect[325.66 101.806 332.633 112.931]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +462 0 obj<</Subtype/Link/Rect[362.272 89.975 369.246 100.823]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +463 0 obj<</Subtype/Link/Rect[373.342 89.975 385.297 100.823]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +464 0 obj<</Filter/FlateDecode/Length 1941>>stream +xZ[sF~#D[k'iNiLf>`K$@n2=H}`?/.~E1~FeHP" Wlq7xx9[|T"bڕJI:5n~ݲ9Gbs9g:Hʸ.9<uR{EĉQ?Y@y=wc3Xci#Sp#ӿl(j38˘걸pՇI1Ed#hs46 +y0C1侎˲G1tX2]oi(P!QH!["K*DAlD]'WwI+Q[_QJ쐮MLڤqS&.k`/Эjnl_2C~Gpj۬c̯K]I~ !-|^*3<>vx)Ec}4g٬olE+|#8#L`ւ9~{[\" +]DAe.qгU("Be ҆OG=D +5p;bpeBs$LN*8_f(FqGbR[D#өte%/00nihB't.Ci2ءl*l6NgXV5I~2p$R5[C#B0B8VB*T%ΆUh
WɭMJ mۼF6`eBkW+%[8dzAB+$lOCǐ68=P1ӻijAthT/i{dO1'!/qTih:2g_mb\wGGw.\bf\Y˵Xf{նp6YZ$K+3&2w%b%'<>@lliSŕR>R]^2<zd9ۛ,o' Ñؒ!c@BӖਏm_ME¢ymh-t6YJ7[(H~B24nApAYγ4Oڽn<T4¨;y{j+-wwA,~0GۤA 4x79v(jj'jB<@͓xtYNk̳A|jسqrRz`J-^/>pP@MXDw[%I7Rp/ap`{Iy$v3[IAj4mxꨩ0^ FÇicƝM(ű^xb~ro/SRMk$=>^P߀tDef_:]E8xġfb:!Q;tQۭ<uTdܕaDs+xY^ZR7etop9RhmkS'fU>I"5x٤{)ΰvGB:L u\ӱݑ}[pd&xDdSh'JY
ki9>MD0s'H!i_won,+쟸F(Ц1_~.,Ӈtߝ}QX{ODw[whyWLڐ(.is)]C"`)`i +cÜM8Cm'%臸|du)zZo!J+UZ=^>4cE~rbNBW'[i>Lmr"p569:#AzfMϝ{3Mf(mK=g?+\:3\1߇=oVq^ì
l^/.Yo +endstream +endobj +465 0 obj<</Subtype/Link/Rect[223.156 732.471 235.111 742.821]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +466 0 obj<</Subtype/Link/Rect[223.791 720.197 235.746 731.322]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +467 0 obj<</Subtype/Link/Rect[229.022 708.199 240.977 719.324]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +468 0 obj<</Subtype/Link/Rect[181.949 696.479 193.904 707.327]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +469 0 obj<</Subtype/Link/Rect[198 696.479 209.955 707.327]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +470 0 obj<</Subtype/Link/Rect[229.022 684.481 240.977 695.329]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +471 0 obj<</Subtype/Link/Rect[255.173 672.207 267.129 683.332]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +472 0 obj<</Subtype/Link/Rect[234.252 660.21 246.207 671.335]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +473 0 obj<</Subtype/Link/Rect[197.64 648.489 209.595 659.337]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +474 0 obj<</Subtype/Link/Rect[234.252 636.492 246.207 647.34]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +475 0 obj<</Subtype/Link/Rect[207.077 613.827 214.051 624.675]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +476 0 obj<</Subtype/Link/Rect[208.1 601.553 215.074 612.678]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +477 0 obj<</Subtype/Link/Rect[249.722 589.556 256.696 600.416]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +478 0 obj<</Subtype/Link/Rect[197.64 577.558 209.595 588.683]/Dest[42 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +479 0 obj<</Subtype/Link/Rect[176.718 565.561 188.673 576.686]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +480 0 obj<</Subtype/Link/Rect[181.949 553.563 193.904 564.688]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +481 0 obj<</Subtype/Link/Rect[176.718 541.566 188.673 552.691]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +482 0 obj<</Subtype/Link/Rect[225.535 529.845 237.491 540.694]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +483 0 obj<</Subtype/Link/Rect[171.488 517.848 183.443 528.696]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +484 0 obj<</Subtype/Link/Rect[197.64 505.574 209.595 516.699]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +485 0 obj<</Subtype/Link/Rect[187.179 482.909 194.153 494.034]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +486 0 obj<</Subtype/Link/Rect[181.949 470.912 188.922 482.037]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +487 0 obj<</Subtype/Link/Rect[166.258 448.525 178.213 459.373]/Dest[36 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +488 0 obj<</Subtype/Link/Rect[202.87 436.25 209.844 447.375]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +489 0 obj<</Subtype/Link/Rect[192.409 424.253 204.364 435.378]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +490 0 obj<</Subtype/Link/Rect[176.718 412.532 183.692 423.38]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +491 0 obj<</Subtype/Link/Rect[212.944 400.258 219.917 411.118]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +492 0 obj<</Subtype/Link/Rect[224.013 400.258 230.987 411.118]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +493 0 obj<</Subtype/Link/Rect[187.179 388.261 199.134 399.386]/Dest[31 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +494 0 obj<</Subtype/Link/Rect[203.23 388.261 215.185 399.386]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +495 0 obj<</Subtype/Link/Rect[219.281 388.261 231.236 399.386]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +496 0 obj<</Subtype/Link/Rect[235.332 388.261 247.287 399.386]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +497 0 obj<</Subtype/Link/Rect[187.179 376.54 199.134 387.388]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +498 0 obj<</Subtype/Link/Rect[187.179 364.543 199.134 375.391]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +499 0 obj<</Subtype/Link/Rect[249.943 341.602 261.898 352.727]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +500 0 obj<</Subtype/Link/Rect[218.561 329.604 230.516 340.729]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +501 0 obj<</Subtype/Link/Rect[176.718 317.883 188.673 328.732]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +502 0 obj<</Subtype/Link/Rect[213.331 305.886 220.304 316.734]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +503 0 obj<</Subtype/Link/Rect[224.4 305.886 231.374 316.734]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +504 0 obj<</Subtype/Link/Rect[208.1 293.612 215.074 304.737]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +505 0 obj<</Subtype/Link/Rect[208.1 281.891 215.074 292.739]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +506 0 obj<</Subtype/Link/Rect[213.331 269.617 220.304 280.742]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +507 0 obj<</Subtype/Link/Rect[197.64 257.896 209.595 268.745]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +508 0 obj<</Subtype/Link/Rect[213.691 257.896 225.646 268.745]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +509 0 obj<</Subtype/Link/Rect[176.718 245.899 183.692 256.747]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +510 0 obj<</Subtype/Link/Rect[187.788 245.899 199.743 256.747]/Dest[32 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +511 0 obj<</Subtype/Link/Rect[203.839 245.899 215.794 256.747]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +512 0 obj<</Subtype/Link/Rect[181.949 233.902 193.904 244.75]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +513 0 obj<</Subtype/Link/Rect[270.644 221.904 277.617 232.487]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +514 0 obj<</Subtype/Link/Rect[187.179 209.907 199.134 220.755]/Dest[31 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +515 0 obj<</Subtype/Link/Rect[203.23 209.907 215.185 220.755]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +516 0 obj<</Subtype/Link/Rect[187.179 197.633 199.134 208.758]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +517 0 obj<</Subtype/Link/Rect[240.155 185.635 247.129 196.495]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +518 0 obj<</Subtype/Link/Rect[251.721 185.635 258.694 196.495]/Dest[23 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +519 0 obj<</Subtype/Link/Rect[263.286 185.635 270.26 196.495]/Dest[25 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +520 0 obj<</Subtype/Link/Rect[274.852 185.635 286.807 196.495]/Dest[38 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +521 0 obj<</Subtype/Link/Rect[291.399 185.635 303.355 196.495]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +522 0 obj<</Subtype/Link/Rect[189.559 173.957 201.514 184.307]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +523 0 obj<</Subtype/Link/Rect[205.61 173.957 217.565 184.307]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +524 0 obj<</Subtype/Link/Rect[197.64 161.683 209.595 172.807]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +525 0 obj<</Subtype/Link/Rect[202.87 149.962 214.825 160.81]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +526 0 obj<</Subtype/Link/Rect[254.953 137.688 266.908 148.548]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +527 0 obj<</Subtype/Link/Rect[208.1 125.69 215.074 136.317]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +528 0 obj<</Subtype/Link/Rect[275.874 113.693 282.848 124.553]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +529 0 obj<</Subtype/Link/Rect[273.827 101.972 285.782 112.82]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +530 0 obj<</Subtype/Link/Rect[217.51 89.975 229.465 100.823]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +531 0 obj<</Subtype/Link/Rect[400.546 732.471 412.501 742.821]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +532 0 obj<</Subtype/Link/Rect[409.014 720.366 415.988 731.214]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +533 0 obj<</Subtype/Link/Rect[392.16 708.261 404.115 719.109]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +534 0 obj<</Subtype/Link/Rect[366.008 696.155 377.964 707.004]/Dest[35 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +535 0 obj<</Subtype/Link/Rect[382.059 696.155 394.015 707.004]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +536 0 obj<</Subtype/Link/Rect[423.155 684.05 430.129 694.634]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +537 0 obj<</Subtype/Link/Rect[366.008 671.668 377.964 682.793]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +538 0 obj<</Subtype/Link/Rect[439.012 623.317 450.968 633.9]/Dest[40 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +539 0 obj<</Subtype/Link/Rect[366.008 610.935 372.982 622.06]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +540 0 obj<</Subtype/Link/Rect[371.239 598.83 378.213 609.955]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +541 0 obj<</Subtype/Link/Rect[366.008 587.001 377.964 597.85]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +542 0 obj<</Subtype/Link/Rect[371.239 574.896 383.194 585.744]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +543 0 obj<</Subtype/Link/Rect[381.699 562.791 393.655 573.639]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +544 0 obj<</Subtype/Link/Rect[407.464 550.409 414.438 561.269]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +545 0 obj<</Subtype/Link/Rect[407.851 538.581 419.806 548.931]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +546 0 obj<</Subtype/Link/Rect[423.902 538.581 435.857 548.931]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +547 0 obj<</Subtype/Link/Rect[439.953 538.581 451.908 548.931]/Dest[43 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +548 0 obj<</Subtype/Link/Rect[456.004 538.581 467.959 548.931]/Dest[44 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +549 0 obj<</Subtype/Link/Rect[407.851 526.476 414.825 536.826]/Dest[22 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +550 0 obj<</Subtype/Link/Rect[421.702 514.163 433.657 525.108]/Dest[44 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +551 0 obj<</Subtype/Link/Rect[371.239 502.265 378.213 513.113]/Dest[20 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +552 0 obj<</Subtype/Link/Rect[382.308 502.265 389.282 513.113]/Dest[24 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +553 0 obj<</Subtype/Link/Rect[392.271 502.265 399.245 513.113]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +554 0 obj<</Subtype/Link/Rect[403.341 502.265 415.296 513.113]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +555 0 obj<</Subtype/Link/Rect[462.84 490.16 469.814 501.008]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +556 0 obj<</Subtype/Link/Rect[473.91 490.16 485.865 501.008]/Dest[34 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +557 0 obj<</Subtype/Link/Rect[397.39 477.778 409.346 488.903]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +558 0 obj<</Subtype/Link/Rect[376.469 465.95 388.424 476.798]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +559 0 obj<</Subtype/Link/Rect[407.851 453.568 414.825 464.693]/Dest[26 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +560 0 obj<</Subtype/Link/Rect[418.921 453.568 425.895 464.693]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +561 0 obj<</Subtype/Link/Rect[402.621 441.463 409.595 452.588]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +562 0 obj<</Subtype/Link/Rect[397.39 429.358 404.364 440.482]/Dest[28 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +563 0 obj<</Subtype/Link/Rect[384.387 417.529 396.342 428.377]/Dest[44 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +564 0 obj<</Subtype/Link/Rect[423.542 392.961 435.497 403.81]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +565 0 obj<</Subtype/Link/Rect[449.694 380.579 461.649 391.704]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +566 0 obj<</Subtype/Link/Rect[428.772 368.474 440.728 379.599]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +567 0 obj<</Subtype/Link/Rect[392.16 356.646 404.115 367.494]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +568 0 obj<</Subtype/Link/Rect[408.211 356.646 420.166 367.494]/Dest[30 0 R/XYZ 99.895 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +569 0 obj<</Subtype/Link/Rect[381.699 344.264 393.655 355.389]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +570 0 obj<</Subtype/Link/Rect[402.621 332.159 409.595 343.284]/Dest[21 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +571 0 obj<</Subtype/Link/Rect[413.69 332.159 425.646 343.284]/Dest[39 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +572 0 obj<</Subtype/Link/Rect[376.469 307.868 383.443 318.716]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +573 0 obj<</Subtype/Link/Rect[392.16 295.763 404.115 306.611]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +574 0 obj<</Subtype/Link/Rect[392.16 283.657 404.115 294.506]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +575 0 obj<</Subtype/Link/Rect[397.39 271.276 409.346 282.4]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +576 0 obj<</Subtype/Link/Rect[397.39 259.447 409.346 270.295]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +577 0 obj<</Subtype/Link/Rect[397.39 247.342 409.346 258.19]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +578 0 obj<</Subtype/Link/Rect[397.39 234.96 409.346 246.085]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +579 0 obj<</Subtype/Link/Rect[392.16 222.855 404.115 233.98]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +580 0 obj<</Subtype/Link/Rect[381.699 211.026 393.655 221.875]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +581 0 obj<</Subtype/Link/Rect[376.469 198.921 388.424 209.769]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +582 0 obj<</Subtype/Link/Rect[402.621 186.539 414.576 197.664]/Dest[33 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +583 0 obj<</Subtype/Link/Rect[381.699 174.711 393.655 185.559]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +584 0 obj<</Subtype/Link/Rect[392.16 162.329 404.115 173.454]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +585 0 obj<</Subtype/Link/Rect[392.16 150.501 404.115 161.349]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +586 0 obj<</Subtype/Link/Rect[402.621 138.119 414.576 149.244]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +587 0 obj<</Subtype/Link/Rect[376.469 126.29 388.424 137.138]/Dest[37 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +588 0 obj<</Subtype/Link/Rect[439.012 114.185 445.986 124.768]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +589 0 obj<</Subtype/Link/Rect[439.012 102.08 445.986 112.663]/Dest[27 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +590 0 obj<</Subtype/Link/Rect[392.16 89.698 404.115 100.823]/Dest[41 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +591 0 obj<</Filter/FlateDecode/Length 169>>stream +xuα +0Oqc{&[ +.NڪBMc:/_b=84DЋDŽvf.z6<P"BWH>2i>kZǵCd1]@5}s[eڄPG +endstream +endobj +592 0 obj<</Font<</F31 605 0 R/F18 602 0 R/F8 601 0 R>>>> +endobj +593 0 obj<</Subtype/Link/Rect[162.521 732.471 174.476 743.319]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +594 0 obj<</Subtype/Link/Rect[167.751 720.239 179.707 731.364]/Dest[29 0 R/XYZ 150.705 763.367 null]/C[1 0 0]/Border[0 0 0]>> +endobj +595 0 obj<</S/GoTo/D[21 0 R/XYZ 150.705 670.56 null]>> +endobj +596 0 obj<</Next 623 0 R/First 624 0 R/A 622 0 R/Prev 52 0 R/Last 625 0 R/Title(3 Displayed equations)/Parent 3 0 R/Count -11>> +endobj +597 0 obj<</Next 54 0 R/First 628 0 R/A 626 0 R/Prev 627 0 R/Last 629 0 R/Title(11 Additional information)/Parent 3 0 R/Count -4>> +endobj +598 0 obj<</Type/Font/Subtype/Type1/BaseFont/PWWJLY+CMR17/FontDescriptor 630 0 R/FirstChar 39/LastChar 117/Widths[249.6 354.1 354.1 0 0 0 0 249.6 0 458.6 0 458.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 726.3 0 0 0 0 0 0 0 0 628.2 0 0 0 0 693.3 693.3 0 0 0 0 0 0 0 0 0 0 458.6 0 406.4 510.9 406.4 275.8 458.6 510.9 249.6 0 484.7 0 0 510.9 458.6 0 0 354.1 359.4 354.1 510.9]>> +endobj +599 0 obj<</Type/Font/Subtype/Type1/BaseFont/DMRSSA+CMTT12/FontDescriptor 631 0 R/FirstChar 92/LastChar 120/Widths[514.6 0 0 0 0 514.6 0 0 0 514.6 0 0 514.6 0 0 0 0 514.6 0 0 0 0 0 514.6 514.6 0 0 0 514.6]>> +endobj +600 0 obj<</Type/Font/Subtype/Type1/BaseFont/NXMIUT+CMR12/FontDescriptor 632 0 R/FirstChar 40/LastChar 121/Widths[380.8 380.8 0 0 0 326.4 0 0 489.6 489.6 489.6 489.6 0 489.6 0 0 0 489.6 0 0 0 0 0 0 0 734 0 0 0 0 0 0 0 0 0 0 0 897.2 0 0 0 0 0 544 0 0 0 0 0 0 0 0 0 0 0 0 0 489.6 0 435.2 544 435.2 0 0 544 272 0 0 272 816 544 489.6 0 0 380.8 386.2 380.8 0 516.8 0 0 516.8]>> +endobj +601 0 obj<</Type/Font/Subtype/Type1/BaseFont/IBSJLL+CMR10/FontDescriptor 633 0 R/FirstChar 1/LastChar 127/Widths[833.3 0 694.4 0 0 0 0 0 0 722.2 583.3 555.6 555.6 833.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 500 0 0 0 0 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 0 777.8 0 472.2 0 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 0 277.8 500 277.8 500 0 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 0 0 500]>> +endobj +602 0 obj<</Type/Font/Subtype/Type1/BaseFont/ZQGMKI+CMR8/FontDescriptor 634 0 R/FirstChar 39/LastChar 121/Widths[295.1 413.2 413.2 0 0 295.1 354.2 295.1 0 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 0 0 826.4 0 0 0 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 0 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 795.8 795.8 0 0 0 0 0 0 0 531.3 590.3 472.2 590.3 472.2 324.7 531.3 590.3 295.1 0 0 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 413.2 590.3 560.8 767.4 560.8 560.8]>> +endobj +603 0 obj<</Type/Font/Subtype/Type1/BaseFont/DGUJMB+CMBX12/FontDescriptor 635 0 R/FirstChar 48/LastChar 124/Widths[562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 0 0 0 0 0 0 0 849.5 799.8 812.5 862.3 738.4 0 0 0 419 0 0 0 1067.1 0 844.9 0 0 0 0 782.4 864.6 0 0 0 0 0 0 0 0 0 0 0 546.9 625 500 625 513.3 343.7 562.5 625 312.5 0 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.7 437.5 625 593.7 0 593.7 593.7 0 0 1125]>> +endobj +604 0 obj<</Type/Font/Subtype/Type1/BaseFont/WCDZYP+CMBX10/FontDescriptor 636 0 R/FirstChar 1/LastChar 122/Widths[958.3 0 0 0 0 0 0 0 0 0 670.8 638.9 0 958.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 894.4 319.4 383.3 319.4 0 575 575 575 575 575 575 575 575 575 575 319.4 0 0 0 0 0 0 869.4 818.1 830.6 881.9 755.6 723.6 904.2 0 436.1 0 0 691.7 1091.7 900 863.9 786.1 0 862.5 638.9 800 884.7 869.4 1188.9 869.4 0 0 0 0 0 0 0 0 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1]>> +endobj +605 0 obj<</Type/Font/Subtype/Type1/BaseFont/AAITWM+CMTT10/FontDescriptor 637 0 R/FirstChar 33/LastChar 125/Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525]>> +endobj +606 0 obj<</Type/Font/Subtype/Type1/BaseFont/VZEVRN+CMR7/FontDescriptor 638 0 R/FirstChar 3/LastChar 111/Widths[781.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 446.4 446.4 0 877 0 0 0 0 569.5 569.5 569.5 569.5 0 569.5 0 0 569.5 0 0 0 0 877 0 0 0 843.3 0 0 0 767.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 323.4 0 323.4 0 0 0 0 0 0 631 0 0 0 0 0 0 0 0 0 631 569.5]>> +endobj +607 0 obj<</Type/Font/Subtype/Type1/BaseFont/XTRZKF+CMSY10/FontDescriptor 639 0 R/FirstChar 0/LastChar 120/Widths[777.8 277.8 777.8 500 0 0 0 0 0 0 777.8 0 0 0 500 500 0 777.8 0 0 777.8 0 0 0 777.8 0 0 0 0 0 0 0 1000 1000 0 0 0 0 0 0 1000 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 798.5 0 0 0 0 0 0 0 0 0 0 0 1200.9 820.5 0 0 0 0 605.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 388.9 388.9 277.8 500 0 0 0 0 833.3 0 0 0 0 0 0 0 444.4]>> +endobj +608 0 obj<</Type/Font/Subtype/Type1/BaseFont/NZKPEK+CMEX10/FontDescriptor 640 0 R/FirstChar 0/LastChar 121/Widths[458.3 458.3 0 0 0 0 0 0 0 0 0 0 333.3 0 0 0 597.2 597.2 736.1 736.1 527.8 527.8 0 0 0 0 0 0 0 0 0 0 791.7 791.7 0 0 0 0 0 0 805.6 805.6 0 0 0 0 0 0 875 875 666.7 666.7 666.7 666.7 0 0 0 0 0 0 0 0 0 666.7 875 875 875 875 0 0 0 0 0 0 0 0 1111.1 0 1111.1 0 1055.6 944.5 0 0 0 0 0 0 1444.5 1277.8 555.6 0 0 0 0 0 944.5 0 0 0 0 0 0 0 472.2 472.2 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 666.7]>> +endobj +609 0 obj<</Type/Font/Subtype/Type1/BaseFont/MYRMOX+CMTI10/FontDescriptor 641 0 R/FirstChar 12/LastChar 124/Widths[562.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 306.7 0 0 0 0 306.7 357.8 306.7 0 0 511.1 0 0 511.1 0 0 0 511.1 511.1 306.7 0 0 0 0 0 0 743.3 0 715.6 0 678.3 652.8 773.6 0 385.6 0 0 627.2 896.7 743.3 0 678.3 0 0 562.2 715.6 743.3 0 0 743.3 0 0 0 0 0 0 0 0 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 0 0 1022.2]>> +endobj +610 0 obj<</Type/Font/Subtype/Type1/BaseFont/YVEHIB+CMR6/FontDescriptor 642 0 R/FirstChar 49/LastChar 65/Widths[611.1 611.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 896.3]>> +endobj +611 0 obj<</Type/Font/Subtype/Type1/BaseFont/KKNBMI+CMTT8/FontDescriptor 643 0 R/FirstChar 42/LastChar 121/Widths[531.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 531.3 531.3 531.3 0 0 0 531.3 0 0 0 531.3 0 0 0 0 0 531.3 531.3 0 0 0 531.3 0 0 0 531.3 0 0 0 0 531.3 0 531.3 531.3 531.3 0 0 531.3 531.3 0 0 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 0 0 531.3 531.3]>> +endobj +612 0 obj<</Type/Font/Subtype/Type1/BaseFont/RJSYCG+CMMI10/FontDescriptor 644 0 R/FirstChar 0/LastChar 122/Widths[615.3 833.3 762.8 694.4 742.4 831.3 779.9 583.3 666.7 612.2 772.4 0 565.6 0 444.4 0 0 496.5 0 0 0 583.3 0 0 0 570 0 0 0 0 595.8 0 0 622.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 277.8 0 500 0 0 530.9 750 758.5 714.7 827.9 738.2 0 0 831.3 439.6 554.5 0 0 0 803.5 0 642 0 0 613.2 584.4 0 0 0 828.5 580.6 682.6 0 0 0 0 0 0 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 0 503.1 446.4 451.2 0 361.1 0 484.7 715.9 571.5 490.3 465.1]>> +endobj +613 0 obj<</Type/Font/Subtype/Type1/BaseFont/NNWXKY+CMMI7/FontDescriptor 645 0 R/FirstChar 16/LastChar 120/Widths[519.8 0 0 0 0 0 694.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 339.3 892.9 585.3 0 0 0 859.1 0 0 0 0 0 0 0 0 0 0 0 1089.4 0 0 727.3 0 0 0 674.8 0 0 0 936.9 0 0 0 0 0 0 0 0 619.7 502.4 510.5 594.7 0 0 0 0 404.2 472.7 607.3 361.3 1013.7 706.2 0 588.9 0 530.4 0 431.6 0 0 0 647.8]>> +endobj +614 0 obj<</Type/Font/Subtype/Type1/BaseFont/UCTUDM+CMSY7/FontDescriptor 646 0 R/FirstChar 0/LastChar 87/Widths[892.9 339.3 0 585.3 0 0 892.9 0 0 0 0 0 0 0 0 0 0 0 0 0 892.9 0 0 0 0 0 0 0 0 0 0 0 0 1138.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 329.4 1138.9 769.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1135.1]>> +endobj +615 0 obj<</Type/Font/Subtype/Type1/BaseFont/SQPBLW+CMR5/FontDescriptor 647 0 R/FirstChar 3/LastChar 50/Widths[911.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 680.6 680.6]>> +endobj +616 0 obj<</Type/Font/Subtype/Type1/BaseFont/VGIPAT+CMMI5/FontDescriptor 648 0 R/FirstChar 12/LastChar 112/Widths[790.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 533.6 0 0 0 0 0 0 739.7]>> +endobj +617 0 obj<</Type/Font/Subtype/Type1/BaseFont/UUTSRJ+CMSY5/FontDescriptor 649 0 R/FirstChar 0/LastChar 48/Widths[1083.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 441]>> +endobj +618 0 obj<</Type/Font/Subtype/Type1/BaseFont/DGFYTZ+CMTI7/FontDescriptor 650 0 R/FirstChar 65/LastChar 65/Widths[865.9]>> +endobj +619 0 obj<</Type/Font/Subtype/Type1/BaseFont/ZSVKTL+CMBSY7/FontDescriptor 651 0 R/FirstChar 49/LastChar 49/Widths[1294.5]>> +endobj +620 0 obj<</Type/Font/Subtype/Type1/BaseFont/LIXOKG+CMMIB10/FontDescriptor 652 0 R/FirstChar 25/LastChar 25/Widths[682.4]>> +endobj +621 0 obj<</Type/Font/Subtype/Type1/BaseFont/YXDKAB+CMBX7/FontDescriptor 653 0 R/FirstChar 48/LastChar 65/Widths[647.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 967.9]>> +endobj +622 0 obj<</S/GoTo/D[21 0 R/XYZ 150.705 251.496 null]>> +endobj +623 0 obj<</Next 655 0 R/First 656 0 R/A 654 0 R/Prev 596 0 R/Last 657 0 R/Title(4 Miscellaneous mathematical features)/Parent 3 0 R/Count -14>> +endobj +624 0 obj<</Next 659 0 R/Title(3.1 Introduction)/A 658 0 R/Parent 596 0 R>> +endobj +625 0 obj<</Title(3.11 Equation numbering)/A 660 0 R/Prev 661 0 R/Parent 596 0 R>> +endobj +626 0 obj<</S/GoTo/D[43 0 R/XYZ 150.705 327.663 null]>> +endobj +627 0 obj<</Next 597 0 R/First 664 0 R/A 662 0 R/Prev 663 0 R/Last 665 0 R/Title(10 Error messages and output problems)/Parent 3 0 R/Count -4>> +endobj +628 0 obj<</Next 667 0 R/Title(11.1 Converting existing documents)/A 666 0 R/Parent 597 0 R>> +endobj +629 0 obj<</Title(11.4 Of possible interest)/A 668 0 R/Prev 669 0 R/Parent 597 0 R>> +endobj +630 0 obj<</StemV 53/FontBBox[-33 -250 945 749]/CapHeight 683/FontFile 670 0 R/ItalicAngle 0/Ascent 694/CharSet(/quoteright/parenleft/parenright/period/zero/two/G/P/U/V/a/c/d/e/f/g/h/i/k/n/o/r/s/t/u)/XHeight 430/Descent -195/FontName/PWWJLY+CMR17/Flags 4>> +endobj +631 0 obj<</StemV 65/FontBBox[-1 -234 524 695]/CapHeight 611/FontFile 671 0 R/ItalicAngle 0/Ascent 611/CharSet(/backslash/a/e/h/m/s/t/x)/XHeight 431/Descent -222/FontName/DMRSSA+CMTT12/Flags 4>> +endobj +632 0 obj<</StemV 65/FontBBox[-34 -251 988 750]/CapHeight 683/FontFile 672 0 R/ItalicAngle 0/Ascent 694/CharSet(/parenleft/parenright/hyphen/zero/one/two/three/five/nine/A/M/S/a/c/d/e/h/i/l/m/n/o/r/s/t/v/y)/XHeight 431/Descent -194/FontName/NXMIUT+CMR12/Flags 4>> +endobj +633 0 obj<</StemV 69/FontBBox[-251 -250 1009 969]/CapHeight 683/FontFile 673 0 R/ItalicAngle 0/Ascent 694/CharSet(/Delta/Lambda/Omega/ff/fi/fl/ffi/exclam/quotedblright/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/bracketleft/quotedblleft/bracketright/circumflex/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/dieresis)/XHeight 431/Descent -194/FontName/IBSJLL+CMR10/Flags 4>> +endobj +634 0 obj<</StemV 76/FontBBox[-36 -250 1070 750]/CapHeight 683/FontFile 674 0 R/ItalicAngle 0/Ascent 694/CharSet(/quoteright/parenleft/parenright/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/equal/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/a/b/c/d/e/f/g/h/i/l/m/n/o/p/q/r/s/t/u/v/w/x/y)/XHeight 431/Descent -194/FontName/ZQGMKI+CMR8/Flags 4>> +endobj +635 0 obj<</StemV 109/FontBBox[-53 -251 1139 750]/CapHeight 686/FontFile 675 0 R/ItalicAngle 0/Ascent 694/CharSet(/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/E/I/M/O/T/U/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/x/y/emdash)/XHeight 444/Descent -194/FontName/DGUJMB+CMBX12/Flags 4>> +endobj +636 0 obj<</StemV 114/FontBBox[-301 -250 1164 946]/CapHeight 686/FontFile 676 0 R/ItalicAngle 0/Ascent 694/CharSet(/Delta/ff/fi/ffi/plus/comma/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/I/L/M/N/O/P/R/S/T/U/V/W/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z)/XHeight 444/Descent -194/FontName/WCDZYP+CMBX10/Flags 4>> +endobj +637 0 obj<</StemV 69/FontBBox[-4 -235 731 800]/CapHeight 611/FontFile 677 0 R/ItalicAngle 0/Ascent 611/CharSet(/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright)/XHeight 431/Descent -222/FontName/AAITWM+CMTT10/Flags 4>> +endobj +638 0 obj<</StemV 79/FontBBox[-27 -250 1122 750]/CapHeight 683/FontFile 678 0 R/ItalicAngle 0/Ascent 694/CharSet(/Lambda/parenleft/parenright/plus/zero/one/two/three/five/eight/equal/A/E/bracketleft/bracketright/d/n/o)/XHeight 431/Descent -194/FontName/VZEVRN+CMR7/Flags 4>> +endobj +639 0 obj<</StemV 85/FontBBox[-29 -960 1116 775]/CapHeight 683/FontFile 679 0 R/ItalicAngle -14.035/Ascent 750/CharSet(/minus/periodcentered/multiply/asteriskmath/circlemultiply/openbullet/bullet/equivalence/lessequal/similar/arrowleft/arrowright/arrowdblleft/arrowdblright/A/M/N/S/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/radical/section)/XHeight 431/Descent -194/FontName/XTRZKF+CMSY10/Flags 4>> +endobj +640 0 obj<</StemV 47/FontBBox[-24 -2960 1454 772]/CapHeight 0/FontFile 680 0 R/ItalicAngle 0/Ascent 40/CharSet(/parenleftbig/parenrightbig/vextendsingle/parenleftBig/parenrightBig/parenleftbigg/parenrightbigg/bracketleftbigg/bracketrightbigg/parenleftBigg/parenrightBigg/braceleftBigg/bracerightBigg/parenlefttp/parenrighttp/bracketlefttp/bracketrighttp/bracketleftbt/bracketrightbt/arrowvertex/parenleftbt/parenrightbt/parenleftex/parenrightex/circleplustext/circlemultiplytext/summationtext/producttext/summationdisplay/productdisplay/integraldisplay/coproducttext/bracketleftBig/bracketrightBig/radicalbigg/arrowbt)/XHeight 431/Descent -600/FontName/NZKPEK+CMEX10/Flags 4>> +endobj +641 0 obj<</StemV 68/FontBBox[-163 -250 1146 969]/CapHeight 683/FontFile 681 0 R/ItalicAngle -14.04/Ascent 694/CharSet(/fi/quoteright/comma/hyphen/period/one/four/eight/nine/colon/A/C/E/F/G/I/L/M/N/P/S/T/U/X/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/emdash)/XHeight 431/Descent -194/FontName/MYRMOX+CMTI10/Flags 4>> +endobj +642 0 obj<</StemV 83/FontBBox[-20 -250 1193 750]/CapHeight 683/FontFile 682 0 R/ItalicAngle 0/Ascent 694/CharSet(/one/two/A)/XHeight 431/Descent -194/FontName/YVEHIB+CMR6/Flags 4>> +endobj +643 0 obj<</StemV 76/FontBBox[-5 -232 545 699]/CapHeight 611/FontFile 683 0 R/ItalicAngle 0/Ascent 611/CharSet(/asterisk/C/D/E/I/M/S/T/X/backslash/a/c/d/e/h/i/l/m/n/o/p/q/r/s/t/u/x/y)/XHeight 431/Descent -222/FontName/KKNBMI+CMTT8/Flags 4>> +endobj +644 0 obj<</StemV 72/FontBBox[-32 -250 1048 750]/CapHeight 683/FontFile 684 0 R/ItalicAngle -14.04/Ascent 694/CharSet(/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/beta/delta/eta/lambda/pi/phi/omega/period/comma/slash/partialdiff/A/B/C/D/E/H/I/J/N/P/S/T/X/Y/Z/a/b/c/d/e/f/g/h/i/j/k/l/m/n/p/q/r/t/v/w/x/y/z)/XHeight 431/Descent -194/FontName/RJSYCG+CMMI10/Flags 4>> +endobj +645 0 obj<</StemV 81/FontBBox[0 -250 1171 750]/CapHeight 683/FontFile 685 0 R/ItalicAngle -14.04/Ascent 694/CharSet(/zeta/mu/comma/less/slash/A/M/P/T/X/a/b/c/d/i/j/k/l/m/n/p/r/t/x)/XHeight 431/Descent -194/FontName/NNWXKY+CMMI7/Flags 4>> +endobj +646 0 obj<</StemV 93/FontBBox[-15 -951 1252 782]/CapHeight 683/FontFile 686 0 R/ItalicAngle -14.035/Ascent 750/CharSet(/minus/periodcentered/asteriskmath/plusminus/lessequal/arrowright/prime/infinity/element/W)/XHeight 431/Descent -194/FontName/UCTUDM+CMSY7/Flags 4>> +endobj +647 0 obj<</StemV 89/FontBBox[-341 -250 1304 965]/CapHeight 680/FontFile 687 0 R/ItalicAngle 0/Ascent 694/CharSet(/Lambda/one/two)/XHeight 431/Descent -194/FontName/SQPBLW+CMR5/Flags 4>> +endobj +648 0 obj<</StemV 90/FontBBox[37 -250 1349 750]/CapHeight 683/FontFile 688 0 R/ItalicAngle -14.04/Ascent 694/CharSet(/beta/i/p)/XHeight 431/Descent -194/FontName/VGIPAT+CMMI5/Flags 4>> +endobj +649 0 obj<</StemV 101/FontBBox[21 -944 1448 791]/CapHeight 683/FontFile 689 0 R/ItalicAngle -14.035/Ascent 750/CharSet(/minus/prime)/XHeight 431/Descent -194/FontName/UUTSRJ+CMSY5/Flags 4>> +endobj +650 0 obj<</StemV 76/FontBBox[-27 -250 1268 750]/CapHeight 678/FontFile 690 0 R/ItalicAngle -14.04/Ascent 694/CharSet(/A)/XHeight 431/Descent -194/FontName/DGFYTZ+CMTI7/Flags 4>> +endobj +651 0 obj<</StemV 142/FontBBox[0 -927 1542 750]/CapHeight 686/FontFile 691 0 R/ItalicAngle -14.035/Ascent 750/CharSet(/infinity)/XHeight 444/Descent -194/FontName/ZSVKTL+CMBSY7/Flags 4>> +endobj +652 0 obj<</StemV 113/FontBBox[-15 -250 1216 750]/CapHeight 686/FontFile 692 0 R/ItalicAngle -14.04/Ascent 694/CharSet(/pi)/XHeight 444/Descent -194/FontName/LIXOKG+CMMIB10/Flags 4>> +endobj +653 0 obj<</StemV 127/FontBBox[-55 -250 1289 751]/CapHeight 686/FontFile 693 0 R/ItalicAngle 0/Ascent 694/CharSet(/zero/A)/XHeight 444/Descent -194/FontName/YXDKAB+CMBX7/Flags 4>> +endobj +654 0 obj<</S/GoTo/D[27 0 R/XYZ 150.705 632.404 null]>> +endobj +655 0 obj<</Next 695 0 R/First 696 0 R/A 694 0 R/Prev 623 0 R/Last 697 0 R/Title(5 Operator names)/Parent 3 0 R/Count -2>> +endobj +656 0 obj<</Next 699 0 R/Title(4.1 Matrices)/A 698 0 R/Parent 623 0 R>> +endobj +657 0 obj<</Title(4.14 Delimiters)/A 700 0 R/Prev 701 0 R/Parent 623 0 R>> +endobj +658 0 obj<</S/GoTo/D[21 0 R/XYZ 150.705 182.327 null]>> +endobj +659 0 obj<</Next 703 0 R/Title(3.2 Single equations)/A 702 0 R/Prev 624 0 R/Parent 596 0 R>> +endobj +660 0 obj<</S/GoTo/D[26 0 R/XYZ 99.895 479.206 null]>> +endobj +661 0 obj<</Next 625 0 R/Title(3.10 Interrupting a display)/A 704 0 R/Prev 705 0 R/Parent 596 0 R>> +endobj +662 0 obj<</S/GoTo/D[37 0 R/XYZ 150.705 92.908 null]>> +endobj +663 0 obj<</Next 627 0 R/First 708 0 R/A 706 0 R/Prev 707 0 R/Last 709 0 R/Title(9 Using math fonts)/Parent 3 0 R/Count -4>> +endobj +664 0 obj<</Next 711 0 R/Title(10.1 General remarks)/A 710 0 R/Parent 627 0 R>> +endobj +665 0 obj<</Title(10.4 Wrong output)/A 712 0 R/Prev 713 0 R/Parent 627 0 R>> +endobj +666 0 obj<</S/GoTo/D[43 0 R/XYZ 150.705 262.639 null]>> +endobj +667 0 obj<</Next 669 0 R/Title(11.2 Technical notes)/A 714 0 R/Prev 628 0 R/Parent 597 0 R>> +endobj +668 0 obj<</S/GoTo/D[44 0 R/XYZ 99.895 377.508 null]>> +endobj +669 0 obj<</Next 629 0 R/Title(11.3 Getting help)/A 715 0 R/Prev 667 0 R/Parent 597 0 R>> +endobj +670 0 obj<</Filter/FlateDecode/Length3 0/Length2 4692/Length1 1120/Length 5392>>stream +xڭg<kƕD-HF ft#zDc0ƨF D!z/ E FLw}k]Ϻ'g)>?Px +hG!! +' +hp`8'-@hB~IC]004 +FG0+ÿC ` +-( +⤜@`@o;$/r q Kx:w߿'np`0(( +*hP*͇G#r>;̾{|RLCtuyNO#KKɞ5wy,:Q~[Ώ5jKj_{ͥ|mĵ9%PTr2 $.US~pȌUl̕ +ODŷR,NbtiA&J:=h1U,5wDmc?s[BLJkAa䇫.=R5U|%T}X;mMĸ.-Ua[pȽy|RD@3P vF>rNZk`TVYc͕w![^'"j|p,0Gk'r96rLJ /a_̸ũq0q,>\I"ʀ!]Bu7R?Țݤϖ`682NMKqNSB+=u^pvjD^eFLUY_|(mr7|C&fg
q^S7CGQM~x4,nN\o.cCC˵m9>a +}cWGt}d)d`Ri@J[>]qQ݉&̘\Wbw8my۫w²Б9ٵdÝ߃)ٗ_A@@TޚeO1[<^{|~ ϳ}%7VX:ALhx茗+ڪwq%/5⬤YXVF}*uc^wSWb8Q2IKQdзbKaCR-qgW^|Qe}ƼB!zS +#i 2[3W gWn#6`6ٳ(只HxDeiOW +VH247k,3ϖLQyQ^lˊ**kSTk|sú;nNgCduD@d?CRV_Ի4owG$,뿍Xܭ%xGYsE羇\UDuMNڷyF['p +kf)WBCq(]uDq5]KJ7h1-Ȁn%SH%)&f5.ez wvP~}H:5j}%7ON}>8Oe?8^~e +Tse5j[ImM9s@PKcPyŷ'W"K8NW3cR{Br_<]GP,86WF6Ѷ7Ͱt&V 0eu +&-jFђm
')QuYM^](7)P~nHJ3ajQi&ڧQRxOt:^RU#VR''{fn1̭؟pzV$OA[|aX!OeeWMES{f\?uWr^c}nIfw~N*RnʝV"J+.Kn9S{xCFMz
X
o<eZKUABԤ&fik`w. gΏ%CֶJ]rHؖīBh6ˠSQSNuG)F)'r˖7EVGL^J?5q1ftm4Y'fCsٵ{hԄcD(W䈢 O+\M+F[v4'$B;9M.9)E{YH)KG{ C>}泎OV]hCS/EBV֗MZ2؈`JÆ%+o_On2Nr +g{mH{*oObEI_emN~yM9q3v)@0y8Ƴ|n;eVyǞ5,yIE|SYPNϗMDtj-UWAee/&}E#!:o 5=CA?wzY=o2ddn\aBJa@v"Ɏmˠa$H=-ma=ǘ'V&}mͶyhͤFnIOth3]ʅt43$M;/.K6#YfcqΉca&2/NrQ\<;[.LԆOFsCΥN9t^ m?ƕM
W(tPp_qk +tmL'A{MeyaTF;rXӚQ3칞ՋI:HG92)B+x"2?۳̃͟w=%51H:y +_1Tߝ&#\YP#5ÇEEiŦS7$BV
xEkɢU@zuy5|2iMwۍ\~.7~䮘i,go1cuS,m'l&SҚD{W5$=S)D6m%S}W6ux7t̸aw:OWE(G9W}ɪ4G۹:¯Ν.} s&nSр-8y{ER.G +4^TEFhIx1>!*Qp/(wfNmQ?I:h~ԩ+܅5>/a)=4z̤=Exh}3TE^܀1S4W 1!֧ +xD4kpc(8y1^Ҟ]c+hM: +djVʗ︵by>gT0"/kbpEwP{]^3) +QKփT ^Ӣl@7쯤 +wzeg8&❉ +endstream +endobj +671 0 obj<</Filter/FlateDecode/Length3 0/Length2 2183/Length1 848/Length 2757>>stream +xڭRy8{&TNʔ}D,1Dlf,CY!kdZDu,I-vBv#ǾQ|S]?y~k[i,*\0pU5j +T + ř/\4ѐP/EG(G/e>jlpE`G2Z%ɛVF-Y4=niD/n3nEadwgJL/`#˞"N\Ǘ=O<mT< kWK;ct};1:
E%[(vÅk:j{ѫ/9^1%2͆+zi.ڻZۮ%`,FHx41Ԣ=Y6>2m"dV7_DPo|.:u(CU-Vwv +e^y{kBrm!7vGsLĘAp3C]5,zcf0Zlfԝs`ٱVMџK,#}VzTyvAbsv^xf#IUc&*'#Z\QBO`wbOf_G.?uWYlF<r٭tTGǽJFPs霍HnHhq]L@ӶnɆ!6jcP6e8pwm2W'o}J[k?:Y1رDa^2L2D[aC#ㄹ(Gq~ԷU~MAhK+|cȿ7/il3觙ynn~_EyӪͥrX3݆ħ=>;^Ԧ; +nYuŋ"-=o/REN>(;68*qI@<5VV]c+A`A_w~uYK%}}:"o[?H_q.}2lx|%喋^&[#\uW)m=W~P\υkz'ɰ*2V0wwQ/7&wdO\Ao$~r%nCV
&\O~w_FgHxG{&ҿi.YW[22zўA_fFq}G^SnY5{rJ6g^lhBPLSrrfMRSOuM ='$BFsJoͺEId_}]dL5 +<o +CVօvX-ԃX_dvl̸I2'RE!nuWԱ0H̚ƙ^|~Sj~j#?MůW_wiwoy0G;OV/8F쵶t!C<݆>K܉J5<6%rr37h#9ҕTɅ&!Z$̱UY1sFx:@(dӧ&7,:}ʤ'{̞ IwK2dZ[-/;GZEsnxyT=5lܭo4{_3ڦjt3Y +endstream +endobj +672 0 obj<</Filter/FlateDecode/Length3 0/Length2 5166/Length1 1151/Length 5881>>stream +xڭgTkMT#)!tޥH@B(һ WH RH/D;H;{ޞ}?f~發k㾮>< +D@ + + +@ +CݜPXS +xP +r$!G blc=?}gFCz4݅*ߦkrSO
g5ڛ߄kWsL<q%u<z4cxP=Ac!Fډmv^}64*4-e>؍>Eđ?TG +uJh +_sL^`>(n&1N-NzYb'E{fuۺ
+ſ&?=Π8{Zl$c|,YCOjBظʼnFWF(@w搫''F=oУz]dX8%vl}ix;d"3v4}@) {Yy#k;|[U=F?lV,t7ũMi{J-GM]Lp*vC=i $KCXBf;(FG[#
<D?fLҲKҚx}.SlhZj:gJ?p [y=WZa|B</mXHS`H",:?tѥP +8E*t쓝J+R;c51Kutf4U"
P4+ߕ]TOuRL=?Ku"HX2h\y3m$8'}RB,,;)a+.f.%Ц`Aes=nlaYV,VL%1+gW4rw>/ny?گ[GT + n蹺רG
QD;S6
xX9Pu.
RT'F.4'n1䊛!8Uu +JWyr>q[͂^YPCXRLFhC!!Ej +dMU)+,_(1_W?V، *S=a* m{_jwK"b5np5I}RxZ< +\3b=je5Rq̑AgWj玣k|+$QL0=ͯԟ1-fXB:|pvIdVy'<FơSlvy{hi[J{>@̜P /{GoK_JXWRoL(f$z&/s9<*q҅TLn +<.tZ5~D&ۛ$8d=;SkJ?IbmYGgHHPz|wpfk llr){s_+4{NQv=t$gw惐Tũ/sb,jdJjTf&wkfۓ(^Qu>nzQʡj4I%:/ +>صA|1 +`p +G` +endstream +endobj +673 0 obj<</Filter/FlateDecode/Length3 0/Length2 16273/Length1 2233/Length 17449>>stream +xڬeT]Mp
CpNЃkpwwwwww'N߿߀8sժ^P^VZ fm@HE ,@H CJ*ls0s +YY; +of;8gz;֎v=E@Y{_vG!XVpsMgKzn*?`'tCpo?X77#[C!VD]E]dE]M@?tQC@?tQC@?t.*.joog`p +*79V?q5x#O!|NңTߓƮ&j=8P)ٶ$%x)>|c,zں9:;]= +٠+!Yq~0bGp@*⨄&jPUh%MK)f3IrUluy Aov8omK8-J
B3bLԴi47F8^0D6ڂ0HfB^r<Ǚ
Rv"]骶4e^ge<HQ6
6*s||]&YHdP}e=,FEtr:hJ%)ouw~/;T֬mdUb +R5q* +YPC0
~CO>&[o
8CH+Rg0O%D,KAR6ߘY] nLφݨq+,\:F$<g*zˉZ;KQ~]KyGoB/D73WUrr1LZhgq(ȼrevot~9n |c1ҹԲiV!:*Թ#<nZMD3%$ţB4[=oN6ϼlv Wlvm$:
jKF"va%yFX7-X4)ܴYZ{WEw"yl8$/%IOrTw$Es%WpfE$r٦I?~37cAiG5=;ߌHSRbHٜpF>څ2;[/{d(dȘf?rriv!E* $mzeߚc8džJ컵Ao<jKZ@L} +th
)* +rﭧyRM',Wd̬{UJ<|hsW|G:d}"y*:N䒌|8'#K +8y,p"nHRlWѨ:"_edv4M6!5_d^)Zћ5ʧ^a{v{_ +_d-qMd>ޮMMHwәʟz%NH<]K@!l˷ɂXSY}D)>ߎ|ɭW"ru(NsJaAodx6 0ͪӞŪSRFaLܻqRc,#@`Q*A2++ig%J aڢErOnUJo& +YmqےZ/]E s,ay)˶ +P uz3Q*AlquQ9ϣɡqR[
z~A*`p,(;rOw亸f`ˆЋss:Kdq2&}2ͤqEƪ^~-l〨_;|W緦'#= +ҏSBcDž'm2< +jЌPcĘ-ϬtM>ifr: &_ +[Xu9S3o=*âճ﯂TkIO鶩w2?)?wfGeX @{2"eDqhU#`:ՕHSDβWa{YV^`m5orrf\(/PL
*lfl>M`r0?2YĐjFlvIL!I`,_Ɔ=kCc37|I6jriqac܄ftdfL Upx\< `;)*Hֻ.Nr^PfZ{o{T!ϊIWR! +&#
ǝy0Կ_H"}MW$EFE GH "ކ0?ykalʵqL>DΧ^3@-e ^ڴņ#P7YTWks;([ǬZ~emPjVI6>)\I|;\㦛@N}GiG|wtLC;ƞ'>a{4)]@:ւhul穋 ~gBNJQԱ;QWҐe@W&!zd<>0(i:z>qQ<Ab1Ԗ's~7%uY(;ٺ{\onL\\% +`fkP.cn &FCc2}(X8[vnVU5rdJ]ѭtiq._AJ/}gjA&!r=+\^mk%B+]^ܔ&xq5hbcn}y +wΒ8-ПuMɵ789#I1'!M*mBVu&2MFA.Jo +Qs:(ՒXYEAJr<J;l7]!9'̈́GfZr@G}]4&( +SxVȏNv5FGhrX,g,辠pm.ŰBML^uQy~CTmWh@/tP绥T9(=P}D-]ư\ k[_z՜v:e鑾T1.* RR`9?_dq0}{UNUvnWvo%a H?M)(*}.)Gٙ!rK@O8%R7=6/buoɋd<cUAth. 5ǧna`RLa2DBy[dƎ}g:7Yֵ2vfe@+/ +hP4_]$S0Pg[1N2Wmla4Lt2oŤ`+ M<3pXy8qoE""0,$rc]hql+qLߧKBzxBsW,cX%J7A53"/d&Jn=yia
nSvJ{mww,Kr;H<3If˿|%,q;I)!]^5te +\4"1<@%p5'w{ +ˤo~aƏ_a+-4@8X>Ծ^$gBGt[G&uNPOˁD%Xybj洙<1g2T`Ġy9tNd.AP%P6OYik>VjpNQV$k
Ir-l^ˎpo2nnKSG
'DeL%+ノ]\꿌A@NJUcAz"VtG,@};|z"dbLX!tCb|Ȧ{8*{bZ
NTN.qrڻUnO +BRyWƨlK7EgM1x$QfNLr(-CFb+"e!OsΖp}3}/eV*L}$2f +(4_HxZo^(Y3Y r8I/{sXg<<O{+J-Qw*)\_U{lL~c'cӌ:혹o~hZU6:у|2({Ur&j{<?`W0?>+$PSYN*єݵDۨqhtڎyEcEc!kib[@ӒgRo0-C a,YmT;f+UYᇛBjAfp'
]'\qj]ڛntg6WoؘlsqL*<O Ue`43D6< +=],@߅([(_b'1o0E^Θ) U6qxTnZ_dg:tq0b'Gw4}
iUv_W}䮋Gݥ +卜&eJ"3w)6׆2r3"_1,,CcmhRԊucgXU<Xċ.oL0&D
g&P8r*p$PBY^tH$iIMDQs\in#lD, +&'(PIF&\OF`VXn2t<_*Z_^A3ܯ(^oIյ mU|&ݑU{#pMjxaK7M`pkFCCpq/L:\df?줙̟iS#b`Ъu)Ac_vK{qص[ڼnȖP9cԠH]Hqk|"B}H(H]ѳ,$?`f56QfIϭ08Jܿ+*ԈA`Q\I־\gRq=ȴc<6<;C0ߎCSv5O;&j%q(oU4{.$g]H +m1~Iqg[s +oH=),z%>Ah--u +8]ֻS +\%f++YњL&Zt[a!Ce;=Jؔ^ͫwXꖪSROt5ڭDZL$Cck*'ZKRJZĴ(1kAl%ycK&g}7tނnE[q)vtŗ#r+SܽƴeuM5<199U*pUN}hȽp45ƬI'QBpүma&nEiwo^WLN(>ܬν/;VU˸t
xF2uH")5$ZFHi
IM"1ܦ$;X42Y^T<d#V?h ^һcɴc>UpY)t,;MYTVF?QxXtkvm$[#!KQU^s>v9c3S9ʳʯg\00lEZB'{eQ^C6bRK.;WSANz$dǩ\L1*36aӖF6Z;wݦ*b$ʈ0Ê?"dwic]ıԅq$K+P^ynqԇà(RshrN9tY|^\Mͪdwi#zk_2. Y4=^
<13'7<2Og\ʧSZG>@՝6/[B)@2ȗϧ/2<F$
J?dhL o -q*d;K!$j$?_g> }[K<^j~ۻwbi3(eUej7ECv(+ĕsZS
gCmg^[.H
1al6*tJrٵnSX}ir2+']#rZ| +R84x%0@dXqwv5xG/\:rP]vh'jW}{wq6/#QJ!{whk$kq"ߤJ>З`_E./_b2 E@<@&g15+a
|6DyEB+ֽvˋx +pQ
qqFjxq̿)5({nflZEF
v&ǚ,y9r˦C8IO +AfFڧdU<4hgȄX.T#_'@ik"<'YEE2&\x@ >M"1^lq)lzfiǠWur.븣)3gܙ.d~#9LSm< +.Fہ;hJd*# +BQ_x:-k5q +m.k2jڜF'2E͵P&j9y0lL`3v '5.3HXa^&`F@Nc%Ѷed?r0ӕswTI
ejHOhG +"pVFX:G
qIr/t0Ԧ&5RbX6
%)_l)x9i㺐VPfI~uoM;3FȄ߷$FKW.)ZC$3&M˺F>'(1M =} ut״g).V EV
ÃE><0I9鍗 r;8H'_A-L1`l!qa+A~t';n&xXKZ6/nZ"<TXBs6YSm 0 kE9o JCWMQy 8/N-0Y)-"z4-r!c_.b1M6o0CrXcӏ!ޣC~=XQQHܳr +S&?lzVΒg
&w۰s$a,+buWFC1un$c~:w_S7qt iώ?5Nf»&eLtsM:c~@s\@6ʑKs"ۙĺ֫c]2Qg9|V\k]usw1.Nb]Na_ApڨDa=# +^wAl܂(|5% +/>q
R)G[==oa[W)DFhN@S1_^`}T !TB Ƴ<֬味*5>W4m4KY"-{+(O)0QFkBd4A{'S$^(|$[{M +`WM*ToXS0zk쏕oP2R!l3P1l?Qiqʿt{^"؇&'רzM)=#^H$2.6ܐ<e*r +ÊJ{,SIZ쉫j$-'Cuq}*VpJ܇1N}W%P<1͌գR!R +XTUqn.Bh&LJe;5alxL +kTT>K}sNCA]PZaV~f=<a@W,Hkc(ַkCHGDV M#i֣ ,9"5';T rz[,J8oBբwP}e1!F$H? OPD5HiP58Y"Q<N-D}6X+*/";]RekI[q Јb,@_Cd8P=JN!FǕ_f;TppSg#XVPu +}E>g9wWLwB>Ot t釰8aql +C
NKu;awbտ<0IeHW>5h6&#t}u_3W?zy98P)-чo۬Fr}bͦ`^?()@"CjD\,M%w\6v#%Ys0&(kQ%Ef WcMoYq㧺;3Wͭ3{]s'K>M$LEӯ*cdmv+>l1w6]*v4j rU+J=R7u1
m;)nyQ
]3TgҚm< +"M="[B#qzlxO mIv|DPM-VjFlb '8~p`,!/ +S6Gb +S]}3wɿZeTwvqf[O6 }o[FF^ +K?ZsJi23SiRchVLr<gd5ɛJZ\R/rO#c]C8yّ8G0ZT zb +(Bx+w&U&l0T\5Kpǖ
,"rH S>pRЉg֡XMZq,t셠m +5&;(t\t +غ62[xMAa[d08PkOQ25
dijd8CPHvIk1Usiy-Fo2M`Y'DYv]s:ݕHyp8Xd:4ѐj+ tQ}Jz>5r`"k4 HÊmCL)06Gj&~Q`o16Uwyb '~gp`Qu6nv5!$ׇt0&nA@:=W3CJzɋp(+^A4f09:*h:lxFc_ͮOoPg@iUw["/G#9tu+٨Qev+Zy72E?z!;tAwRr|Pf궢@1Wb{։K +mo5MujpMxi!ZF`D#:T,a&+
~M2ٝO04J8^_J*WXq|V5P#UQc><8a\Hz'8+mY2p]?*STZ!kzc!p/H4*7LY͍$iq3_YR17K=HÅqO!,bBnBkFA~no@%a"sI3mq.~JX:,x)Q]4y*Pnק%qƎRc)7v36./1P{/,pG_)ۥ-u-JZ+P!B0/3(͉WG~S3fn=57~skBU9 +- +<N<ݔ1+OT${[EqH0]˵PФ :ٟ#PDY&Rc +gUk>#rPN7PUNZYqH|be߂0+}D7iIyjO{yNHWY'̃vsPU4==Ʋљ[)~~,c6ăAQ؛hᗜ/ȑfOj~(>ċ,P/5<! +U62R8|#k9L)iTGr%wKXw[#3U>M^voaQ;83+&:t "VtVbSI2{XgwM@^v +*:7~eRxjrwR +endstream +endobj +674 0 obj<</Filter/FlateDecode/Length3 0/Length2 11269/Length1 1727/Length 12219>>stream +xڭUXMw иkpoww
+e53 PdSP02#RP9]@.@^ + 3~5ʸZ[r +3 +>!pQ?.(x!.%XE++C`u?VC`u?VWC`u7X]UX]Eh!OEhwӟ4CL3ض_/[ޭB_ֵ,`]!X/:˿4/r_v/w(Û +~XJ4uu?.^ +|/@Sĥy)_uZcXDd-ESb]Hۢa9GZL,}}bgv1_snF^-ZW +{w'hm7J#}'yp$ݺn_B8$3m5Ck)HTK#ѓ&V.AIz7Gº8Yssv1t1>?Vf1 M5RƧ +d%sJ4%
og1Ά}t +JCX~,$:6?3i`oLԯu&T焬[1.S'jT/F^o,Ȓ/>Zo罰<+Qul,jDz#r:cRw߯+QƸXm1#HZmiش2͢ZCq$<MXp3 P2|l[NXO +H^hU,ZĘ
_bg +>FM}l>BӧQ)I~}~[%څй("`b,]W6%f{WD4MbqQm힓}s_c@% `Qح LO# ϒQrՓZB}/)y:N-BץY먎ؼifḰ(]z)՛n/sT,VbDGy+\.I 4(YwG/XDtB:%{VgCK褁( +7LYMLugu8٩)3'$?pMw&'_ +܊h pet]Xq:T@5G#Q>82S
jh\놟bퟒq': š_By\'{f
t@_zy
x?I 0ENR#f,vZ_pT?h#1w{r) ۠Ӷ=${z?(ʪZ~fx7p]?НL'P<OU僀^2ԗ +]D{-|,zj2Gzgy5(v
Yڭ5hQ@D(ٸDQ# `!8{ӒM,+v 9qKjY@ C~TI|UF7$]a>.e_kk[XpcOo] +5&OVR6+UZ\YDJ|4H-'/>v0ƴߙB8VߟMKPHOeD@LZ*ZpjM&3HEħT궀w۟mqwӱ!eѶtL<$CTF +;aBK1Τyv,l16<9_ԫ:bOrQ`7v5neF?Rǜ(*.;*p0"k|Ɔ +rK=1j֤)HwTX,4U@-Kbo~If7M{kO̡z{wFr&v_ze<37ṙc=gp߅,uxָHvwg_b!җa5u;8f߸n%ԐwRMrqsZHrcIU8}=xntoezք{k
GDIMZuI3 +ua\y˂]yEr&RƜۇCԂr%a2,tSΆQ4D*RpMTW,]oǴ0;ɬl?C_XO1 ̀Q9WpRH2ku'S6[!WvҶQtOE%1a\y(!pzcYn{bxed%)j=z7{/
V|tPNQqZrq!Dv&haS;Y4!QKۣW>緊4"--EwcmDwP®r*I?}a'ilQa
14(+v;"ƫg3}Bf_t?"/{Y),AiŚ]OFzod|,OZjQDtYvfԃW3w@}HpRsX%]9FA[tʂA[KTe>rw`86U26DܾގcO_Q"FP_aQ +~>ڸjOIrHh_v4PWb3I2EEU%rH9Ms`8hTl\/TF ~?Ԗ{Wg
6eb5^ݛ256(7 +@H=_z6j]~M%4ĆK\l@ϨxΪX5TcVJ3_k5{QD],ݷ'i{ + W!hzg,vAdobA(ovN=dN1 +&.m5S#;eS`d2>PT9;l`]ܜ]i\w
\+tC/W,RtZb4RNc,SU!wxЌt 1qv[vDRoH9;=dTa%0x2Ή!89Y-ngxgK'>#$w#/V^(|Co+{ZY0~al LKVJd("^MgWҎ,߲ȜEc 5jK\Z_{Q1g5<{<jVʌ[:[$9[`UٓgIzuK&hTրMT5)\`~J+18zKibZZ#f\|xd3hBZNl
JHJ&5C8tU&o6ٱ@\
s]tͪ9O8-AUXbꅫ^SszO<}1Kp'l6okw
B=
VCfr4O͎0?R}ձD"I>fOtɂ۷.}mTx$1ԮVR^+Ѥ|
ZO(D\=otX[" 8vgÇYY/})U^um9=Mnp@eAXBЍ/nXZ=Dz[~q~ɔ &{ +F߃'7*BccKQM)!!:k\jrBty~LWME3ũ\L caf +FܑjzN <i=I +b̢6):<ƞ9yZݮF hSjC˲x#A `ezYKd?OԯFkXF4[VVZw9N-K{ +VpT%Ms ,X[[{+rR9 +ĀUιdvLO%wOFPcMB4?>D_D +;U咃s4& +YExb*u)F@Ĩ${b˴HF5kTUX_LB-vW|.K.ȺGEt2}9W-2Snϧ"0nLY;tr@rh}VZ2a5!go +yHfnf8wѷ;%ԜOP[똰!XXEνҩcK[z +i
v2X6Ċ;䉗z&h]'v}j=pH +u;Yf=G5˨WHkC=ZH.ɵ; +(ѸJJjl{<[:>PLBaߥY?_yF4Z!@ǩ
&vMYTnïܠӽO +-)gs_\yT_u<QWX䅞CKVls5Xl~gqS>e]OUC[)\EO6'h{(\Dž7/dSP{K) +IG/O%ɶ$E?9\nd}w["ߗ/<30<wcrWխIJ7d3[ +87[ +V|utsw)N +!ȼPNEg~ +i"jT5M]21r +@T;gJأC>0_yO*mq*r_Bs8Yu=>;&jn嶽OsUqO[2-OXZ^ +RɻFfW;ڏP=M݉0^qQVN'nu|$UHLG1PbΙp/HRg2yv`*Yx"kZic\R6DɯŤm-S8=gx.1h=hYE!A:тW{C* + s}f;;.X;N˫-~s ]!fJcme%ևRÉ +3KD>~d_lwp8Ҳj2/-FAT]zQХ|6r˴J)q]뺿 +jdy1屦RD*HE^=HDeji$_2+ƫ[&e^vqbgFE-=$i(6W=jptJ(Gܺhkl~@yw
+V +[ټmYe-KuE|Ȃޢ +- >#qimVH^0oPwh"tbuף:,
D@(e-=a5rT`e݇6\ߌ1Ftlԭ`@laC̼8\,!Q,,4c)I!s{pa)Q'7w>RNd+EC\'/x}
ް͏?bGOh{A庨2T}WR6Ayf,
[ J)(I䣌H=y6#Ǧv-xnYb% +$̸n٧k]F'L-aC[SU{80^,fzvD|bkaî|ff%ޮG,&Dբ?>ɬ-efXE#zF<m*ݡ`3"禈- Y)-w(RXUHy*6r< +k6B=l@k^]b=F$ܞlVZK9TRvԽ)*,;zv&ˋp讲<q(=ډ +gfSf>ʕ#h%`AԸ+1Վ4}-{P;7-^Q=6W\óxN<)(C^%IK>Oِd+zy??I hOp53>Vd_J$t嶂|G}>P}DRrswXbY~:̋f&>@W4?h ++Wr4f̰\ɟ(-5ϪG~ZĢrN;t[!<?up(9sRäM}z#qXj[#
bJN䛧9ԈW)f}%"Uˋr }7e +O9_?di
3V+X6.fƌskeđjf@V\i^LKݞ
g4(z'/Vd@;нSP]hဠVk,.{ֽMCOvWq@ l5oUp`ەMAyh+ݟ#RPs;6GY3ib!9[Ɂ#< +7!c<ZF>%5\XmR4gwqXD>x+ʭVL]&ɲx~8C,GC,(;dR7R ӯ&^MۣQ{KQ +=R0-\}X +endstream +endobj +675 0 obj<</Filter/FlateDecode/Length3 0/Length2 7438/Length1 1395/Length 8239>>stream +xڭeX[۰DZaf:iiI:n:CZ:n$%|g>[gk]ks]+V5)D +0-L'uz@ա03+wbo +- +A#>j=ao^-2yzI=V8Jp/ѣ/
m4\z~
K&+/E^ŸtjZ]kp.B:uPNƅE~l1x'm_Md"me Uo@ky?3o˦JXY/45Z?yq-ęXQxtu"#q, +%+jǥpAv7:aby'ˌ5.5NCXitq>Jeq&$7*SLdG1x8;@9T_ѥ3R(rqt-N斌(1g_ +eUVʙrZ>ߋl3/`9U?|$-<ߓw_Wrl_ 4.2Jk;Wwsf2<~T{{)85ɑ:.Ǣάór/yT3vVOb5E`}="^<Y' +C;^ \/ۭxB'elEr[)rF[zl%סnͻUo# Z@0U5R("6g6 +uQ\7#c;&ʎaRlnq>=DD7ɿ8v
o!ĆF6= Z짠Srb"uЙۿ߮* ࡿ*xxS_?wDo~{ +Ч pa
YZ4!hԼ;"M²)\-$n0%9{&9g]6< GQIp|7XCS=(o
u}njq_pguǖ&6aOӺP ڻ+?R|Y6@aUE.3[")۵oliPX5p`$s2/S)Ndðqg@=Qh1#pκ +WˣyXb#W~̧I8C|de]{5\N1fX;g"^>hȠߟ`M1eVy7 +EEϹTDkѮ_<u`-ݶd` +瓂WF&}B].ݑ%ei
ȷc8;- +yi) iKǑrp_-*+ёQ|5);M]ҊkHZvi:[k"QzV[&WW2aڳ,?⿌joG)^~P'㹖pmzi֢%i,˳7C33K~O*_m{Jgvjpn8i
K\uD0c".m$t0D;g!<2Aa)[sffX&[
:ZKJrғճ;\ộZ1{gM٫kXf3U:<m{/^YRG>#/Tv-R8b(>ƽM9.K25_6s +pvԓ>Nx}3;Fd"i-\\ +V@DP>4 +%\[2i6Ky{~\"6YWfIt2b =? pq(pAKQhY\1=z۶f'jFiݠm +/ǘ9+1qʲk1Qf kXT)a,7:;͉<[nIO.EmW) 䠄|rSbS7~|`v3Uu2o<隘W:`,oϼheޙn0(CBH#gvLmRinê?ag6R|oqn/O!OA_3?݈n$ +@zH=`k:װIJ!
V/zRK
5#u_D҃WP~]}k^Wy{2s`^
1<I%VÃ{# eTD$h" tE+bA &62fȭA5Z&:\g; +J +gBwdv[c4o-F^֢̍u`w
ҫBo.
m9ȀkJsZ@1*"Ҽ1pٱNB(Wa%ig#҉,f&huj#
+V4`E_ +Xw<8;]k.Ac:R[^5HΘ(zω;iH[npۅ)m/89p*:jh/6&J6͢*5DW:W2N8 f3#}~rDZ=BUo[.V.3u{ +]Pv>ߥ<~pi8.?8 ~iu>.7Ԟ_c|"H~e?Aih__ˁvIF,bC5Crf&ߚk->~%tf|߬s֧NH=uK*DT.soHIw8_b*P +Il,5=*V0}\$ruRsPVX%Pzs++AkV +=)Nw+'1v),O{21\vB6p2)+ +UҨ|Z{<mwtE@f֧:Ht>NIIoFU$ge܍? MNGpfne.zvɯ$ٴX/WEVsQui=ҨSk}}h:~/<O.9jV-#G50raLnS3%t'!ꍐ-iB$uJFFa& +˚+I7\BJO-.}j.?ற_$ +?Vdهk⊗=M[p^}qqϗ}Â`)͜ٻa@"*I/䞢tOPUPvMx=JkG=?%4bb+n{t9 / +='BCb?{dSU\дhqc?ԭuK XY|WU+!$ýA<Ck`l1=O<ץu|g7gZtsT2g-;J@ܴd+56j#$j;;w""wS<M&7Ѝ.&T9[,$^_2qBJdΨ۩xjJS>nhV~#>"$xG}:)a?u/X>U=.*nJfo:"cwdii*YK 8%y'BEf=]LvH}xYGSex40qA\qrvZ bE)m/s`5p\
cjIMsѸfSAPH|}O!~41V[V/dZWM|cՕ,bK2v x6,o:0r易)vmÝKgvDI'ԯ@;[e1A"
\зh`]>h0o
^)SKÒq$)U.e +`'xq˨Gy80M5c1;]t\l+./OVN]cX2PC`m['9QP6s`k +)JKw3a{RIp }|{=PXBY,ݸdaO*GfGP$T^u,PC45fJ|_'z" +vs$ePN$O[nP9"/{m%<!J^vX ˱*F$D` =T+5IR.R+J$[&.Y"^-n}*51A>,ˣȬf!=g]<'Cti/KiOܔ$G^ 6C"M142A)3R>#&zATq~,8Uڗ/%? +JLyCo6e%dΔp']_m``t%.^i+N5f;Ϣ!oLo蟸.=zFbS/"s@AZ74;\F&]Uu5K[eme]U@&'^BKk""GG?^ +6vUԮ7ٱhof鲿\l*V0-# aa~oΐ)><3dS*L4 Q,%/h1B6x&?By'E'@ߒܣds JȊ.y¹G@B)N4Qj/V_-na@ +]o 4~|('-?g4&_y +M/%ւNԕWm8nN1pJG>5Ոv>tJW<q]4~x6R*TtZT٧+I)FX] +2D3A媍j,*};eMHQ~lўnfD +>16ҟRU,^ԉ#-aF_<oY_ c.ے0ȶcDfqGZ>(5 +(Wޛd}+Wjt/izȒu
U,AHwU%w8Bp8$Rߤ +endstream +endobj +676 0 obj<</Filter/FlateDecode/Length3 0/Length2 12354/Length1 1719/Length 13298>>stream +xڭUX\ͶhqwNh݂CkCp'wwzf5W*2u&1S1P +dPac1#QQI8-Av +ttKhI +}T1sϲd0; + +rqa/3pY}*Y-m@&qC%x[7(ۓC!p?\AۥQ??յ|Y>9V`5ӿ{_ϓ!X/u`YV!/K`+ۿ/[B_rV?G/[9`+l`+l<$.r.;>-8|O#_|&݁&H @ɼRXzHqJ3mq6k5:O?Ұ`H^[TǤbS\
<t=v[foN FJt2.sTh?hïAturHhPsa8ra$|Y +AhdX`=!dǿ}x4p"匌tJ$ջi;x;s,~\sË['OV~ t}]zkgNM2Eh|jyecqUК'c4-uq6wDDl:$@;ޕg9Bţߪo J-<mw<?.^3GR])f!X4@0g%~ Ä$N2
FU +7O9#^ YCXuz] E#*60-Kֿ!0wA/"gREGA7QҭnLV:0Ia=F0S}dCz%z#4qLa[*諮%b)nI^0zW4l{=~J "-MiQW+qL,|dheXz65`ROJ}H=X|FsaHKߪܨDG}P*lטzvy7+)9jg`f~>--@$FVuiSGyE!e;M醹n4Q;~L~3%|U{K< +1g(ڨ$לF)O~
klhjcTH֨=&9^uT3vxܪV ǰwNյ$6Ԧ-bMa$^m ,5be7hPDȮ\I@;5 +"3ُ-BvaW[9-n?pJbw`Bp^T/e}o(=_dl(BX*N k,{Uy]Gb2ǷσwͳdȾ?2pCQDJPH;!Js.4Fk6'zzX1׀8J6/^1]m{C[4<9" +f`c[
!94b<EA]tsF/!-_NVo06E`FhoQrq"P
0~"93Œ8J)Ư{cWP+{m{B٧)Νr#?!fkpψZgzT(W*IN:bIp!7U(J +93A>B6dJ*"=,KJJxq0jZVAP^u='(E NF*waAF^gdhAʌմJiG 1ӣ{"xN + qnw{&W;"ʯ]lbKn*ݸc/j^77ÈGc9\Г7;uu8+H)ھl'gJ7 +ڸ~<(䑞C:\2JFO4)놬&<{Ni i|u%Hd'qe z1QiVvN)^4B}%pCsHrG~#Dyg8
&qG6&.>n/ߚDX@ +eW +MD97`1^TekX{`vf~g-Y<@t
h!uDB~Vg&7uj-)"A8I@#=̄Tt*x٨_
diMOFWasZd8> +`_Ēϥ Ye>73l~;ggt{~q(<H41˃B6lfDÏ1-먗J+8@/o9w8-ʥV~;B=y~:E>KK%JL`LoLٺ&S .Ȼg_TR@|ɤaA<*~!v:߈]ӉN%ԛQQ>ҵ#J3-_-e;S^}U|_ݚLرmEqfm'lx/;F[-ҷU:$bVwi2jFѫf\-Hd'e/x\IwHSDRJ%&lu~ceSMU}z֢{wJ \? +]{*_Ap5{"O.h!Pn Q)@RaBWW_ils=r LtWQ>8R7܃RK=^uMV%d~䥖k3bk{&,lY|P Z.l8P>t*+Vy9Ha$iAHgבO6J4R]ƞ&?aCsų6)~J JO+UtgvqP]LL\K9^lv)Eߨל2?HJOHcuv\iLwEn.m$Wg%5G9W(KnId*ͨ}+ҥ3tcs߭6
? BG_d';]1l,e)I39'Ogb:fv*{P|5t1ul7bvЙ]%ۦe79ORhYSvy8hA ŚoW@e258rDeL3:[-VXa8Gg5UǺ':B Y5&|wwpktX:Ĵ
JDZ^)u +(VK'QV"f~mrR5%@X?]ux鰍R-6:Tuq!QX=4%I0mƱѧ
jFbl8嚦}~_pFW7\}ۚ|!M94;H^}z!ޢe5$.3e^k?<Ĥ>GR~_Thxoo/{V>T=F,P&NX{
&hŅkdLuƤmUۈ=*X:jH[꡴^+T&m:T1eP쭥)*g,4^᷻]3*Rzr|G8& x\x Ӈ +3eB( \%]F{*{N?=n
CrV_>[.,^e$ +7ܞϟO}!e9wH0*P4Cw +uD@NrPmO{߁kC419RS9 +[ϧ687v^
+c~6lA +**&0?+QrX_Vn +C\Z,[=!uCq?(ٺ>c<#Ш$t~HS#t{|wM#R|tĐjsl|^+JIdKI,L}ucŶ3 qs"<e +9;Ym#S
{ +j|?+,$>֣}pNj6_͒8(1肤E9<Qn +Cp~WLXzjFByěGC"NLcuV-gBXO5!M>NQVq4ɏlק͓,sRrS<df;S1ҷ +8B:^*o}UN/:8m\4:/taJWl\ԜSkTg`t0HqTi^B.8/'Ƹq[I6bm\w#G1hޮG]J{fV)t9*ݷRBǒcF:AOyafџ]U6:. +X{NHQwKKlaV(1G'4!*QrY?JNQJSC{:/5JBZ'2ƽivX=PO,A
h +V5O⿊VG/&N]o +K#[BXsaiͻbRj_~.}\BxƊ7iX<xK +iE#ldAӬsDE98~Hy2oBkFg\ Qϟ(±Cƅs,,` ,kc /eWX()oJ3VMYaYx$''y<-7)iE*"> -f9 L7s_ӳ4.sFwDztpPD)rj=/7*A"|ύ@U{ P-:idCxNl4R=ixWͯt4Ր/ocK#4l=Uzo m{:v]US.#C[{E?/¹}dC +[6r39ܛ7mm[ߞ-n'8{@λn&x`j|hg{`LٺVНi@r!ӽin{ +W1{Mesʝ*Zr'}A| +A(vvp0hm*rqW +mEZ \,zq@n4b#<ݓ"C7[&LyKRZhC%헡nr7E־!LT4VJX `g 0 qTdlcy7Yb6]+.d"v+ +4>xZmHa +0P!c|^5/uVz+$<hrJ31ȁ>Nc+3lT|GyEv1}^h@>4E2Mތꪏ߉ʡ8|Y#oG%V3>/Ɖ=}Le* I!C` +_þxDhJ&ZgBA%_L)?MOvpC0=%B4 H"m+ +l;/ҿѹ+Rس#2-TbDf_d%YS- єı8ƏRjz~AS=Y N{rh|Ǖ^!]nr{As:W?C=z7;itfXHk8#"<$q%S^d(V}(CҕfQf+0W+{#SÊD^%{BA!fyV6ԅ(vJc"k +籇=SglFأ߾m"cs0zfxx6&9 V(}Nȅb +;%J+<嫮pzEc))zY!$S:XwpFĆ)oTH)c5fQ㑸G /2[ohE׆n + Z}JLҍ.GM2ʃ+nKɻr`tn{dxceDBvŻP4_|Vӛ=ŴsTrJUexxc2&xJ
WCO4N3^a~EE)%.&VʤXKHK)"_еo^V8͈k(a/(!T.qxW+5N 662u9
3l'K>[;
g"G1/$=g\_^%!MC֦N)"X'&u]rf +51 A~ +c5\/}ԗs}f1` +au:
.pM¦<<j*Ͻ}D`/mC`{cޔow<-j4$@M$0 kTl'rslAߵ!g勇$**PMp|z{Dc~5:u6z=,65.zf%Cn7N6/Hy,(/k~ÏZk40Te9R)f>.Zmga(()&zΟU9jʵ[Ӟ\vHkM,'E/&*F4.pu 1 {]) 3ɹ +NoZ]Enn&C?/;+{nr#)eRtjXtO9x >2ECco !zhLYGX%FAuMSQ+ ud.ŏK~W9^3١.>[KUWbt\$4%l#j8Yȗǥ\&kwWLR-ނn wLroei _pEBVҰOD
pZQl%++C+:?RqT1ඦoX[DH᭝0~וfv,UYRs?=gh?BU%YVH҉:@ʏgl$Y%UؘqST>T9g/5P;gf)KtMLru/#w} +eGʍ]3SŹ-,BWT7:V»} fL{|!=m:WP48IU8rT*F3XRNHJV7R/-(JBIv.XgZh}߱qڊ0SgiC29mY`57Ss +Ga&Gi5wB'4y3;ja!7u&˹a7v$GV1yٶ1;WԞJu=[{9_ShJa%V'Gb\TNK<GPm j4Ll^3`C'6őN,`YPxZoR^0`5"^\AAlH"8u/A DL]V?{?mo&|'h^(T0 Gj,HO +`BN:_ˤ$ےk2hW):GLװ.%G96e{u^\$GHv٪5Δ'OUtIBPLu~XcMu+6k[#+vCn?xu+^u݂vG~c4o=>Ap#Y_@UP,HSh#;$|:OWvzSؚ1L<8!B-ed[̡m0o:1So;a9!&'oݛo3r cAD{eڤowrLMBIQvXʑ梕Fuo$lߋûN_X_aիrS>JUN)&~۷ +8=/</7*訙%YdkgImÈz%pZX!į^8=LoEekLAt$o?3Q?_dCbpVB>PNpBvܪfb#$ISWF}%HrĜ>APԐ$c]8y\6%2y^ pYy^ENp\_ 8bOTJP^R)-('/?*?~ě$͒2bPI +}Fxç,m|L_J"h?r|qVe: X)?_f*̌-}b7 +=|j{O谏>Us&<takI5SW]=hD`uZ`%hyLݝ:{v{jF
⪏љiЬ?7[4fJʬlnWY~1P8R؋<vA/s}]EGV1v7Ib=pۏ~1/+~k? +KMPmGo)?Gtԕ=ٷɞS¢ A@6I&CGb{~<'9a͛LPFPV}jYΠ9GHO?-Rh~Ÿzh sNcT't*QE|74bիhWZSzO0Nswc4 +ۄ[!_}kI_J̕Li[5E],7kTϐxv
3!?
u@O.fpkyN;\%SۈNǓ_Sb`'٭>i#"j*|Rӑxf'L1<R%j
-$ahM)Ϻ|J\HL-L!ed
~MN$}8Z.Xdexr!7Rn?s؆=aq_I!V2RVp|r6URقӠx;8 j->]{9gg+!m_KˠHQ/;|y?N"`ʜԕ)<!\?a;DJ2!ru)X0<95Ξc%`UlA_7i3F@+%G~FiIqy +T&w +endstream +endobj +677 0 obj<</Filter/FlateDecode/Length3 0/Length2 14722/Length1 2258/Length 15923>>stream +xڭeX\Ͷp=C ;www<8Cpw&|1V1MA djosa`adȩ0X)(DF.vF.@^ +ff-Np.L*m@z#"j<el죯\K?F ' +;)ny吝ٹm95a)O]2G*SBME.ZdEyDQO%uT7⊳?;'
㤤٘li++^ƽ?t4$q +u0Gt4W7F:Ea_YͩOh5}"|H¯%z7W#"3fHZ)!`\Ϊn
;#T]xL"q*)!s\v~G\ +K8qnZCW4q*DYX r_u\P!&:f9u2?wG B>i @ }KRƕ6FNDdϡ|wSO +34vDuo}ߏ/^}<0t7pxL$cN3i?F,h;]yQB<eiDJZ:}#|N~~ +
Ѿaӂ5G .#Ʌܠ B;ٍڏ1^lv.|n<}Sm&wF?K&y +r!=ԡ|q~},wWu[n;)ىKtʋrOKU9,?RUn}:|C`ƳkufeUSY,/͈ fGp$o'5Dݡwt1f= {blPLP{45<ʌt|Xua)Y64XWd氆 +g>G ֊?DMކGƃDh2aT#0Ҹ)I0eR#RG%bz-Ch@ +(R˔mvX-yP@yPȁL,PHփݑK8( +Cm
9SjrU20!Wr|l#0Sq:뵴w%TQf}+C,x^+\vsrFY<3; +Po욟( +)^MК.Y?
QZ: 0a@(䭤Gl/jHRʟDțo̥A +iG}ŷ+H!MXmO+XCa|4(`}Τ$Z,yx"$fM;"xϘ~d7PTMzK+c`S/6&^C%Dj-{WB}XGŸǮ^v
PkxSfSUg8hj{!L}^hB=(tE
˟B;:p3?)X³:H#a]<m|\GbPyoN`5eY-W^eIu +Mpad&Mc)͝Dƌkua'O?]cP7f>`OMVƾ1f9:'j{Fvť}Z[P7bmq4qW[Ч$e{+X <~d2%wemmKڄU[vD +41&xZ +F!Wr
|K +;ҍ.%Y
<^ +"8^8L8kBW|c%.2Љi=ݲ ++v\+v +<t]95麸t'gxLnHb<%+ChL <L.[ft%LQ8@Pss4F4 +ESg#$@ydb2'4E XO3HHz[@0ϵiv^JE/~.f>,d,{f>nѻm|g&uM_εZL+%+!BZW =[Ӌ>K$1X|kM'0RB<`~0:3pg3@o$5!q.wY~D$29 +.OM~1.hbeHğ\M:ӋW&oa
I~^C ?Rrѫ-XgaV+[\{4L5Ix-Ei(iE[dESQpZ;`0᭰/5V)+,iLGlgȰˤiv]` +eOwxqWQI٩K(LļޘNRؤ>ڐkpFL0VG'SCI<gmWFDF%UNNobm9%,udRgU9Q~I+Se3Do`&4se:'~<E$@\ފU"HWi||1D!nWT%Sc އ#i>N݅2|}g&0~EB</rǫ7ҔSS]l4ցp'JiCMn}fƉRYt/xL85 ,6Jn{qk*6m٢Շ[to>ff"rw⺻a_Xcw5+2ud\=?E\ jX[OB*V3|on:(lrhJJim%ūTހ6ң>l.ɽ*_Qt"tlŁ +&oS#POgrOo9ګKHVTh-=dWfFeᎨ<M;V荹u8% rr67'<ǜ}Qߞ*oUfL<xP18Ipvir8C=B72P04{#`yvD-ˡtX4 +~wL6"8$ɋP6Cm֝?'-GQ؟oL9wר*-S-f> +c9)l]2&v4Ff[Jwpp\>Ƚ">=$3!tև GdncP,`SdBU?8n]g-RϮ +5JOU)ZOZ-|MZRZ<.oj:qT6hpLg=rR'5z5SB =,t]fXI~E6ެa Týel@Ѕ#k.Mm-ݩ]˃Σ@)Q<Ti^qϗ@@-P&E$zۿ-no .֤Ǔ&#|l@"{{Ԥ.K-Vv&LdNt4oHipOCX +#Z>pIx[pg 3)zUЯD%-[dc/#мtEAf"4KL%3bl2v]w0b`&_?!WS7]͑S%=Zl9 "["c.L]ĭmBA;ŝ<tl6T7`&NDuM{ivUbU[;Z`K\fTiX?2*BVu31k^d@cEN"boF~dd^<úv }vjCgZC5ojB;W*'Rp+Ⱥp+S!R:<9v.IàrVԨBn[=\wFsjF~s\=a?+ldCE?CWPlhae8҅`PZ7ECNn0qBk#s: +O{^`$o];6XhG9^z[gT'rZ@گTO_꼅iΩ%r^1\=quRr {EY|dLb&j_ǹP4V|w6
I>CR{_h xp4I<Uu!Ld_P?:3;/LpZ
kVQ'ː 3O_1uTh
+)5!<
ʛ\Fk8g +)zo8gUA+ۢՄh{:ʮWUep6"9uuY|AOlnсBtؘJ6#`< +$O4%#7+x}YaU~}ce74^ȥ +{d%PJ<xl/qxUt6u%^496FH(3؎/lt%m)s+:狱N{@?Gwt6+XA)>Mz2i$b\K)N۱4jk@QMZ_r\PiHz +[Z Lc%: 07EE +Q]98DqfU <E֥`;)#RR%(뙚6IL=M5#98vuC!Ґ{o_,{Y}J)^ +)!×%u[ R_e#eCIEZnXPq5@`KKaAE˩Jk(Ƈ э36J +k@^Ip;kSx/k>ClB3RXܧ2pOLq"M#NO +/ɹzlO1?fK +#CV,\~i&o#ծ8Cq>NC#6Ǚk!k7J]|!)qz|٠Xmx2Pzj/ /ݎn0;\Z.sxI"FxkH2GS3k`y
uPЙKNȃ.esp5;zz1ڒh'GP!C,0nI@߇ +@UCc(鵮V/Jߩx*'ˏIȁqBwqswHpj_=ŞU3bb̠kԂ[iCX=;ds&yb$GFWKKRx*>%w@_7= E)fa%v6*ähd=m<!Z>ZQngMliX)VTЈ5Lo)҄͗q"X*oŔ`>_SMOgVK4&8=
V{pyV5=桙^ 9Ľ[QQFQb:yPRa}|Kr1nyηLoӽΘUJ;'VA.w[`><C)~Ŭٔ\5ꢓy
c&o.:Z" p
7ݽumBe
_TrbQ
+3l&(`yYQ( _BFOf̖<uBy9qi!4f7*vt\P:Pef~$\G֚M";
^qFr3UP9Utq.b;@ +"
i=e(3Wu=<iz +kXC5>xWеF'oN`9@.W:t^2剅(7(f ([ܾa+
?*iLI
7bխs"e>ȶ$^6Hq7{tOҠ!!QbI}"5:oTɢY)KIX.>}҄'A'=lL 4+[)лLGw4M;uVx
NT3pl~_KN)|=#&V>CNfk5Ͳu|Acy6.IMQjgv.}͉,ז=ctZh/ZDTKU<2rVefeк$r.+}Rpoe\a9dlQm[6˱ +[3(
ʜ?7Uj^%MU+'lj^y:M$2V:-iPX.hт'mbzÛю5&u茜;BpF_D;7>Κf-`yw7h'&kJi"P
kN_$0:glgUu{-?(w>l`iH= +.Qwe&9:mI@+QMS,{QTBןJ*KgZ.Ő<)Kḯw_S\vg{Fow|OB&E/ڊ9[ffEaqOH{9'2}oZW$lU7.[`OZl6\]4/
/ϖ,$V)'<mratm%T> pF>Cs*Xu)iF5@3Q6'g`6]'3꽴"lN"a]ttO~VEm>K6IHQk]~Ӫ7:)#~
5D9: +={75Vran:fPx&t"d_iD1D֡ +HƝG\> ;.3bCY/q
~^с]ssZI{`ΚʐYP=2/ja?/P[ҳ,zP!~md49yWM/1 W
KN9~1#ϑB4I>]|$x8p*!J}d3|Hydf[Kl+Gt_k.A ryd**-UOޏZI>[T'=O. W_澸wDU\ʜB f6_DNW"$)$Թ2Sm8q +PEaS/?TzY,/hNg!S])u5FYw;!3- +l]C8Q1=3P,q?zB;u~[\?@/C=pLH QRf10&Cv>j0|5GEírTjOW +c.l&6Ab[ +@q!DNXc5=~'P췚0i~Dݰ;WCXS^0?%aO֟%%,a<?U!y
;cH1H\ukjJߤ0k4VJՖ$`>*H±i~)Etm߸"\>,^5Do[Og]%Ia9:ڛ%]z8mUp{qI}'
^sl/ + JSnzAz6!""ɣ?=}gzGz#EBv<!y73#o+ +\̱ua}g?qdiֈ8aJ0GvY[Ӻu7}E:CRM<4&'W&bCyQmE\j8U2OʕZ?ir/H4#>/_V'zRoCVZ\<x +Ⱥ)#3 ++-L:
3xqY5^[mOu]3<g}
~Y}j)ƛ}Myt3L}7{mGt5̳ۜ*;<`VoCg̎[3m%4̥z>f)ŏ&ޤUb9yiEJlfyՙ /
d`)J`U9Qv}CWLH`ev^ +endstream +endobj +678 0 obj<</Filter/FlateDecode/Length3 0/Length2 3486/Length1 1041/Length 4154>>stream +xڭSw<HE d{[N838!)QHV( +QD((+##dE;u~=>|z[T⼌622PY*kj@e!̢D* + +@0@㐨@ +ih+(^qsbˍHP+Vx59h5X+%1t\ۆ&QE2=:gbT(%B6]`3_/g$;N۵1l.fT\=\d{W!Sffz[
Lܼ#r??å$&tM5Q(?\71dzxV*U a;WAݰ +8r)-6|]}窧[R(3rQ
ϼ*3Nۛq7]v=gɸ<C_tj1LNoŽTnx`7f!^^{ +Bf?Vբlf-5.VS.i\S*6;dpN_䋑gO?~:9&EC1pڷ,@zmkRXZvj_]| +?Qe9zίa8)O{kG*.y^R``eC + +m2WU>15-=W£&pS_jYҎ7rMTU!l!$DdPeR"O.:M<J ?DBZF^Aq!@AnlYjlO9ALAE
}~z.3"v{#ODˏ +XDHޗ0Y;s';s&<7R^U뭨?sq(Kn]5\>$z`03R\ ++V|I1a&BњR^+!qh|u+-.ZD_L7u&kI8G ;N3{&f+0>l8[b}:/P,OoвD .WL ~b-z䙶|3q,76HW;n5&w&CKiLy2Hz,h[駬ʜO߉)^ɑڔAׂ$QXn1дU9~y _OwT+6(t>ͩ@KPe)HXKY@,=~R6D9Gzc&Z?&TywxJ;ke +1t܇=
-չ{(;|Z7aџo@{bԆ}8u;e3}+˯zLґ%fĝ&]dQ1R%hpq|`dYhdՕCi'UwxSS){L6rfckX[VLzoX&ʯ|]]eR$K"kG;^Iuc2`*V +=juǾPa)uC+;1jGǘU_wIɓnP=VZuU$F*="*|(Ǝ|a24h6 +ϐ%LbS&zϙt,{yۦyrjwKl$cr:4!As:t iq^C`u2vܭŲJtQܳ,d/;)rKަ@wNm|B$m|;G5LqZ'h!]eQuRyn5t*ݎ?mcǬuK6#6@ω + +y],e_}#t*WXKM'(ŨTl`ս̸;;9`sԏ5MZ|[b|X-?8B [Dv+]Şݫ<
9pWÀ[QFTJd0=V +D&:#}ҠW<"-η q>cZ'r|e3K+z6}Ůd᎒e:k +endstream +endobj +679 0 obj<</Filter/FlateDecode/Length3 0/Length2 4546/Length1 1288/Length 5343>>stream +xڭTu\F s!-c0lFD tK#-HJ HIv_z3Vclj0H$T64A"b +$P E h6D)TB?*p@uGE +s +!qBL7&iH#P~u!!0J@@Q3mK8P/ +&,?BQ$,KA3 +a_K7,)E'_oA?WW$
'&4=aX(A 1
A9"\P_ ?@1X(a2wŕ1xoaqa@ )`$ܰX|EI\Lc`r!S +n=.":)<EjZ 5gsڻ~cUl;L!=%F'['L-"L)Oyiw1IxEqMh5YeX!S3<gG9kSa1"yGn[XٹRz5у~Lb_czaw{3ӛ?v}t +zpBwQ̮ o+Yf~~D06wMO)VR*ʴ.?>Dt%GߪU;%y4!?O)EDU;o.(Penu]KZ9:P=箋 o(mj O{fy֊nn%b4ioB_j_4^,,<M_vaї(W> +GO<Yﷴ>m NvqYi +fF$_i0B +1NxHq{a!7l>_|c9oLaȋWN;Ʋ\er6"6[q72ȁ>Ys7̟nxoZ?GLw.fKW +ٲq6Il^g,2ImF7{riz+g3`lE!^Ѳ.Hfۦ>sCJP,)C㺘lY*L,0} +}od$O)\`
}azt"EmvəMScJ>'}ǜP2oP%3oUC֔\n'L`h$u-) !QX{:<g?-?T 4<php:ła_q !uGW**mp% +ҹǣTJk +v56CCQ58z*֞mƋ떰iЋ=&Զon?(Hb<cTNA`I.߱F6+5z!_ftcB}~>Ҫ]4 XS6m=$(~$4')dF yٓh@6#KqSֱ)LE +I`Y +
<ҢaKz7v{hcԖRx\ضd/p^,']wV_01ӆ(<1m?aLt{j#F.djS>'}Naġ+'CҜC1:keZ]0P En
$Xr"Qe('+a4C-8f^~Av".D@"'>qC¢ܽ>䲆~ ǃxﰆƞ5҆>eU?oenwE85f%
qy*o\}Y'JbnLuk謮v^+CD%y)94IF8 +X_^7=δGMp28ie;.FO9c>~t"f3m$Шݭxo;ZeuNLŧ_־eŎ^g\,`SqپuVbKɦ!U?@oJ+AY7_O7?ӱ1B̨DH7r־ +~h|H$(i``ђVw_4[yҾ:|LLyjL-QZ%ڔ $ؕI8e`Qsys2tEsL^³*8/SF!. +}QAj.@
'cW: DD:1YX
MuJ"n +\e9!gЉ
+rȩ\J+ +}O^v5~YO9K,/r@hLQO's)1
+R=wזH{ƣ +,U+95oemG` +i[W=:7w6_o`s1ckxvNxKίp`L]n){2yfL+l@OI
sSO +yXϻ./Stq3~^q6{öx-I[+^jx ȴÛQ44<D_s۸_peo.@ip ȫ?6dn˭68>|+{=:N}GŇyGO +I +t5u;8$M=GI¸AWݷXT" +endstream +endobj +680 0 obj<</Filter/FlateDecode/Length3 0/Length2 5745/Length1 1668/Length 6592>>stream +xڭe\QD%d`f[K iABSA{x3o濾+~{7+64i +G"P<\< +9IP`8La1a.Pef 0PO%[PECN_350J?}}{ <3 !, +\uylدM%{ɮ#"^j6YCQ +; +AU+ZPد7 pL?N;?6/ //1r7>7Oteڿ +W7VqW86xhE':rboz +˿? +`cԺhv"=eDPIAFӣڞƷLN+\Gн(jc>0 ϤAzuEH%0i~!mtd,ÂCfldxU35QW%_t0(^VII7MjBr%stBڽ?R)?wU·q@,CQ9ń.-uh*y<ATNV1>legTUagАIWsyg[wހy`;E%BH K?b
Զ]墶(JJWE~.5y}Jt6ΘnFk;^)"v>cK|ػSlW`W9v'S)%uA˾"yJ:>tRBRǮ#V-xDw}n +yI4=6"X3RmtY KBɱ]bobQZVZ@*U}4aYPa m*2:5[;<Dx/߂dp8ê?qD1=89Zm{[R93%:`FT uѳln# +!v܊S< +;P3$B4̹.yWĆԂ;\TyC[- +3 ֮rvWP*p-ǵ}K/mItFB} voC}E i͘wЍ% +((Y
}p~=CtP= Ϲ6?}wNu5{
+[s
-G b~xF L,e!IF~RV(R}^d ?ldZQ_]'9~wey4vEiBrkrT>v'_c;P R5^R}y$kkr۾n@#-<@3<,O{82_3{ P@`f["O? X#OCu)F`iw[M:_F`~sg䚝q%dYaW5KI}yr2AML'x&!]m3f̀b:3 +4x3bz-j'db|(1~^`Sg;'!>ED{6VcXneӲt6쐚rU}FBhtj[.|5$~EdNfD#Y]*GfdU?*{zᠬk<X:r[7}'^!qe$WSMdfj0n wR!B:MxXL
zj"]XP휕 +ʉ}̳&\%H +?8ȼ$aMEYlbGX/"tA6melePJ+6p+>FՈ@5|b56C<]Lb_yӿOXȬGCwFrmuDhR6AqY,KoF}_..73كR'@ƈ$[&vbr4w7m"ft)2oI3@\FK%P-ݢrVRjFdjA.(_TAm{K!gNoeX<y{듣AKҭ.jrb\f-u +t
oo[侔mbSW%H5'rHwimoxv 9pKSD"DY|cFR$5촼&ÕTgp"ņ^iK&7v}v1oVK#at!jQfZգ
dK*yi#qϏ;7Э+Ckݩ!k|iՏ""ē8:XI6[ݼ~S t{]/P +YJ
TRf/0{^;iBM)F@ּ;:HD7k=98Y2%KXH繶-H|].@щo}:;o#^ݬ&p{R +cI$Fs>=5wfZ3;aګeiG哞p^H_<MG:&Ų8+~J*lAD;|>MF3lkv43(?|3@v*7APh-ޔdo5Z^Upc`XHp&{I%*g5xSv[ +:,]OKyS2"0pE_5M@_@fwc~N^c/G))MiH. 'S ˵m>;R&j94wT\&]\!-lzU
a# +Tb2~1űfjlGonv0t^ -9]H>N%~ +R +4בD(ˍiJ!/Z<cQр +VIbU1A!&!ːC˒?H]AQE_S^!eVJX,}JqtkjfTS6gx<X$z%!iB@jl?gqvܯw;XBBTʸTH4zjҽ'7̨ծrK}|a+)"k{a{Ƹ۴$9ȣ)ot+zq2ǙQ:G+WyMjg4dV6$N2-g̶h5IS14.[ҚX4UMo0EfQ[w{Р|.Ƃ)_D}BMb'18~u&Z5A_?5D`Uk3$,ybN3I!حR*.{#[N7?U[SwN˸//R~0XrBGqˑfЗn4/نߝ*r1?z?Z='LgjkyAq&wpD죃 +w_mcDdΊWipQ(;ؠU d%+zjogg30Z&s%Lzh|+f6F{LǤ;nE')Rj=&Nn3yc~*_qpXHDroPw=*JK/A
sdţŝ1VL-F]OAGPUGqܲ`T['~F/9I0Q+a>u03ߘ/c|Z3`A>6]M}ϼL_=$}Za7)">#DTWJULъ5-ܑ9MWVnyf ۸F +\O1"_]b_Y$:<U(!s<F~3ܱ9*Xx߽(EYtmUf?1SX||x
> OD&F# +=Xi"NG9
BU.$E:Jj v,)8z|At/#T8"us{T9saJ]ښOLitOo[<Nu8њ(CuRT\Љ~bRcI3٠VfF c:ςMwB@$;[o{ϺGpA-Lu,Vn{%ue7 +E3[JingqYSdߧ@nN);^ݶKޣ<d|g`͋|/&(?2|YuuD7-a9kܴ\r=\:8kEڊjZyz$Q縯/7{*]<ɦY~&oRCr)^=z*~1#r^@pKjEC ZS.9IA[:̹'Tȣ.wns'ۆYgEBI\5WzOɓ71Rw0=nfɿXt.k껰 q3=spQ@e:I4Ƴ6)#7?sjJV{)tZ$YPBF9!6Tfy})։rdJ<VJ<&۠ۯ@ySn.ZO|º%{82]\=~J +E,-~7|yN1sj{GXmlي! j#ָ>*)DhLdqlpD৭%WA%8וdh,S܌8b&ovi$7-e?$e:UiIVy7Ho4rlk7Sd,1s +endstream +endobj +681 0 obj<</Filter/FlateDecode/Length3 0/Length2 11075/Length1 1503/Length 11939>>stream +xڭeTMרw0[pwwgpw'hp|{'9}]VS(2ٛ +ZI\ +d +YD@¤/=n̈%]d7nUrG,\x_J_l6R[䒀q#'yK8zn0^צmVx"!i<̷YmxުkPH{P1bIN8E?dlպ3MΖ\3~-!9 +eox<9d}E5/>Fv4P8=3"(4Bl`G}\n^CZSzQR&|W4W7c(7WPl7RE4bhɡqfgliE`'NޙeB6+c?5Ka1穰's"hfqy>x/nw+ZbAN!#d0jZ(NR"|/;]"k53Yslvx 1Ser1[ $|H.(Ԏ0vt:R=ǣg!8Wkz@!,hUL(Uw]}?me~%RJߌ7 T`E ~$'` +C/څޞ&UQmry=u:[[1lZ_Cti
KQ"hw +gNlOUw,L-+_}4yy +{XKȽ}v.#BRlXDig w1i==|L'Oڎ)4#~+|:=[IRǸf\T%^U
ok&4@t;3bԍ䬄s"8";]jI<@:+p(2/
Pgy)2[T)Buip g>uZz˔ѸX^R`2P_:ztw/]2DFY)"LǗ]} QLe+ P12/l+'ӭw_WPrxyyү [Eq7&+@?D^K:K}'G>|j Ɗr[3}q<,he<9%^ :'P?WӇZF4=~GD=Fq+ + +6TѼv@t.-ϒ[E&[1 Wpi%`ɪuA +Ƌ NϣTaǑo۩10=?R* +7bÑ"W%?j[YRQ';L7>\Sgy$w|JX],!2AxV;Eo,.hr +)=ZY|ᬼ-nx7gN`SYSElp9*5*,IQˋ928|?
+Gr>kU](|C]Hm*uJ2%̤ .7
V<F*~!D`dY +dNg]i~'ZT!f]AHU6Dн} +0U3\ݕN9)'l*C!oys̵VԜޔqj9jh}\0z1\p+xğZ#kYMZ +6|T@GrҐ^^A>þxtD /_q}}_h$]fN1:udo1D,VȣmzPMI'ې;+S}0X.z(9;y)dŅ̾wAx&/T|A]T=}ONkb у_9n*۩67m1>CQWaЄc5(̐R<$58⦕!Df[ucj1H%>R{e ga4zx)1d. LP~Ɖj<텏h䢾yW2l!9
Ē:+o+3VK!7,/۠ig*: Q>^pZAi\l]Ϣ}_~V~:fak39af: +Vȡ>z(;tD_6挺2W*=v1LXШ +1mD(P{") +6*q7zn$sΖOP[2'#`vԐ;>ߒR/Rn졽1XI'F:뒛%Ʃ3k[vЏ?|э?CJ]SH|D;h?\SZKbwWmQo+"gTN>X7`^WCf\4q'p91BgO^\ӟnv*3مN]4?:aeדdj53BDcfwHWxNA(6eFY\/P(</VYDxΏHUb|8oB +ȭJoSGhqȵ|O#Ĝ+VB 0d9`A2̆͗N)Ѷ0sqE(K眪@LiQf+Omtێ3P-?V`~. q4el`BwޯW}61b^Ȃe8W*l/J+a~q A$-g˸SUh
<Wlj7mH;wUůky`YbsKP{Zh*eT'ELYPmIiJ{=LȾ3)ZD46FSPHE؆G6':y?estZܑʠ/ +IȈxa<D%7mDU"=v4aȲ?k O2xudjI?ER:T7>me%DTީ'Fg:V\LYRl\P*L3l9˥ uBj닺[p̛P,i1 +S`@GG$Pp}: +zQP
ǁ$ZzI/"o0R> + +mQMX +%ZA&́OEGK2׃GJ7zF[@Қ7AItwMhZ})*hf7b Ӎi{"!Įv<!W_ε yOyQ%/\B$pZS0Huaܒ>kvd +&9y
5ܴ@1!%,9U3+<34W7A4_\ì; +2-jYHS8!Ză#X/(m;̓N/;P˘_Ňt"[WngGϨ@>Gl|qAhџ-rz=(?58ua &BwN6y߰vWd|H\\o"-#zmf}6D :5T+PDu> PRp7'~ +y&6L֒Ӷyz9)ZYq(|r([5Hcn, +*o$ +1~[K|KK<X$7N9`Vu]3)$N{ +ojr8LfI4U{q2LBPr+uWw3jy+ygAHH]-@%u1bIrY9nR5%
\XeqY+0֒
H`T6ǩGDs:~D04SyL Fċ;Y,&/}h9MӍ%qGf +\#E.qWWGb=//"¢l-h,psE46c[e}5
D$6^.|a5O/,gKshp+\ARetث6W4fb_}۷[D&e>qV?-b{9)fF%&aS4}Mf1/^Y#Գb_uB3Ml}qC6Mމ<:<\JbFbф>Sgwd2* +"]bEvJ繁3[ZvrMh<CM:wKۍ"EOifʥxagߺΐ(SNGgj4ZOb(eLTև1(}j͞R:>[*$bci-Lwnw)pZId`:3 +9X^AʼnaIoo0zdJQz +Ccu״3fѯj\#GIAx9cL:AIQ\e؞ѪF
H.<ߟ0M ʶHplǏ~]RQ?]آ
"^E푴F7jxIaqE_#@B'~$~v!W 3ÔCAMZ=1Iym +ruKIoO;rlaWLo:2*7XσHQH݈KCQQZ~I c~mw1bӟ#Ӑ+S<o8~7#1و7@GEp$聧N+iNt,aQ@Ov + Lr7J,M^al߯LM;'&}%[# fyr5ˁ"n~Ӈ d<v{8F.4My\ 4HcfH*ɔgpncdPedJtJTqYBIZ&{cF.Ǎ~u{ҩh
5gm4vJ]ɂ^xM?Y] =lCiGTMj2r=!T5e?Q$/WFJ-V־ԞW*$.&1!R[ui|rg>!|s堭d"MWpGo{QB]S\[r[CA |@ +L!>8I@SXa@<M"6xoq.HkCK%tZpµ2kf +a$L4?£?!"llDH"d;ۍRZC*xPQ~v-/Aqߎw' wv)[9Ɋ5vWUBEKGD6;zclTӄ)ɾz7xkȉք<ߞM"p&*a0o>0oN@M4^Y}l~]@l@qvP,@F2_n_v9Cm֯d7Mp︬9L~SP>]WlsUԦvA\0VLP_+ċ[fRKۯ&ۦ6;t_F[1hѢAl=3KW@W-+R76 +zxv4fcSR5wuQ]e$ + 2-/GѮWVRRtË +[4eyj>3|xh坣|R/@fe2*?!, vWNAJf zD*Ddy7깅r
>HWSlVu9r;es<bI8t`'w H=Ldq[xoNk|cvC|Tr@nbw[Ȭ)uՀRy#2$B_S&ZlUWܺqs%6LPMY]+\y%]U%4yF咾ܮtt J'ƻ2i!CB2,&,r8
q.WALSlspиjLdFvwC,+QY)9<BkF>9zȶ'F}|iҙZ{
Y47
+gOXH`6DX}Udo
dGPfj fm7P#cf`qܶ(h`OM#4Gbz
w{b3rb4ig晝5(_5.hރReW5'Je^Չ ti9l>[UB[R'y=H~#VEƄT4X9]WxI\bR-@o|_5Ԉ/33ݘs%LIHx[L\1ԵnJݪ ZU,eUh +SF|sxv-fu/LC=
o[m杢DEk+3 tx}OmKY4
"((nKF."+.<{`惋 0r~vc{4{}Hrr
zԶ[,,c TK5ŏ`-jli1"9I1+~$l6ilHl&##j8Ʀ\ (NF\p,Ր\Oe+5o`uKRLɧ2xo1ǭhZM֮%驖][`i:T%O
}kIrV[ȷYV3^+Q#KϠ12t/=Q#Q0dT'.6ׄ]r<h0QeA1~mʦʤ[k蔘A8@ZA1Wy1KuOZo%/|+ǰ.mzXr9MG9RfBKQ
D<R
C[*u|ەRmF?͕"76XR(q cpZ~rۑ(^Ԛ&ث+18y}:4!a{:LMR}]G-N8
h7lڽZa'xTAq%M:]պXbjh,7<Ip*
lyua~6s:uj$Wy(O^agzP퇃#bJP&x6X*2@-F=Ai@A +endstream +endobj +682 0 obj<</Filter/FlateDecode/Length3 0/Length2 1378/Length1 765/Length 1916>>stream +xڭR{<TFHȵM..`]A&ɥt3YY2n \r=F&aWۥ]
㒢Hv0ٜE}~?y}{WKzXv +P `@ +g +t&Gcq:36b[wYuJ`ԝ5:&cp0A@ bBw|Q0a@0$2@ph<"D +:-}\.4JvH8JC^u{'1MY*0a9Y0E=w
U[=VA+~|әnotnZ2|J?ke93^R7YhU@'ۻ˲>ԉɺؒ^% ]".Gԫ7w<1yoSIw\[<)PNJΞ{IlE+jzxD1jaR& +>P:03PJ~]st_,7YLbyZϵϋl7缫Z3.:38#aUi.<[n+=U^W_t'H^dU=Vy5JkӔl fp,wl-+GN +6j>-RN͖8F.7R+$2n:J#pDvaGrkҎ6̮鑫k`d1[vsG];e\iwf㗆YsXL9vML4x<R~mD+}e_fL}^*S=/0|}cj5yӨS}"=kVY[]ngf51?>{,SYZ6I3cX +_ɸF4c\\;Xz4Rh<ۥR'<NPv"ՙ1K[]8sJԬFd(*\NH7] +endstream +endobj +683 0 obj<</Filter/FlateDecode/Length3 0/Length2 5163/Length1 1142/Length 5868>>stream +xڭe\TkAR@@aCH
R3-HwHHKt +(tt( +x}/ֺuu @iG"P ( -@@<,,2NP35CAErxy + -NA;2,p(w,sZP6 +D6y3zF0g_B +i!dR\+?VrSں>Vc+aL&ՠ#byim͛n-#W鞍*g;$uj
+z{wrep?1`3t}$(/ yQǠIXF0k5lq!?IzA.~^-n5>GdA*?drwS;K2=՝|uD92gl>sB4mn**l)ZuLjdR8Y[BnpqhK;O|1{*J 7@\ttTđ?2}v;#W$ûd䙔r٘{43\+/WGqCt]<R1|MSڳ*ROs?LT4m:=47 +6_=-uJ\>aƌ}\Ř=1Q|Q}%Spr7:ϛ 3}oͨh\B_Θ0W_SV29xu\wjc +v}oxk?:xXCNFQϸPI: *'6{>Pb@b$_CsGjUbIu+v/fabS)>֥y3tO>^n/b>*^dJ0Qz]`\xEELGneW~7zP.CIix;@Z/9l).ǰ3ƹ#wQ&Jo`]Q2 a{Q$ێUKwEbڎGfyZfLQbu?vg~hQ +ҟ{ߡx&1I&0ˤ*I |%{/ZV`m$o0R_p<[Nf +TD٬c0sK~8&T'jY1P3ep:p(v4gŧa +ތ\umxcqhsE +{O7N
'}v-G-5\1M.䂲|:ɋ`v~x}jm5X+ǻmլtx\ҩ[57!}r6ǧV+6^;eyorr9n0m<Q`܅:0"N/R7Z4:еy_/9eGb~R)JWB#DM}Z5))4zd֚-ꔛPR({Gէ3's9?}Iv+RI`f\!\DcmeLl`yPi.;er!V\
Un_8]b(JJ V}wdYZLSJKa\x+>b! +
պ0lMo]4T̊(Wu}5^/ +dq֙SL)XL%yIFe56Z +Th(D^A9z%2xeEq=ʴi=(S`w_<VAkW6>=TeNpHrQDkkq'2+mny;yzʭ&*mi&7 H>"7QqR,G1]ոv2p@i)&t^RM_#3WOP hYl?Ūu ÏQH":8nVHX|3.Ond\*w*01ȅ6jj˙ס?f/=H8`"(ց1ޮy͠sBEm&)3ʮ4dL]@| +\nfFRK8PC*[{?p$Fm:17.]&^XQ.ϞjawoVؖ~}ԩ#R1%m6/WfHaC3L>@'7֮ +W&>LйΗ"ό
߁5oK?2UUчz<lyw;i` +!x +M^`:SS +6-eg~FzxN{GN$UVκ.c֠1Mu{6HDS@UbdV=lya6Sy>bTq|Mt,_
c(<`,\>p>mh|*503&,cc9۪EcKbP2g]BwrڀqnRXW\cR<IW`ϤwYj:))O;)!qQ[mϰHᑩ]g30tĕ=ڹyl +T2%Teᄐ`*}.9!&X#HQ7]LRA(/U|Bhlbrur5=&?/,SBJ<Y矧xsM{ɉN)isFsM%gQ];Mm=+wWŭ0c3h7lljl,mUGǺNڮ>n+o ;!5/c]9LYYzc?."lϟ*{If|j"vm~x%[ܯCVESdJOظ0tUj.;ۘ.((G,
fg#Hr(~RqA4Rpuʈa; +fpL.Wg; +n.5aap>r:8ck]blcWZb ׇRT/1jPܻ +),-vOOGdO%+Ymb#EݏwyLy"\yulSY~=%wl;0{¦`f +endstream +endobj +684 0 obj<</Filter/FlateDecode/Length3 0/Length2 13552/Length1 1665/Length 14487>>stream +xڭctMcضmc۶m[:Fwm'>;X뮺kΚUXJ¦v@ ;[gzff43㛉 \hlig+f0sss +, +Q;Qq +<k~ɒO~۾z@4idfrW+O=&^ 8`\YTL ,l&7Z?1~.<ڤ~mNw,8b,!fة@;R[$^?*!QD +c-M,ϋ"]u?Fcz$ș}ݝJUn9-
³e8Q:6nŢL3UWNM䮿`nn"7Q}\h-ohSҩhΫg6+PR\w~Fa +fkUT[ǀ9)ΦXS%''fﺪ)fS/L77ZiIԖo8UMg_,
92oT _(#?Moӈ4w7}uE.pN}#@pH
|ٙ;4RN3{Up.HVգwը¾tRTP2[ORvl,3kZ*
ڻKYJwB'3$p\t'\g'¾
bQw!6j/DXPKy[
ҽVFl],֗Y}M= +: \K=grRdƚ{0ƣYa&"6?,ȁrs3"+!ô%ì.i
qEStHj~LD }=/TYd<*A?/0$$߮KuӔu%?;zi@ctc+.LjvE6TU7Sȡel!FGghn5;}NS
O-2?Ylj)b1_,|OeMֿ0cɍ6P@˴ʘ +dkZdU<]/jl!̴OsC2Z_X3A[ !}Us:~.KuR4^٨]b$4rh`."d[HCq)"~
K1g@*55Nn0w躏\Wͼ/!(aWA$o? +^|KZ_mY2;wЁY7ׂأd7
ǢlU@~>Yw50ǴmgLvR8=Qdn}"wG=w͚3rOk(D:5 +Q<~l}*PK;r7ٮn
ڏ-6c_;+WEvST<$*w!ʄ߷ +9IX_o!rx}"4hžULb6IWƃe%B ;E0Sިi`9r~#M(rE!]mc?Ea4q;|¦bx#,gୌɥUD"^b*VQ (V{cUl e<RgcM +qlx{9@䥺Ԕ@XOg$pEb,OP<osvtsW<1.uv<~(sE!D12tPz.?vʚ)ቕeJIh͓Upe) /xWd;}{#zOg.B"Rfq<N 5/{]pqtJO9/r:Brn88+w :խ)*lb| t9ؗ/%9ַyV9t
'mOL>,D_i=X`I,2K3^t?dF¤;CS-S˹NҏFk8*-#8^&Vhw[WkJso943PIPll3
8֝O=X/rƥN1AZerz$5q`=| +G]k#UZSIU_qp>}r&mXbEV40xv.\]N^
6y[ۻRSsL:'c9`DK#n}we&T۶AwPlA?tfo\DEWa%`wRFJwng n< " +F/u@O7uRM.K@ؼl\dakxsQyvS?jĉ[eIN)`-;tid'H֩] B.%5NK|k]iXXݖ= +>❑ Ed +EovSDsB=F'ni~!`r&O)X&(zy +L]y9B_X^3T.vUS +@T +ĺ +AQˊǮ.d'4a*|]P[TnJ Nz7]ȨgVBΩj.(}@Y;yp|Q#ݻ*=+pK ;KS6[Nd^,Wy +k1^vɒp%V +&CƘ)@9@89'cL\21QW?7%< ؚYyƆ?_ CEsK|xUBD1.L2" +-<Ʌ͂/BF*f~J! Glۛ\w2~,]oGdnDSܳ#xk7
Fi5Km%r>tgn` #;րipD:ZK-&1Fu`n{|:4R-oU͇'^\b褤JvP "ʳ;`<}/U0P
'I웩mEtKWklIA;mƸpc+<#=,?(4q|B@&,Nݖ N#h7X$jKhEȧ=-Oi&
弾w@N?$.CF7±<4SKgb6
JǞp61-?ĸb1lCRE'3,;HZN9'i?T&`%l~5{@F7擳<4Z"SϞtr/WN\V;M:`cn:ފ+|kp.bX;&#FQVԹr& +i{Jxi <1lHWĂ魗2W
& Y@|'GL_J,ƿ]$5%MAE-UW%mZ~ +YٜZo%#Kv?r|MVpWr_N2f +P1U>õntb_9+-
"璦"8)E^'1T12:T QiDi.ȡ7אQQu,V)}
%55]f +@K>>aXWwC0{VTj{WeT@_cGx, +g33n" ^1cc}*h 5"uy nrB
8{{kRymXpݐQ%x*i`ON[y\Z=SʺcgmvZp\4JU4
*@)Yz&LF5LoxhvU5'q@.QdUzQVm.5eZb/_*C=\21ҍ.ߴ^39fgQTImL˓#ftoN}b%#RsXBfDkzO1s*[IWf-e*a%viGVȜ|wy;u.p{n)92X똽
I#e?B_A(w_jBϕN-_Q v1գj,OoIncw1TLz$7mO13WL}[WÐ,ron,jpaI0")Bퟹ^\C=JB6RHR`OSF0v]LaV=,ZvpQ-awF@09~Y "Dꉘ6e&ҿ +gh;T#[1яJ&CW'xW.:nHQÿV<ɝFBC +@hzucH/jr*M-G7zbRsw~APx!em}[mؔ]ʏhYq\=d%}^kIoDyq*4mf5:7ffw瑩;KQ$83f$ٮn +y>ǪL'g"Z|_0i39k|OV'u z<n +jl
}0"Ο7xDG/ڠ
e
)+.aI4Orf#|5jNv5(gպvtn ql氤zµP[7cp$>40IVIE%zL `p2fD>Ńhֿ\2|IBAc^9Jȋ8ulnk>Opb+_ߗkl8?LIZW%pGg62sNTw3[54>ަ:8:ՍKm?l]x7^˕?s8wLcС .@j5(o혘bnlDO?cCUl$8a[NhRD?9#~BA{fW]_y kuMIcjgy=/Lg +}oS߳ٛR?Csm螭QI|ŧ{PБ!HNL{#mE,e-Ãb ++\~l|ߡwАIojTwkObSU`g=_ZP7G%W2K1rH4QRpREnʅxb5%9jW;tĶCϏcƯYbhw05O:xL.C>Q*X=s'ELV,J->c1z(|fWfة}^A_5\慁wk}w' gtWhL!mU?<atjv@~f_AŽjz) +sE{=9HU;_;oF3ɩȋ+rΦڣ>|ob7e +i#؞5Ьwnafx +|HJ8{ѵQc? e3H%I'"e3ȅu\]&t=x:/tNɍ/<f컠q?,Tt]jC<Iy/ g`;l`N"9svB٬kTD"*$Y!6?ޒc0=~3Oanskج_%$:3x<%eRemgALy<].RIqHeboN#ִ派 6Ɵ!lY01XJ"R@&'APKc}
7:V60AC67y1ڣKr]Aex[nru-Q*Tɺ[u {U>Oė3~@G'qEʊRvB ӷ~lMLk#;ϏߖaXR㕖8$R +Â48{tC:ɮxn:K__L5WU/ED/^5!Ftע`<LJcn'/>G//?Eĉf2^|g{$Y:âf~#Y4do\Dy 1 +XC
WcɎDv&Gy]:4POm[gn<2hLUYX;~&@JWs{Ү<JrǨn@/3Aa<w=VŗXRY<qseh ;~M(<'~<Aw IM(3>bs,[`V +02,Z +p2ޭ-C70zK/venH(hfy`XMYuFޞOs +6CE
N#d7;!N:|,^,yxbN]y|R7ACdk^g>sNar>P1*⤬J7_;W*. t,dzx)ԝH@W]<~6q;ޓ)R1 |>ۙoJWqffw+z$A"Mjbj7;HI+ cOLQAE4z)ysGv@UoǪO}tdxVJң_v33(sv1>Rjnm-i3*bp'$p؎)>uD N~IETCv!k[ߣk?ʩo,4|ݺӿBLR7fw(&j=U#+͠Q?Q?cM[17*vG؈C7#ciMNe ~"JXHj^aH<649 +IH{YΘB5lىn=M.6NrӅ,D}!T}d(hG6 8R+kXpmEſ\-08n_ "F,~#881T&I`YYU/ T`ht +MmףU
@}<D9gʙFcRjtvvSiR3 i| +zIRScz4m7g&&Rkd#R +MP˳Ң +n@S֛L/H%gjE\kC
WDo^Y% +Q=Xd+\}'Yfed3ٞc +endstream +endobj +685 0 obj<</Filter/FlateDecode/Length3 0/Length2 5984/Length1 1091/Length 6685>>stream +xڭeXTka qidhSɡEa!fCABAIi}\k}X;~u-Fz5gRfHSK$[(+ea`@n!!
%({w1evpKE A- `f{W +j"pʕ(ec#s;8fp( +h +#@HR@#r;܉)x'q@*Ȼn;-] +[ mQ0{ iG;5/m`^BXϸ8^]`fjphqi!n| +^HdfοDU- &&`H 60uۦ<^adѩ Dy[0j7#G3qxi
ʱ0ň_;r,LNA UaPpW'E2)xDKgB3(L"@@o/)t+uW +6Wk&Dh5lX~ (_ +ĘuQ{Y?ʓsrKsmLl#hnsoV~]v뿧q*#yTNˎ\ԭ:mz<Vxi3M<[BB,q$MރQN2A)hobI-{X<nCgx6+-HZA#ܓj;]Y]#ou7t<Ի85U;Y,X!aN}qxt^3R3|}CѰQ@MٜH9հ#eWCur<@X<M.#|2Odօ3,l5Uc=I%MGb#cTG`EC6:Sv=fɌL4]|i>P\+S^閩EOLktlu/"ҫ¶]>$P. P*Rfx;'.Fˍd^~E|>(3Ҕ$\Z6Q%gw'YkRXH@`ȏ Mgv7\2U}V(-c`i/<t")P<|KO0;'!Ob61tFf38T(Xq.t+8h:;FQ%t3x2!5Ezw?.@<q7Ǽsj{8b\7&f[oT9
X38FHۊ9pvfhJaK~Bj]Pz4[C;4U냪]{x><$XHM +>}a#}@U qV%[J$Vz;rE^K"@~sck$yk(B (omHF +
;Z+=eU)Bj:uuE]!_7ê7{$*7E*`Emת
k4?Ee侪 +$(dRzEPdNx'e(iUf"J2/['XӃ}{ݲ +4?D;8|},lK\GlQG2rs#ca%2*_i9ghOE!"5 wu¼O馚obhW^Liqz +D=iHld)0u?
̋v]x@mU" +_rJdsS@;)qZ9ڱLhogiDև-:Vv355w?Õb1ʄ
zp09s<|1
gH-s^dV|Z-/{0W4\@_6UjSADνXP-[gFeOtI7ɍ|/Ir`*n:|\Ydi20.m~RLQ(1'B + +$~s*8s饌}FUD
wc#[úUHlu;hhz+ k0Zmdգ,sN|w +IOjqgu[
=SO(JNM^kcRC5HIJ +9}a{pN@m߾C*^.Yi# ~Ҕqmn +|< s&e@y?k$\+ʱ-]֫|n(HV;g;A]oߥ4Ir,c]ȸ>V\hݢ1P'n;ۡSR2zàl3qFb`1tF%,~^r7qePh_+Muex<4|]=#j/ַD*_[SAD27.tU}?z̋(Ze^kUPQjL/_BՔi?LAG[haZumk,YF(ϲq뒐6ZoI]hVSz=ׁ,~1N +:̢RĺwNΊ^άz^qh3 +1:%YR@7H! +WcEРҠaP'DY!?8`[b[id1ޛd>-.dY:;3/wsOي:EB*9fѩ8' + +X[]@QGܒ6nC<^չUJ:OD GL/éL':uIJ/+FAvQFHeQ#LRCR:aj> +ƌTCѧ:Qgtf.N@zR> +&Lm$ά=EpM>@)P`*dY5}Wg%kplZrдr6 yn:Vиw0ȸ-XU<=^ +|I?EDMQj~=U{ܰ+2e|ݙQl -zpua㊖W+GO@5 ]}(,ldCN +ZQ3x1+]Zs/@n[n:z*{I1ьϟRCXzz<NK֏bȯM)]xZP7Y'ATBQI~Yq@0I
/gfRHFʴ{¥l&IED:5mgU͵]`G7Oʭ1ByZ W'ǝy[}{)P&]Q)'m/rƽ3MdAHC,!T]A2~=): +4B5P +݀OzvTV٦o%l}Uv;\ĥ+^9/ÉoձCv+ wD̩'1k9n?E]R6,y_4"1&E,Mmƽ3~[**R)a,+lv6h +SG[!jAX
Kf"ɫPJ~PlH" ^T
pxR)bZFDp4Hu8} }Bpn" ֶ@`ܾmye0 + Y*kT$_ }9[(ɦ3|x/o;ʫFӔæ]ISevSb`' $WveEztPZ(<!;9_9+*hHSxUlEc4SyX4,P잳,W~{frq:lL^&g](P#Z4nߧ\"RUSjW<bh-='b^c7/n\U][)f.,n0%ol)TjAc'$R[&$$r0M~= ;a[ڑ +endstream +endobj +686 0 obj<</Filter/FlateDecode/Length3 0/Length2 1953/Length1 934/Length 2590>>stream +xڭSy<k$ju6]58ƒ$ۘyWc^X$vȖEYB%tPdɖI:<u\z^u5D@Se@QVl
`N +4&&BD +9)@1 i0h? +#w_mBGJВҒES
pPpd0
d3m~ +Trbd39r%Yy'.sR:v,#Muf
Kz;$dOkoV2꺲Gh<gN +z\i2#XSݼ[il"!楦tCFe֚~Ɲ#JHt/k5EʞkH79@5ʇ%6gsTƶ|Ycm~ܶLj.TyYqoCSyqzIu\3}/Tkr<R@v`DJ
j|z
?} +w(=NYY<[?ft`YR㶥\wY VYhzk/ k>+N[tʚW9͝8hdkTmXpSl=oXW&Pv_Yk1Nett/d_]ԓEiV[dUODK3vw{^hzI +>Qr=݃2SE<[|.C=?NvR4]9pCU~t˹fzAk}5bG^.ת>^䊁#e1sZՕaUZ*U:A+RL-3]>otRA֞Sħ#e.w-IeaƯN>`zXWk\XH+kLڽZa]>u[ɴv8N|b5q"pbYJ\4Iͷ(T_ZuQ`NK,OfG<Rnn=]Po蠲9b+ڶ6ڽʨ7T-!߿$t|$o2~@ùH?qxV5ץSS]܇Hf=QC
ݐkA;]-yofj|=w(RΩXoŖ 7LKzE3LG?v1):%yrkxGؖD>/ݛ=u^#3\z&l||r>8a abʘۯFۊ|A8)s5~>ܡfuZ\1uf̛wG$~̭Mt%Bq:FmWufpĬPhZ3O'2͊yWSd=n1(vĉu}+/AJڰ@310ntވ63W{D|NL`V[8+_=&}%⫿k3z^50cKR~_{%V%]^Dzt +;)"
ɤGh(H +endstream +endobj +687 0 obj<</Filter/FlateDecode/Length3 0/Length2 1366/Length1 774/Length 1912>>stream +xڭR{<TnҔh5f_2.SDcf8nj̸,;J.Y#Ik]֪*Q[rҦvQ6Eء_쿿9}}C=߽L4vEђHNT - Gq0d+ +G(B"QVXCƈ[ +c>`~"0Yi +!(&{`EGB.^W)3Gc(#˥hTF/z .ူ0 80 K<0P+pҍ.|!"'tQŊnBPKTχU貣\ ,`E0 +톇T3DrwbsK&5nܼ7ghPׂa(u[YR㡲'7 +&ն<+_.=6-fi%\1eIu&[Wyf<MklPu'[MC|C%oz[Yǭ[ݦm'CS|J d1%'FZ(:JXZK0;i0b|ӯC58݀{mg iy{Dò!rfʞC\͉6ro ˖W/|O
o~n%R +MVu;U>DFҿuchgw%6^"W7rrHbi1q8Mmnl\W}[xxUfLs/QogՎԦw:^l]i"xUۡ#QS|x9YδC1u +OȏtYg5)<kZ|''|AհT?PBs +?V%{`y:͊%vh=<n5 U[7vvڵG?b총5mnu)o(z$*o;:1*>/:% +һ(Ǫ{G]ȫ7ޞhi?u$>ZdS4djw^<ej.ڟos!Z7<z)#(DYu,[zǎ1>dDe:P)G +T1h)+nlzu7wlC!e8CΉʹU卫g-(vnwD)E}dى#Q!u +oLm^cU.keGuL4wɩ6$3wFaejt
XPMQU13)Vc + oė] +endstream +endobj +688 0 obj<</Filter/FlateDecode/Length3 0/Length2 1753/Length1 777/Length 2296>>stream +xڭRy8]EI"?ˈl3a3ֱdlI503̌e +ɖ%LJJ%{TD5HEH
}]]_u9ysQrr6'PNh +
Ӂ
nPaĂ +D +G +wgst0XoԿʸ +* +^|7jsc9ElU%O:֞C.t1c,:+{Zrj+Tٮ-P@_-ޚMN]XvHHG4R4p;t&,zm'Cx/3]J@^kАTi<;bLєxѴVX7>-Dzͅmyc;?\{B*5W-0-|DC=6ȺJJTBi%Ϸ2Ju6O#DԵ&'Xrm*b]\{Ɨ4VK,rqgNudžoZA!42+jO
RW_Z_bWZ_ R"$|A߰<w`9&KR0IT;lׯ`jo9s`>PMk2FL+˳d03@D' 80PX`GUF;gGG5*-SJ#UU̧,b'\>o9x8>ͲL_A`Ƴ
kũ6v1$=-ks&D +8Y]LX(gω/j: +;Q,BqH;_`tXmWd M,<D1CT@>pb1Z=JbMpҹfE^eInj0[oC^wCM¯}G5v^oh7lJ(7W/7V_?Qg3"2|IюvMV!/g3nkE{TC9o5}8P"-+$/xfO +G=l +};m?Q؊ɖOQ"9lhYt觚N̏3=ip&VZT
U;S7qGv 8u$
6LNkE
{ąx@Gr5O|qVj(GQV>Ω_1ݼZ,=o5if9ۂO:[Vϗ3Mzp̑$,wKDVQJ +nF"q͗7]unTK;^4jd1ɝ0]-TaL
5Ԃ빐9d1y6K@Q幦\m߽_zŞʻx˨èZ~0EոѪ(H`6z}*7ª~د34߉KZ9a^ׂnHфt5(:Kxv&y(~^
o`Ng/cjsD1ُvm/#d9~qZJޏ[ +endstream +endobj +689 0 obj<</Filter/FlateDecode/Length3 0/Length2 674/Length1 762/Length 1201>>stream +xSUuLOJu+53Rp
4U03RUu.JM,sI,IR04Tp,MW04U002224RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8 +@'T*qJB7ܭ4'/1d<(0s3s* +sJKR|SRЕB曚Y.Y옗khg`l +,vˬHM ,IPHK)N楠;z`臆yiCb,WRY`P"0*ʬP6300*B+.̼t#S3ĢJ.QF +Ն +y) +@ +y Q~AQ& L99WT*Z( +)ns8hYՓ\{Tc
c>=|)$yfUJ)-/4]/vgNk=,-W;߿MܲɇW8mq]1+_{yu@dYO|/x-%/?Ҭ~D蔍*.9tuVd^1xƵһM4d~k$?s7EU>uf]{R{9SeDO$=5^t3K<Gp?xǎ=?aQ\srBڅƒkRYl-Dzz]-slOynI=.kN,Wן[۳~6H6 I)T2q1dwx~SSu)ilWmuYjC7w~!G@hjܷMbK +endstream +endobj +690 0 obj<</Filter/FlateDecode/Length3 0/Length2 1118/Length1 741/Length 1652>>stream +xڭ}TW]
T*B$hHDDR"icfFL $E((U)jQSYdPԂPePpATV|Yϼ)TH +T~y*a/R qX$\"J
d26#!"i$0*VHy L6% x +T@ 8& +8J( +.fse6Rd}1T`2zcR^i-͖UVQvr[`eնi'/_u|˩A/9I/\ʑB-I!C>!ZHzUUez.J#妩{;]W-S +Mg
;ʲ1>|??[lCqd;qb^ܲ>a'.9;xlo-°6E>h?v:ݟSrmӾ_sS;5eҍkYMۛmOU}{VSdfdjUYYg5ũ;oh~]*7GZdo4t?swVJozɳ'ԲJ+8O-[PT9wmdm%'K?.r5,Oܰi96Ckj10~g _:YvWq_O:l%_LZOxwިf,l\?191qS䂕/bŽ5peћϝ&Js>~v|NDwfoP`>%;,yf/7&;zZ}b3NiI7.k/5
CrJ W&#W74V9_YwḬǨy_97'˶M&[mVM61YH?c,P|g)';j&WKloխ%q2=7`aYp6ճfN1%NuҎWdU:mCi𪺵)5uSj+E]f)is-uTSNj_ytkI +endstream +endobj +691 0 obj<</Filter/FlateDecode/Length3 0/Length2 1202/Length1 814/Length 1776>>stream +xڭRiTS($P1Yd{!{CHUdxH[( +edJ Z'Q@TxuuUuo{2(baۓdbC#D&H$ffa R@ G(@.42g
0 I`! +D@a +IDm
pfW{T&WZL+V{$D 6NT}oۅr0ABGRP (K,U3v X]V/NAVRtLz])Lu +92Yso|N{_:a]n}5+i4F6WxizYW]v-?r R~VUD8qu4d8{7\Z3!=Jk~cs9rtQSzY/J +=)|Mbi]sOj)llQʗsflG`zAXS/NΔicdYuzY +G)|L]/l76>oa18o,I}n{og6[vhlU/n#O#Ox9+\\x)0_ո_%X4a&t ZqOXq}kc?<[b|q1q|lɠS+J}]wETKm~Cs2ߋGa~_:U[.n%~r-+`.~n#yTiUY5Ǹ?>@6JeB_;ԙYǯ3o~c+r۸m7"^e9xw_<$=I{cG4Ӭ&|;`-dg^갘'?k)~5]Wˋ~AʇƍKF*4>Ɉa_9J4k5(Vsb]+cmM)k&gJ\ =زjq(Qo9יj빭YLA*L?\j/^豖1,Hh+.Gl귒+.FIn܊N$Z/(ՠ1ʻ߄[˟1yM8eP?ג
˾:(zq!}K
R`PAElkxdFsl.Ѿmi=;%7
_ +endstream +endobj +692 0 obj<</Filter/FlateDecode/Length3 0/Length2 1087/Length1 750/Length 1613>>stream +xڭ<wǥRhƧq̹QgY~C]?s{:N)H!T(-La1dKȶھ{>|G]|<҅`q?bR0{{(XVypsL/ۃ3mBC1R%pOXH)rX$|\B|e2azG< +`A WW;!B1FW!D2L&4߫צq11Xpc{A4
v +tFy~~z
\dS7'b3c'Ĕ3╖d|}{ͭ,{eynץWy3^-q}#ybn7YsE$%5v]ӻ̚-F
&Yqy{ĺSv=m UEh6< 3xwq0Ew~0[ugncPk? o ߹==H/jSkm]'A MKWTƩ2r,ҭ2suzf7M5˲8t>5``mEvڑ-GW=t^[]"Йx&%:BNGXSzma6nAmtJbmg_Ab^wND'C?}~Ӊ!ۡTbHhy+t
*/3n*zDXZWg7.\ڪo鎫b}ܑUNtͷ7?5R}'ƄE5JrJFCwj~xddvU=zZ$YYŞtTzos[/:$.F!;~ +#-Si*FkOU݆k7uIʇ<L;kr4ʾ +s^#c.=60+=Oo3\tqA +Q]wS爞g;7Ls+/Zi_{>`/J0]yۛgYM珍\:twkx_۸wA]HG8r=#tNjL/߯I<n
bmfkݯ5OL|멉c4/y0B᭴T};5?QSL`Z9"Mo{gk?ՆD/(7 +endstream +endobj +693 0 obj<</Filter/FlateDecode/Length3 0/Length2 1252/Length1 751/Length 1781>>stream +xڭR{8TNLDRڊi113n}m+AnIek1f0Eg)c1ȦC:$Kjy$4V4<.ӡts{2-L$g/` pff|)Qą)ΎB.cT{k8">̍ +# +endstream +endobj +694 0 obj<</S/GoTo/D[32 0 R/XYZ 99.895 222.591 null]>> +endobj +695 0 obj<</Next 717 0 R/Title(6 The \\text command)/A 716 0 R/Prev 655 0 R/Parent 3 0 R>> +endobj +696 0 obj<</Next 697 0 R/Title(5.1 Defining new operator names)/A 718 0 R/Parent 655 0 R>> +endobj +697 0 obj<</Title(5.2 \\mod and its relatives)/A 719 0 R/Prev 696 0 R/Parent 655 0 R>> +endobj +698 0 obj<</S/GoTo/D[27 0 R/XYZ 150.705 565.193 null]>> +endobj +699 0 obj<</Next 721 0 R/Title(4.2 Math spacing commands)/A 720 0 R/Prev 656 0 R/Parent 623 0 R>> +endobj +700 0 obj<</S/GoTo/D[31 0 R/XYZ 150.705 394.363 null]>> +endobj +701 0 obj<</Next 657 0 R/Title(4.13 Smash options)/A 722 0 R/Prev 723 0 R/Parent 623 0 R>> +endobj +702 0 obj<</S/GoTo/D[22 0 R/XYZ 99.895 521.705 null]>> +endobj +703 0 obj<</Next 725 0 R/Title(3.3 Split equations without alignment)/A 724 0 R/Prev 659 0 R/Parent 596 0 R>> +endobj +704 0 obj<</S/GoTo/D[26 0 R/XYZ 99.895 745.367 null]>> +endobj +705 0 obj<</Next 661 0 R/Title(3.9 Vertical spacing and page breaks in multiline displays)/A 726 0 R/Prev 727 0 R/Parent 596 0 R>> +endobj +706 0 obj<</S/GoTo/D[36 0 R/XYZ 99.895 608.922 null]>> +endobj +707 0 obj<</Next 663 0 R/Title(8 Commutative diagrams)/A 728 0 R/Prev 717 0 R/Parent 3 0 R>> +endobj +708 0 obj<</Next 730 0 R/Title(9.1 Introduction)/A 729 0 R/Parent 663 0 R>> +endobj +709 0 obj<</Title(9.4 Italic Greek letters)/A 731 0 R/Prev 732 0 R/Parent 663 0 R>> +endobj +710 0 obj<</S/GoTo/D[38 0 R/XYZ 99.895 698.002 null]>> +endobj +711 0 obj<</Next 713 0 R/Title(10.2 Error messages)/A 733 0 R/Prev 664 0 R/Parent 627 0 R>> +endobj +712 0 obj<</S/GoTo/D[43 0 R/XYZ 150.705 506.823 null]>> +endobj +713 0 obj<</Next 665 0 R/Title(10.3 Warning messages)/A 734 0 R/Prev 711 0 R/Parent 627 0 R>> +endobj +714 0 obj<</S/GoTo/D[44 0 R/XYZ 99.895 676.665 null]>> +endobj +715 0 obj<</S/GoTo/D[44 0 R/XYZ 99.895 623.54 null]>> +endobj +716 0 obj<</S/GoTo/D[33 0 R/XYZ 150.705 92.908 null]>> +endobj +717 0 obj<</Next 707 0 R/First 736 0 R/A 735 0 R/Prev 695 0 R/Last 737 0 R/Title(7 Integrals and sums)/Parent 3 0 R/Count -4>> +endobj +718 0 obj<</S/GoTo/D[32 0 R/XYZ 99.895 155.575 null]>> +endobj +719 0 obj<</S/GoTo/D[33 0 R/XYZ 150.705 249.23 null]>> +endobj +720 0 obj<</S/GoTo/D[28 0 R/XYZ 99.895 745.367 null]>> +endobj +721 0 obj<</Next 739 0 R/Title(4.3 Dots)/A 738 0 R/Prev 699 0 R/Parent 623 0 R>> +endobj +722 0 obj<</S/GoTo/D[31 0 R/XYZ 150.705 539.209 null]>> +endobj +723 0 obj<</Next 701 0 R/Title(4.12 Continued fractions)/A 740 0 R/Prev 741 0 R/Parent 623 0 R>> +endobj +724 0 obj<</S/GoTo/D[22 0 R/XYZ 99.895 459.188 null]>> +endobj +725 0 obj<</Next 743 0 R/Title(3.4 Split equations with alignment)/A 742 0 R/Prev 703 0 R/Parent 596 0 R>> +endobj +726 0 obj<</S/GoTo/D[25 0 R/XYZ 150.705 386.942 null]>> +endobj +727 0 obj<</Next 705 0 R/Title(3.8 Adjusting tag placement)/A 744 0 R/Prev 745 0 R/Parent 596 0 R>> +endobj +728 0 obj<</S/GoTo/D[35 0 R/XYZ 150.705 310.723 null]>> +endobj +729 0 obj<</S/GoTo/D[36 0 R/XYZ 99.895 540.449 null]>> +endobj +730 0 obj<</Next 732 0 R/Title(9.2 Recommended use of math font commands)/A 746 0 R/Prev 708 0 R/Parent 663 0 R>> +endobj +731 0 obj<</S/GoTo/D[37 0 R/XYZ 150.705 239.096 null]>> +endobj +732 0 obj<</Next 709 0 R/Title(9.3 Bold math symbols)/A 747 0 R/Prev 730 0 R/Parent 663 0 R>> +endobj +733 0 obj<</S/GoTo/D[38 0 R/XYZ 99.895 541.723 null]>> +endobj +734 0 obj<</S/GoTo/D[42 0 R/XYZ 99.895 163.689 null]>> +endobj +735 0 obj<</S/GoTo/D[34 0 R/XYZ 99.895 572.986 null]>> +endobj +736 0 obj<</Next 749 0 R/Title(7.1 Multiline subscripts and superscripts)/A 748 0 R/Parent 717 0 R>> +endobj +737 0 obj<</Title(7.4 Multiple integral signs)/A 750 0 R/Prev 751 0 R/Parent 717 0 R>> +endobj +738 0 obj<</S/GoTo/D[28 0 R/XYZ 99.895 541.777 null]>> +endobj +739 0 obj<</Next 753 0 R/Title(4.4 Nonbreaking dashes)/A 752 0 R/Prev 721 0 R/Parent 623 0 R>> +endobj +740 0 obj<</S/GoTo/D[31 0 R/XYZ 150.705 745.367 null]>> +endobj +741 0 obj<</Next 723 0 R/Title(4.11 Fractions and related constructions)/A 754 0 R/Prev 755 0 R/Parent 623 0 R>> +endobj +742 0 obj<</S/GoTo/D[23 0 R/XYZ 150.705 713.772 null]>> +endobj +743 0 obj<</Next 757 0 R/Title(3.5 Equation groups without alignment)/A 756 0 R/Prev 725 0 R/Parent 596 0 R>> +endobj +744 0 obj<</S/GoTo/D[25 0 R/XYZ 150.705 554.732 null]>> +endobj +745 0 obj<</Next 727 0 R/Title(3.7 Alignment building blocks)/A 758 0 R/Prev 757 0 R/Parent 596 0 R>> +endobj +746 0 obj<</S/GoTo/D[36 0 R/XYZ 99.895 441.301 null]>> +endobj +747 0 obj<</S/GoTo/D[37 0 R/XYZ 150.705 652.438 null]>> +endobj +748 0 obj<</S/GoTo/D[34 0 R/XYZ 99.895 506.125 null]>> +endobj +749 0 obj<</Next 751 0 R/Title(7.2 The \\sideset command)/A 759 0 R/Prev 736 0 R/Parent 717 0 R>> +endobj +750 0 obj<</S/GoTo/D[35 0 R/XYZ 150.705 447.093 null]>> +endobj +751 0 obj<</Next 737 0 R/Title(7.3 Placement of subscripts and limits)/A 760 0 R/Prev 749 0 R/Parent 717 0 R>> +endobj +752 0 obj<</S/GoTo/D[28 0 R/XYZ 99.895 265.812 null]>> +endobj +753 0 obj<</Next 762 0 R/Title(4.5 Accents in math)/A 761 0 R/Prev 739 0 R/Parent 623 0 R>> +endobj +754 0 obj<</S/GoTo/D[30 0 R/XYZ 99.895 693.21 null]>> +endobj +755 0 obj<</Next 741 0 R/Title(4.10 Affixing symbols to other symbols)/A 763 0 R/Prev 764 0 R/Parent 623 0 R>> +endobj +756 0 obj<</S/GoTo/D[23 0 R/XYZ 150.705 418.501 null]>> +endobj +757 0 obj<</Next 745 0 R/Title(3.6 Equation groups with mutual alignment)/A 765 0 R/Prev 743 0 R/Parent 596 0 R>> +endobj +758 0 obj<</S/GoTo/D[24 0 R/XYZ 99.895 326.197 null]>> +endobj +759 0 obj<</S/GoTo/D[34 0 R/XYZ 99.895 318.75 null]>> +endobj +760 0 obj<</S/GoTo/D[35 0 R/XYZ 150.705 720.255 null]>> +endobj +761 0 obj<</S/GoTo/D[29 0 R/XYZ 150.705 745.367 null]>> +endobj +762 0 obj<</Next 767 0 R/Title(4.6 Roots)/A 766 0 R/Prev 753 0 R/Parent 623 0 R>> +endobj +763 0 obj<</S/GoTo/D[29 0 R/XYZ 150.705 155.786 null]>> +endobj +764 0 obj<</Next 755 0 R/Title(4.9 Extensible arrows)/A 768 0 R/Prev 769 0 R/Parent 623 0 R>> +endobj +765 0 obj<</S/GoTo/D[23 0 R/XYZ 150.705 223.083 null]>> +endobj +766 0 obj<</S/GoTo/D[29 0 R/XYZ 150.705 597.048 null]>> +endobj +767 0 obj<</Next 769 0 R/Title(4.7 Boxed formulas)/A 770 0 R/Prev 762 0 R/Parent 623 0 R>> +endobj +768 0 obj<</S/GoTo/D[29 0 R/XYZ 150.705 279.17 null]>> +endobj +769 0 obj<</Next 764 0 R/Title(4.8 Over and under arrows)/A 771 0 R/Prev 767 0 R/Parent 623 0 R>> +endobj +770 0 obj<</S/GoTo/D[29 0 R/XYZ 150.705 480.272 null]>> +endobj +771 0 obj<</S/GoTo/D[29 0 R/XYZ 150.705 383.834 null]>> +endobj +xref +0 772 +0000000000 65535 f +0000000015 00000 n +0000000149 00000 n +0000000263 00000 n +0000000330 00000 n +0000000353 00000 n +0000000376 00000 n +0000000416 00000 n +0000000790 00000 n +0000000889 00000 n +0000000988 00000 n +0000001088 00000 n +0000001188 00000 n +0000001288 00000 n +0000001381 00000 n +0000001457 00000 n +0000001524 00000 n +0000001600 00000 n +0000001957 00000 n +0000002177 00000 n +0000002255 00000 n +0000002421 00000 n +0000002499 00000 n +0000002593 00000 n +0000002695 00000 n +0000002813 00000 n +0000002907 00000 n +0000003009 00000 n +0000003111 00000 n +0000003190 00000 n +0000003269 00000 n +0000003364 00000 n +0000003443 00000 n +0000003522 00000 n +0000003617 00000 n +0000003696 00000 n +0000003791 00000 n +0000003886 00000 n +0000003981 00000 n +0000004076 00000 n +0000004155 00000 n +0000004258 00000 n +0000004353 00000 n +0000004432 00000 n +0000004527 00000 n +0000004606 00000 n +0000004709 00000 n +0000004788 00000 n +0000005915 00000 n +0000006994 00000 n +0000008089 00000 n +0000008192 00000 n +0000008253 00000 n +0000008362 00000 n +0000008424 00000 n +0000008511 00000 n +0000008834 00000 n +0000008899 00000 n +0000010525 00000 n +0000010613 00000 n +0000010744 00000 n +0000010875 00000 n +0000011007 00000 n +0000011138 00000 n +0000011269 00000 n +0000011400 00000 n +0000011532 00000 n +0000011664 00000 n +0000011796 00000 n +0000011927 00000 n +0000012059 00000 n +0000012191 00000 n +0000012322 00000 n +0000012453 00000 n +0000012584 00000 n +0000012716 00000 n +0000012847 00000 n +0000012978 00000 n +0000013108 00000 n +0000013239 00000 n +0000013371 00000 n +0000013503 00000 n +0000013635 00000 n +0000013766 00000 n +0000013897 00000 n +0000014027 00000 n +0000014159 00000 n +0000014291 00000 n +0000014423 00000 n +0000014554 00000 n +0000014685 00000 n +0000014816 00000 n +0000014947 00000 n +0000015078 00000 n +0000015209 00000 n +0000015339 00000 n +0000015469 00000 n +0000015600 00000 n +0000015731 00000 n +0000016535 00000 n +0000016599 00000 n +0000016730 00000 n +0000016862 00000 n +0000016994 00000 n +0000017127 00000 n +0000017260 00000 n +0000017391 00000 n +0000017523 00000 n +0000017654 00000 n +0000017786 00000 n +0000017919 00000 n +0000018051 00000 n +0000018184 00000 n +0000018316 00000 n +0000018447 00000 n +0000018579 00000 n +0000018711 00000 n +0000018843 00000 n +0000018981 00000 n +0000019034 00000 n +0000022076 00000 n +0000022164 00000 n +0000022297 00000 n +0000022457 00000 n +0000022608 00000 n +0000022741 00000 n +0000022902 00000 n +0000023061 00000 n +0000023194 00000 n +0000023327 00000 n +0000023491 00000 n +0000023653 00000 n +0000026199 00000 n +0000026322 00000 n +0000029907 00000 n +0000030043 00000 n +0000030176 00000 n +0000033432 00000 n +0000033613 00000 n +0000033743 00000 n +0000033875 00000 n +0000036060 00000 n +0000036195 00000 n +0000036328 00000 n +0000036461 00000 n +0000036594 00000 n +0000036727 00000 n +0000040371 00000 n +0000040530 00000 n +0000040661 00000 n +0000043502 00000 n +0000043626 00000 n +0000043758 00000 n +0000043891 00000 n +0000047456 00000 n +0000047639 00000 n +0000047768 00000 n +0000047901 00000 n +0000050928 00000 n +0000051074 00000 n +0000054290 00000 n +0000054437 00000 n +0000057644 00000 n +0000057774 00000 n +0000061335 00000 n +0000061470 00000 n +0000065159 00000 n +0000065318 00000 n +0000068550 00000 n +0000068686 00000 n +0000068819 00000 n +0000071731 00000 n +0000071948 00000 n +0000075025 00000 n +0000075195 00000 n +0000075326 00000 n +0000078873 00000 n +0000078997 00000 n +0000079130 00000 n +0000082090 00000 n +0000082250 00000 n +0000082383 00000 n +0000084655 00000 n +0000084767 00000 n +0000084900 00000 n +0000087360 00000 n +0000087448 00000 n +0000089513 00000 n +0000089613 00000 n +0000089746 00000 n +0000089879 00000 n +0000091954 00000 n +0000092043 00000 n +0000092174 00000 n +0000094022 00000 n +0000094122 00000 n +0000096873 00000 n +0000097009 00000 n +0000097142 00000 n +0000099293 00000 n +0000099417 00000 n +0000101842 00000 n +0000101978 00000 n +0000102181 00000 n +0000102384 00000 n +0000103790 00000 n +0000103902 00000 n +0000105843 00000 n +0000105920 00000 n +0000106052 00000 n +0000106184 00000 n +0000106316 00000 n +0000106446 00000 n +0000106578 00000 n +0000106711 00000 n +0000106844 00000 n +0000106975 00000 n +0000107107 00000 n +0000107239 00000 n +0000107372 00000 n +0000107504 00000 n +0000107636 00000 n +0000107768 00000 n +0000107899 00000 n +0000108032 00000 n +0000108165 00000 n +0000108298 00000 n +0000108431 00000 n +0000108563 00000 n +0000108695 00000 n +0000108828 00000 n +0000108961 00000 n +0000109093 00000 n +0000109225 00000 n +0000109357 00000 n +0000109489 00000 n +0000109621 00000 n +0000109754 00000 n +0000109886 00000 n +0000110019 00000 n +0000110151 00000 n +0000110282 00000 n +0000110413 00000 n +0000110545 00000 n +0000110678 00000 n +0000110810 00000 n +0000110943 00000 n +0000111076 00000 n +0000111208 00000 n +0000111340 00000 n +0000111472 00000 n +0000111604 00000 n +0000111737 00000 n +0000111870 00000 n +0000112003 00000 n +0000112136 00000 n +0000112269 00000 n +0000112402 00000 n +0000112534 00000 n +0000112667 00000 n +0000112800 00000 n +0000112932 00000 n +0000113065 00000 n +0000113196 00000 n +0000113328 00000 n +0000113460 00000 n +0000113593 00000 n +0000113726 00000 n +0000113859 00000 n +0000113991 00000 n +0000114124 00000 n +0000114257 00000 n +0000114390 00000 n +0000114523 00000 n +0000114655 00000 n +0000114788 00000 n +0000114920 00000 n +0000115050 00000 n +0000115177 00000 n +0000115309 00000 n +0000115441 00000 n +0000115574 00000 n +0000115705 00000 n +0000115838 00000 n +0000115971 00000 n +0000116104 00000 n +0000116237 00000 n +0000116369 00000 n +0000116500 00000 n +0000116632 00000 n +0000116765 00000 n +0000116898 00000 n +0000117031 00000 n +0000117164 00000 n +0000117297 00000 n +0000117430 00000 n +0000117562 00000 n +0000117695 00000 n +0000117827 00000 n +0000117959 00000 n +0000118090 00000 n +0000118222 00000 n +0000118355 00000 n +0000118488 00000 n +0000118621 00000 n +0000118754 00000 n +0000118887 00000 n +0000119020 00000 n +0000119153 00000 n +0000119286 00000 n +0000119418 00000 n +0000119550 00000 n +0000119682 00000 n +0000119813 00000 n +0000119945 00000 n +0000120077 00000 n +0000120209 00000 n +0000120341 00000 n +0000120474 00000 n +0000120607 00000 n +0000120740 00000 n +0000120872 00000 n +0000121005 00000 n +0000121138 00000 n +0000121271 00000 n +0000121403 00000 n +0000121535 00000 n +0000121668 00000 n +0000121800 00000 n +0000121932 00000 n +0000122063 00000 n +0000122196 00000 n +0000122328 00000 n +0000122460 00000 n +0000122593 00000 n +0000122726 00000 n +0000122858 00000 n +0000122990 00000 n +0000123121 00000 n +0000125303 00000 n +0000125380 00000 n +0000125512 00000 n +0000125644 00000 n +0000125776 00000 n +0000125909 00000 n +0000126040 00000 n +0000126171 00000 n +0000126302 00000 n +0000126434 00000 n +0000126566 00000 n +0000126698 00000 n +0000126830 00000 n +0000126962 00000 n +0000127093 00000 n +0000127225 00000 n +0000127355 00000 n +0000127487 00000 n +0000127619 00000 n +0000127750 00000 n +0000127881 00000 n +0000128014 00000 n +0000128146 00000 n +0000128278 00000 n +0000128411 00000 n +0000128543 00000 n +0000128676 00000 n +0000128808 00000 n +0000128939 00000 n +0000129071 00000 n +0000129203 00000 n +0000129334 00000 n +0000129467 00000 n +0000129598 00000 n +0000129730 00000 n +0000129862 00000 n +0000129995 00000 n +0000130128 00000 n +0000130260 00000 n +0000130393 00000 n +0000130526 00000 n +0000130657 00000 n +0000130790 00000 n +0000130921 00000 n +0000131054 00000 n +0000131187 00000 n +0000131318 00000 n +0000131450 00000 n +0000131580 00000 n +0000131713 00000 n +0000131845 00000 n +0000131978 00000 n +0000132109 00000 n +0000132242 00000 n +0000132374 00000 n +0000132506 00000 n +0000132639 00000 n +0000132771 00000 n +0000132903 00000 n +0000133035 00000 n +0000133167 00000 n +0000133299 00000 n +0000133430 00000 n +0000133561 00000 n +0000133694 00000 n +0000133825 00000 n +0000133957 00000 n +0000134090 00000 n +0000134222 00000 n +0000134355 00000 n +0000134487 00000 n +0000134620 00000 n +0000134752 00000 n +0000134884 00000 n +0000135017 00000 n +0000135148 00000 n +0000135280 00000 n +0000135411 00000 n +0000135544 00000 n +0000135675 00000 n +0000135806 00000 n +0000135937 00000 n +0000136068 00000 n +0000136200 00000 n +0000136330 00000 n +0000136462 00000 n +0000136593 00000 n +0000136726 00000 n +0000136857 00000 n +0000136989 00000 n +0000137118 00000 n +0000137248 00000 n +0000137379 00000 n +0000137510 00000 n +0000137641 00000 n +0000137773 00000 n +0000137905 00000 n +0000138038 00000 n +0000138169 00000 n +0000138302 00000 n +0000138434 00000 n +0000138566 00000 n +0000138699 00000 n +0000138830 00000 n +0000138963 00000 n +0000139094 00000 n +0000139226 00000 n +0000139359 00000 n +0000139491 00000 n +0000139624 00000 n +0000139756 00000 n +0000139889 00000 n +0000140021 00000 n +0000140153 00000 n +0000140285 00000 n +0000140417 00000 n +0000140549 00000 n +0000140681 00000 n +0000140813 00000 n +0000140945 00000 n +0000141078 00000 n +0000141210 00000 n +0000141341 00000 n +0000141472 00000 n +0000141603 00000 n +0000141735 00000 n +0000143745 00000 n +0000143877 00000 n +0000144010 00000 n +0000144143 00000 n +0000144275 00000 n +0000144404 00000 n +0000144537 00000 n +0000144670 00000 n +0000144802 00000 n +0000144934 00000 n +0000145065 00000 n +0000145198 00000 n +0000145329 00000 n +0000145462 00000 n +0000145593 00000 n +0000145726 00000 n +0000145859 00000 n +0000145992 00000 n +0000146125 00000 n +0000146258 00000 n +0000146390 00000 n +0000146522 00000 n +0000146654 00000 n +0000146786 00000 n +0000146917 00000 n +0000147049 00000 n +0000147180 00000 n +0000147313 00000 n +0000147445 00000 n +0000147578 00000 n +0000147709 00000 n +0000147841 00000 n +0000147974 00000 n +0000148105 00000 n +0000148237 00000 n +0000148369 00000 n +0000148501 00000 n +0000148634 00000 n +0000148766 00000 n +0000148897 00000 n +0000149028 00000 n +0000149158 00000 n +0000149290 00000 n +0000149421 00000 n +0000149553 00000 n +0000149685 00000 n +0000149817 00000 n +0000149950 00000 n +0000150082 00000 n +0000150215 00000 n +0000150348 00000 n +0000150480 00000 n +0000150613 00000 n +0000150745 00000 n +0000150878 00000 n +0000151010 00000 n +0000151142 00000 n +0000151274 00000 n +0000151407 00000 n +0000151539 00000 n +0000151671 00000 n +0000151802 00000 n +0000151934 00000 n +0000152063 00000 n +0000152195 00000 n +0000152327 00000 n +0000152457 00000 n +0000152589 00000 n +0000152722 00000 n +0000152853 00000 n +0000152986 00000 n +0000153119 00000 n +0000153251 00000 n +0000153384 00000 n +0000153514 00000 n +0000153645 00000 n +0000153776 00000 n +0000153908 00000 n +0000154041 00000 n +0000154173 00000 n +0000154306 00000 n +0000154438 00000 n +0000154571 00000 n +0000154704 00000 n +0000154836 00000 n +0000154968 00000 n +0000155100 00000 n +0000155232 00000 n +0000155364 00000 n +0000155496 00000 n +0000155628 00000 n +0000155758 00000 n +0000155888 00000 n +0000156019 00000 n +0000156150 00000 n +0000156282 00000 n +0000156415 00000 n +0000156547 00000 n +0000156678 00000 n +0000156810 00000 n +0000156942 00000 n +0000157075 00000 n +0000157208 00000 n +0000157340 00000 n +0000157472 00000 n +0000157605 00000 n +0000157738 00000 n +0000157870 00000 n +0000158003 00000 n +0000158135 00000 n +0000158267 00000 n +0000158397 00000 n +0000158529 00000 n +0000158660 00000 n +0000158791 00000 n +0000158922 00000 n +0000159055 00000 n +0000159188 00000 n +0000159321 00000 n +0000159454 00000 n +0000159586 00000 n +0000159718 00000 n +0000159851 00000 n +0000159983 00000 n +0000160116 00000 n +0000160248 00000 n +0000160379 00000 n +0000160616 00000 n +0000160681 00000 n +0000160814 00000 n +0000160947 00000 n +0000161009 00000 n +0000161144 00000 n +0000161282 00000 n +0000161664 00000 n +0000161879 00000 n +0000162259 00000 n +0000162944 00000 n +0000163492 00000 n +0000163931 00000 n +0000164531 00000 n +0000165024 00000 n +0000165428 00000 n +0000165883 00000 n +0000166387 00000 n +0000166925 00000 n +0000167093 00000 n +0000167489 00000 n +0000168087 00000 n +0000168519 00000 n +0000168860 00000 n +0000169089 00000 n +0000169427 00000 n +0000169654 00000 n +0000169783 00000 n +0000169914 00000 n +0000170045 00000 n +0000170212 00000 n +0000170275 00000 n +0000170427 00000 n +0000170510 00000 n +0000170600 00000 n +0000170663 00000 n +0000170814 00000 n +0000170915 00000 n +0000171007 00000 n +0000171271 00000 n +0000171473 00000 n +0000171744 00000 n +0000172314 00000 n +0000172700 00000 n +0000173004 00000 n +0000173375 00000 n +0000173967 00000 n +0000174249 00000 n +0000174676 00000 n +0000175360 00000 n +0000175691 00000 n +0000175879 00000 n +0000176127 00000 n +0000176513 00000 n +0000176758 00000 n +0000177033 00000 n +0000177227 00000 n +0000177419 00000 n +0000177616 00000 n +0000177802 00000 n +0000177996 00000 n +0000178186 00000 n +0000178373 00000 n +0000178436 00000 n +0000178566 00000 n +0000178645 00000 n +0000178727 00000 n +0000178790 00000 n +0000178890 00000 n +0000178952 00000 n +0000179059 00000 n +0000179121 00000 n +0000179253 00000 n +0000179340 00000 n +0000179424 00000 n +0000179487 00000 n +0000179587 00000 n +0000179649 00000 n +0000179746 00000 n +0000185243 00000 n +0000188104 00000 n +0000194090 00000 n +0000211646 00000 n +0000223972 00000 n +0000232316 00000 n +0000245721 00000 n +0000261751 00000 n +0000266010 00000 n +0000271458 00000 n +0000278155 00000 n +0000290201 00000 n +0000292221 00000 n +0000298194 00000 n +0000312788 00000 n +0000319578 00000 n +0000322272 00000 n +0000324288 00000 n +0000326688 00000 n +0000327992 00000 n +0000329748 00000 n +0000331628 00000 n +0000333345 00000 n +0000335230 00000 n +0000335292 00000 n +0000335390 00000 n +0000335488 00000 n +0000335582 00000 n +0000335645 00000 n +0000335750 00000 n +0000335813 00000 n +0000335911 00000 n +0000335973 00000 n +0000336090 00000 n +0000336152 00000 n +0000336290 00000 n +0000336352 00000 n +0000336452 00000 n +0000336535 00000 n +0000336626 00000 n +0000336688 00000 n +0000336787 00000 n +0000336850 00000 n +0000336951 00000 n +0000337013 00000 n +0000337074 00000 n +0000337136 00000 n +0000337270 00000 n +0000337332 00000 n +0000337394 00000 n +0000337456 00000 n +0000337544 00000 n +0000337607 00000 n +0000337711 00000 n +0000337773 00000 n +0000337887 00000 n +0000337950 00000 n +0000338057 00000 n +0000338120 00000 n +0000338182 00000 n +0000338303 00000 n +0000338366 00000 n +0000338467 00000 n +0000338529 00000 n +0000338591 00000 n +0000338653 00000 n +0000338761 00000 n +0000338855 00000 n +0000338917 00000 n +0000339019 00000 n +0000339082 00000 n +0000339202 00000 n +0000339265 00000 n +0000339382 00000 n +0000339445 00000 n +0000339554 00000 n +0000339616 00000 n +0000339679 00000 n +0000339741 00000 n +0000339846 00000 n +0000339909 00000 n +0000340027 00000 n +0000340089 00000 n +0000340188 00000 n +0000340249 00000 n +0000340367 00000 n +0000340430 00000 n +0000340551 00000 n +0000340613 00000 n +0000340674 00000 n +0000340737 00000 n +0000340800 00000 n +0000340889 00000 n +0000340952 00000 n +0000341053 00000 n +0000341116 00000 n +0000341179 00000 n +0000341277 00000 n +0000341339 00000 n +0000341444 00000 n +0000341507 00000 n +trailer +<</Size 772/Root 1 0 R/Compress<</LengthO 371074/SpecO/1.4>>/Info 7 0 R/ID[(ZT5Q$Zd*)(֛NaP|gh-)]>> +startxref +341570 +%%EOF diff --git a/Master/texmf-dist/doc/latex/amsmath/amsmath.pdf b/Master/texmf-dist/doc/latex/amsmath/amsmath.pdf Binary files differnew file mode 100644 index 00000000000..496ffe99d37 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amsmath.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/amsopn.pdf b/Master/texmf-dist/doc/latex/amsmath/amsopn.pdf Binary files differnew file mode 100644 index 00000000000..a237264b75a --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amsopn.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/amstext.pdf b/Master/texmf-dist/doc/latex/amsmath/amstext.pdf Binary files differnew file mode 100644 index 00000000000..69721997bf4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amstext.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/amsxtra.pdf b/Master/texmf-dist/doc/latex/amsmath/amsxtra.pdf Binary files differnew file mode 100644 index 00000000000..2edaeb3bc57 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/amsxtra.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/diffs-m.txt b/Master/texmf-dist/doc/latex/amsmath/diffs-m.txt new file mode 100644 index 00000000000..0bfa0ff69d4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/diffs-m.txt @@ -0,0 +1,552 @@ +diffs-m.txt [1999/12/15] American Mathematical Society + +This is a synopsis of the principal differences between various versions +of the amsmath package and its companion packages. + +A synopsis of changes in the "AMS-LaTeX" distribution is included at the +end of this file. See also diffs-c.txt in the amslatex/classes area. + +Those upgrading from version 1.2 to version 2.0 will probably be +interested in the question: + + After I upgrade will anything fail in my pre-existing documents? + +Certain of the bug fixes have the potential to affect the output of +existing documents in the following ways: + +---Vertical spacing for some displayed equations will change because +"abovedisplayshortskip" is now applied when possible. + +---Incorrect horizontal spacing for certain math constructs will change, +e.g., for \iint\nolimits or a subscript on a double-accented letter. + +---The default subscript placement in displayed formulas for \varinjlim, +\varprojlim, \varliminf, \varlimsup is now below rather than to the +side. To get the old behavior, add \nolimits---e.g., +\varliminf\nolimits_{...}. + +---Ellipsis dots in text (\ldots or \dots) will now behave the same as +in standard LaTeX; the surrounding space may therefore change. + +During regression testing we found some errors cropping up in documents +from incorrect usage that had not been caught with version 1.2. Although +these errors are relatively rare, documents containing such usage will +need to be corrected before they will run properly with version 2.0: + +---Use of two mutually exclusive display structures for the same +display. In this example the outer \[ \] are redundant: + + \[ + \begin{align*} + ... + \end{align*} + \] + +---Inadequate argument markup for math accents: + + \hat \mathcal{C} + +This should have been written with braces surrounding the argument of +the \hat command: \hat{\mathcal{C}}. + +For documents where error messages crop up after the upgrade, there are +various possible approaches, including: + +(a) Change instances of incorrect usage (if applicable). + +(b) Put a copy of amsmath.sty version 1.2 into the home directory of the +document. Then it should continue to work the same as before. + +(c) Use the snapshot package in combination with a shell script to +arrange that version 1.2 of amsmath is found instead of 2.0 when +processing the document. See ftp://ftp.ams.org/pub/tex/snapshot.*. This +approach requires a certain amount of technical knowledge. + +(d) Downgrade to version 1.2 again. + +======================================================================== +Changes in amsmath 2.0 [November 1999] + +---The AMS-LaTeX User's Guide (amsldoc.tex) has been turned into the + AMSmath User's Guide by moving the amsthm documentation into a + separate file (amsthdoc.tex) in the amslatex/classes area. + +---Restored normal use of "shortskip" spacing in single equations. + +[!! NOTE: This means that page breaks may change in existing documents.] + +---Restored normal use of available shrink around binary operators in + single equations. + +---Fixed poor subscript placement for double-accented letters. Math +accent handling was reworked in the process in such a way that the +capitalized forms of the math accent commands are no longer necessary. +\hat{\hat{X}} will do proper alignment of the second accent. \Hat et +cetera are retained for compabitility reasons. (Thanks to Javier Bezos +for donating some code from his accents package.) + +[!! NOTE: Improper math accent use will now produce wrong output.] + +Suppose that we have \boldH defined in the preamble as +\newcommand{\boldH}{\mathbf{H}}. Then the following examples illustrate +recommended usage. + + \hat{\mathbf{H}} OK + \hat{\boldH} OK + \hat\boldH Works OK, but deprecated by the LaTeX book + \hat\mathbf{H} Not OK! Output will be incorrect. + +Since the output will be wrong, amsmath gives an error message when the +last variant is detected. + +---The following kinds of mixed structures worked by happenstance with + amsmath 1.2, although they should have produced an error message. + With amsmath 2.0 they will produce an error or warning message. + + [!! NOTE: Potential error messages] + + % Outer \[ \] is redundant + + \[ + \begin{align*} + ... + \end{align*} + \] + + % Outer \begin{equation*} ... \end{equation*} is redundant + + \begin{equation*}\begin{alignat*}{2} + ... + \end{alignat*} + \end{equation*} + + % No printed material is allowed between \begin{equation} and + % \begin{split}: + + \begin{equation*}\left \{ + \begin{split} + ... + \end{split}\right . + \end{equation*} + +---diff12.tex is replaced by diffs-m.txt and diffs-c.txt, with the + latter moving to the amslatex/classes area. + +---Added an "?" option which gives some information about the available + documentation. + +---The amsmath definitions for matrix, pmatrix, and cases are + incompatible with the plain-TeX syntax for \pmatrix, \matrix, and + \cases, which are used occasionally by some authors in LaTeX + documents. In version 2.0 the error messages resulting from the + plain-TeX syntax have been made more intelligible. + +---If you need the boldsymbol facilities of the amsbsy package, use of + the "bm" (boldmath) package is recommended instead for new documents. + The amsbsy package is retained for compatibility with existing + documents. If you have a recent version of LaTeX (1998 or newer) you + already have the bm package; otherwise you may need to get it from + CTAN. (It is not an AMS package.) + +---\iint\nolimits: Fixed poor placement of subscript (also \iiint, +\idotsint, etc). + +---\varinjlim, \varprojlim, \varliminf, \varlimsup: Default to +\displaylimits instead of nolimits. + +---Fixed alignedat so that it doesn't take the first token of its + contents and try to interpret it as a number. + +---Leave text version of \dots and \ldots unchanged. + +---Changed \numberwithin so it no longer assumes previous definition of + \thesomething contained no prefixes. + +---\mathbf{\Gamma}: Leave cap Greek letters alone instead of converting + them from variable (fam 7) to fixed (fam 0). \mathbf{\gamma} still + fails---but that's a math font problem. + +---\mathindent is aliased to \@mathmargin so that when the fleqn option + is used, users can reset it as the LaTeX book advertises. + +---With the showkeys package: Corrected loss of marginal notes when +labels occurred inside an align environment. + +---Carried over some tweaks (\bmod, \right/leftarrowfill) from the 1996 + version of plain.tex. + +---Adjusted spacing of overarrow@ and underarrow@ to allow more room for + larger cmsy arrowheads. + +---Corrected spurious "overfull \hbox" warnings for \xrightarrow. + +---Corrected poor spacing for \xleftarrow. + +---Removed the \leavevmode in \smash which caused trouble for some + applications (e.g., the crop package) that expected the original + LaTeX definition. + +---Changed \def to \newcommand/\newenvironment where appropriate. + +---Use \sqrtsign instead of \@@sqrt (but include a backward + compatibility hack for the latter). + +---Left brace in \env{cases} environment would fail to work in + certain circumstances: Fix by using \lbrace instead of \{. + +---Use \ignorespacesafterend where applicable instead of + \global\@ignoretrue. + +---Protected commands in the definition of \theequation were + incorrectly expanded by the subequations environment when copying + the definition to \theparentequation: Fix by using \protected@edef. + +---Spurious extra space following punctuation at that end of a display: + In \math@cr, \math@cr@@, etc, use \iffalse{\fi instead of simply { to + keep an unwanted mathord atom from being added at the end of the + current math list; added \endmultline@math to work around a similar + sort of problem specific to the `multline' environment. + +---Various wrong results or no effect for \displaybreak inside "align", + "alignat", etc. Resetting \dspbrk@level in the \everycr of + \@display@init cleared most of these up. + +---Changed \displaybreak to issue an error message if enclosed in boxing + environment that will keep it from having any effect. + +---Turned off \displaybreak during the measuring phase of multline. + +---Fixed some numbering problems with multline and multline* and error + for use of \tag. + +---Use \@gtempa instead of \@tempa where assigned globally (standard + save stack precaution). + +---Save and restore \column@ to keep aligned from screwing up the column + counting of a parent align environment. Made \column@ assignments + uniformly global, except in a couple of places where the risk of side + effects seemed too great. + +---Error recovery for misspelled '\end{multline}' was not very helpful. + Improve \collect@body along lines suggested by Hellstrm. + +---Fixed up certain number placement problems with align + +---Add \alignsafe@testopt to work around a LaTeX bug: when a nested + alignment environment that takes an optional argument has an empty + first cell (i.e., begins with an &) LaTeX's optional argument + scanning screws up the alignment state. + +---Add `mathdisplay' environment (internal use) to correct several + problems of \[ \] and the `equation' environment arising from the + previous implementation as a degenerate case of `gather'. + +---It is possible now to use \eeq as an abbreviation for \end{equation} +(one of the consequences of the preceding change). But still not \eal +for \end{align} or certain other display structures. + +---Reorganize `split' internal calling sequence to go along with the use + of `mathdisplay' in \[ \] and `equation'. + +---Suppression of LaTeX error messages during measuring phase made + primitive TeX errors harder to understand; stop suppressing. (As a + result, users will sometimes get redundant error messages now.) + Remove obsolete Sb, Sp environments again. + +---The file amsintx.dtx was removed from the distribution pending + further development. + +---Remove the \ifinany@ switch, use \spread@equation instead to achieve + the same ends. + +---Remove unbracefonts@ function, no longer needed after changes in + math accent handling. + +---Got rid of the special trap for '^x that had been carried over from +AMS-TeX. + +---Made \overline, \doteq, \longrightarrow, etc, robust. + +---Changed \relbar to use \std@minus---otherwise \underleftrightarrow +works poorly in a \DeclareMathOperator definition. + +---Use \new@ifnextchar in matrix, pmatrix, cases so that \\<newline>[x] +doesn't trigger an error. + +---Bug fix for nested use of \label inside minipage inside equation. + +---Add minalignsep after every second column in aligned, for consistency +with align. + +======================================================================== +Changes in amsmath 1.2 [January 1995] + +---Name change; relation to the "amsfonts" package + +In version 1.1 of AMS-LaTeX, the name of this package was "amstex". The +new name is "amsmath". The amstex package automatically invoked the +amsfonts package as well; the amsmath package does not. + +---Adapted for LaTeX2e + +Old method of invocation: + + \documentstyle[amstex]{article}% LaTeX 2.09 + +New method of invocation: + + \documentclass{article} + \usepackage{amsmath} + +---Handling of options intlim, nosumlim, nonamelm, righttag, ctagsplt + +Old usage: + + \documentstyle[amstex,righttag,intlim] + +New usage: + + \usepackage[reqno,intlimits]{amsmath} + +Several option names were changed (mainly, they are no longer restricted +to eight characters): + + intlim -> intlimits + nosumlim -> nosumlimits + nonamelm -> nonamelimits + righttag -> reqno [for consistency with "leqno"] + ctagsplt -> centertags + +---Character @ is no longer used as a special command prefix + +Certain commands in the amstex pkg started with "@" instead of "\". This +special usage has been discontinued, except for the amscd package, and +then only within the CD environment. Practically speaking, this means +primarily that it is no longer necessary to use doubled @@ to get a +single printed @ character (e.g., in e-mail addresses). + +---The @, and @! micro-spacing commands are no longer provided + +As a consequence of the @ character change, "@," and "@!" are no longer +recognized spacing commands. An \mspace command is provided that can be +used instead; see the AMSmath User's Guide. + +---Extensible arrow commands @>>> and @<<< + +The commands @>>> and @<<< are no longer available [except in the CD +environment of the amscd package]; alternative commands \xleftarrow and +\xrightarrow are provided by the amsmath package. The sub and +superscripts are given through an optional resp. mandatory argument, for +example + + X\xleftarrow{b}Y % superscript "b" only + X\xrightarrow[\alpha]{\beta}Y % sub alpha, sup beta + +---The command \bold has been superseded by the command \mathbf, as the +latter is now the standard name provided by LaTeX for this purpose. + +---The commands \newsymbol, \frak, \Bbb are no longer available because +the amsfonts package is not loaded by amsmath. In any case those +commands now have new names---\frak -> \mathfrak, \Bbb -> \mathbb, etc. +See the amsfonts documentation for further details. + +---The amsmath package provides \lvert and \rvert to use for vert-bar +symbols when they act as delimiters (compare \langle, \rangle for +angle-bracket delimiters). Commands \lVert and \rVert are likewise +provided instead of \| for paired-delimiter use of the double-vert +symbol. Use of | and \| for paired delimiters can lead to incorrect +spacing in rare cases. Further discussion is found in the AMS-LaTeX +user's guide (amsldoc.tex). + +---The ~ command is now left unchanged by amsmath; the change +that makes it remove a redundant preceding or following space character +is now done only by AMS documentclasses (in version 1.1 this was done by +the amstex package). + +---The following rarely used commands are removed to the amsxtra +package: \accentedsymbol, \sphat, \spcheck, \sptilde, \spdot, \spddot, +\spdddot, \spbreve, \@))), \@(((. + +---The six generalized fraction commands \over, \overwithdelims, \atop, +\atopwithdelims, \above, \abovewithdelims are deprecated and produce +warning messages. Their functionality can be obtained through \frac, +\binom, and \genfrac instead. See amsldoc.tex and technote.tex for +further details. + +---The \fracwithdelims command is gone, as \genfrac provides +equivalent functionality (and a little more). + +---The optional argument of \frac that allowed changing the thickness of +the fraction line is gone. That functionality is now provided only +through \genfrac: the need to change the line thickness is so rare in +practice that it seems better not to burden the ubiquitous \frac command +with the somewhat time-consuming look-ahead process required for an +optional argument. I.e., this change will contribute in a small way to +making your documents run faster. + +---The commands \lcfrac and \rcfrac for left or right alignment of +continued fraction numerators are gone; they are replaced by an optional +argument of the \cfrac command. + +---A new command \DeclareMathOperator is provided for defining new +operator names: + +\DeclareMathOperator{\Tr}{Tr} +\DeclareMathOperator*{\xlim}{x-lim} + +The * form makes the operator name produce limit-style sub and +superscripts, like \max or \lim. This is now the preferred method, +instead of using the old command \operatorname (which is, however, +retained for now). The command \operatornamewithlimits has been renamed +\operatorname*. These commands now can also be obtained through a +separate package amsopn, so it's not necessary to load the entire +amsmath package just to get that feature. + +---Environments "Sb", "Sp" retired. + +The environments Sb and Sp for multiline subscripts have been replaced +by a single command \substack, used as follows: + +\sum_{\substack{first line\\second line}} + +This command can be used equally well in a subscript or superscript, and +provides better vertical positioning (as compared to Sb, Sp) if a +multiline subscript is placed on the side, as perhaps for an integral. +There is also a slightly generalized alternative, an environment +subarray that allows you to specify either centering or left alignment +for the contents: + +\sum_{\begin{subarray}{l}first line\\second line\end{subarray}} + +---New command \nobreakdash + +A command \nobreakdash is provided to suppress the possibility of a +linebreak after the following hyphen or dash. For example, if you write +"$p$\nobreakdash-adic" then a linebreak will never be taken between the +hyphen and the "adic". + +---The placement of equation numbers has been substantially improved for +align, gather, and split. Numbers will now never overlap on top of the +equation body (as far as we can ascertain), and they are much less +likely to be shifted up or down unnecessarily when there is actually +adequate space to leave the number in the normal place. In a few +remaining cases, an equation number will be shifted unnecessarily +because technical complications make accurate measurement of the +available room too difficult; for those cases a \raisetag command is +provided that allows you to manually adjust the vertical position of the +equation number. + +---The [xx]align[at] family of environments has been thoroughly revised: +now the xalignat environment is gone, as its function has been merged +into the align environment (it's no longer necessary to specify how many +side-by-side structures, as was required for xalignat, because align +automatically handles any number of them). Similarly, the xxalignat +environment has been replaced by an environment flalign that doesn't +require you to specify how many side-by-side structures will be needed. +Certain numbering problems (presence of an equation number when it +should be absent, or vice versa) have also been cleared up. + +(Thanks to David M. Jones for his substantial [volunteer] work behind +this change and the preceding one.) + +---The alignedat environment was changed to take two arguments rather +than one: a mandatory argument (as formerly) specifying the number of +align structures, and a new optional one specifying the placement of the +environment (parallel to the optional argument of aligned). However, +aligned is simpler to use, allowing any number of aligned structures +automatically, and therefore the use of alignedat is deprecated. + +---The seldom-used command \oldnos is gone; if you need it, you should +consult the LaTeX documentation on using fonts (e.g., fntguide.tex) to +find out how to construct an equivalent command. + +---A new subequations environment causes all numbered equation +environments within its scope to be numbered (4.9a) (4.9b) (4.9c) etc., +if the preceding numbered equation was 4.8. A \label command immediately +after \begin{subequations} will produce a \ref of the parent number +`4.9', not `4.9a'. The counters used by the subequations environment are +parentequation and equation and standard uses of \addtocounter, +\setcounter, etc., are possible with those counter names. + +---The amsmath package (unlike amstex) respects the setting provided by +the documentclass for putting equation numbers on the right or the left. +[Technical note: a documentclass that has leqno as the default should +explicitly pass that option to the amsmath package with +\PassOptionsToPackage in order for it to be effective.] + +---The fleqn option for left-aligned instead of centered equations is +now supported (thanks to David M. Jones). + +************************************************************************ +The remainder of this file discusses some changes that do not directly +pertain to the amsmath package but to the parent distribution known as +"AMS-LaTeX". + +======================================================================== +Changes in AMS-LaTeX 2.0 + +---The AMS-LaTeX User's Guide (amsldoc.tex) is split up into amsldoc.tex +and amsthdoc.tex, with the latter moving into the "classes" area. + +---The file amslatex.faq was split into amsmath.faq and amsclass.faq. + +---The file amslatex.bug was done away with; most of the information was +merged into diffs-m.txt, diffs-c.txt, amsmath.faq, and amsclass.faq. + +======================================================================== +Changes in AMS-LaTeX 1.2 + +---Adapted for LaTeX2e + +AMS-LaTeX 1.0 and 1.1 were designed to work with LaTeX 2.09, which +became obsolete in 1994 with the appearance of "LaTeX2e". AMS-LaTeX 1.2 +has been extensively adapted to take advantage of various features of +LaTeX2e. It is no longer a separate TeX format---i.e., it does not need +to be invoked by a separate "amslatex" command. + +---LaTeX 2.09 font commands (\bf, \it, etc) + +Pre-existing documents will for the most part continue to work fine +without requiring any changes. However, depending on the installation +options used for your copy of AMS-LaTeX 1.1 you may need to update the +options list of the \documentstyle command by adding newlfont, for +example: + + \documentstyle[newlfont]{amsart} + +---The packages amsfonts, amssymb were moved to the AMSFonts +distribution. They used to be included in the AMS-LaTeX distribution for +pragmatic reasons but their natural home is with the AMSFonts +distribution. + +---Package amstex renamed to amsmath + +The amstex package has been renamed amsmath. The old name `amstex' came +from the fact that version 1.0 was a more or less straight port into +LaTeX of selected portions from the macro package AmS-TeX written by +Michael Spivak, but the historical origins of the package are likely of +less interest to the general usership---especially looking to the +future---than a straightforward declaration in the name `amsmath' of the +sort of features that are provided. + +Another important reason for the name change was to make possible some +progress that would be out of the question (because of the impact on +existing documents) if the name `amstex' were retained. For example, +unlike amstex, amsmath doesn't automatically load the amsfonts package, +as that package was moved out to the AMSFonts distribution as described +above. If this change were not accompanied by a name change, many +existing documents would have to be updated by hand (adding +\usepackage{amsfonts}) in order to run without error. A frozen version +of amstex.sty is provided for processing pre-existing documents; it +won't have active maintainence henceforth except for bug fixes. For new +documents, authors should use the amsmath package. + +Therefore, "\usepackage{amstex}" is incorrect usage---do not rely on the +1994 edition of `The LaTeX Companion' in this respect (unless you obtain +the errata for Chapter 8; see +http://ctan.tug.org/info/compan-rev/ch8.pdf). + +---New documentclass amsproc + +A new documentclass amsproc was added for collections of articles, such as +the proceedings of a conference. diff --git a/Master/texmf-dist/doc/latex/amsmath/subeqn.pdf b/Master/texmf-dist/doc/latex/amsmath/subeqn.pdf Binary files differnew file mode 100644 index 00000000000..4b769ea1ff0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/subeqn.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/technote.pdf b/Master/texmf-dist/doc/latex/amsmath/technote.pdf Binary files differnew file mode 100644 index 00000000000..d3ec2677db0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/technote.pdf diff --git a/Master/texmf-dist/doc/latex/amsmath/testmath.pdf b/Master/texmf-dist/doc/latex/amsmath/testmath.pdf Binary files differnew file mode 100644 index 00000000000..53bc768ff7d --- /dev/null +++ b/Master/texmf-dist/doc/latex/amsmath/testmath.pdf diff --git a/Master/texmf-dist/source/latex/amsmath/00readme.txt b/Master/texmf-dist/source/latex/amsmath/00readme.txt new file mode 100644 index 00000000000..080ed622537 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/00readme.txt @@ -0,0 +1,123 @@ +00readme.txt for amsmath 2.0 [2004/08/06] American Mathematical Society + +See manifest.txt for a list of all the files in the distribution. + +See install.txt for installation instructions. [Installing from an +archive file such as ftp://ftp.ams.org/pub/tex/amsmath.zip is +recommended.] + +The amsmath package is an extension package for LaTeX that provides +additional features to facilitate mathematical typesetting. It has been +developed by the American Mathematical Society and released for general +use as a service to the mathematical community. A number of smaller +auxiliary packages are also distributed with the amsmath package. + +In order to use amsmath you need to have TeX installed first. TeX is not +an AMS product. For information on getting TeX see one of the following: + + http://www.tug.org/ + http://www.ams.org/tex/tex-resources.html + +The primary documentation for amsmath is in + + amsldoc.pdf + +Additional documentation files include: + + diffs-m.txt + subeqn.pdf + technote.pdf + testmath.pdf + +which are included in the collection. Additional documentation can be +found in the amsmath FAQ: + + http://www.ams.org/tex/amsmath-faq.html + +For technical support: + + American Mathematical Society + Technical Support + Publications Technical Group + P. O. Box 6248 + Providence, RI 02940-6248 + Phone: 800-321-4AMS (321-4267) (USA/Canada) or 401-455-4080 + tech-support@ams.org + +For submitting bug reports, however, users are encouraged to use the +standard LaTeX bug reporting system: Issue the command + + latex latexbug.tex + +and follow the resulting instructions (selecting the "amslatex" category +when the list of possible categories is shown). + +======================================================================== +RECENT CHANGES (REVERSE ORDER) + +---amsmath.faq - 2004/08/06 +Removed from distribution; replaced by on-line FAQ at +http://www.ams.org/tex/amsmath-faq.html + +---amsmath.dtx 2.13 2000/07/18: + +After the numbering patches in 2.11, \notag failed in certain +circumstances: introduce some more auxiliary functions to sort things +out, and redefine \nonumber. + +---amstext.dtx 2.01 2000/06/29: + +Use \f@size instead of \tf@size because they are not necessarily the +same and the former is better for putting a few words into a display. + +---amsmath.dtx 2.12 2000/06/06: + +Fix transposed lines in 2.11 patch. + +---amsdtx.dtx - 2000/06/02: + +Move to the amscls distribution. + +---amsmath.dtx 2.11 2000/06/02: + +Prevent "Arithmetic overflow" error by guarding against divide-by-zero +in \x@calc@shift@lc (align environment). + +---amsmath.dtx 2.10 2000/05/25: + +Clear up error message for \allowdisplaybreaks[0]. + +Make mathdisplay re-entrant by introducing mathdisplay@stack, to +clear up numbering problems in unusual circumstances such as \[ \] +nested inside minipage inside equation. + +---amsmath.dtx 2.09 2000/04/21: + +Ensure good catcodes for " etc. + +---amsmath.dtx 2.08 2000/03/16: + +Fixed erroneous tag placement on split with fleqn/tbtags options. + +---amsmath.dtx 2.07 2000/03/15: + +Add \reset@strutbox@ to deal with the following bug: After +$...\mbox{\Huge $...$}...$, line spacing is wrong in a following +"gather" or other environment that uses \strut@. + +Patch to fix bug with intlimits option: too much space in the middle of +\iint. + +Overhaul math accents again to fix a couple of bugs reported by Thimm. + +---amsmath.dtx 2.06 2000/03/10: + +Change \MathAccent to \mathaccentV so \DeclareMathAccent won't give an +error when redefining an accent. + +---amsmath.dtx 2.05 2000/01/06: + +Fixed incorrect placement of fleqn/reqno equation numbers inside +indented lists (displaywidth < columnwidth). Changed the +multline/fleqn/leqno indent to match mathmargin when possible instead of +always just using multlinetaggap. diff --git a/Master/texmf-dist/source/latex/amsmath/ams-m1.ins b/Master/texmf-dist/source/latex/amsmath/ams-m1.ins new file mode 100644 index 00000000000..a03642e51a7 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/ams-m1.ins @@ -0,0 +1,69 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "ams-m1.ins", +%%% version = "1.05", +%%% date = "2000/05/25", +%%% time = "16:28:35 EDT", +%%% checksum = "13352 69 258 2600", +%%% author = "American Mathematical Society", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@math.ams.org (Internet)", +%%% supported = "yes", +%%% copyright = "Copyright 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% keywords = "latex, amsmath, ams-latex, installation", +%%% abstract = "This is an installation file that will generate +%%% loadable package and class files when run +%%% through \LaTeX{}.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\def\batchfile{ams-m1.ins} +\input docstrip.tex +\preamble +\endpreamble + +\keepsilent + +\csname newtoks\endcsname\filesmsg +\def\dofile#1#2#3{\generateFile{#1}{f}{\from{#2}{#3}}% + \filesmsg\expandafter{\the\filesmsg + \Msg{* \space\space#1}}} + +% Math packages +\dofile{amsmath.sty}{amsmath.dtx}{} +\dofile{amsgen.sty}{amsgen.dtx}{} +\dofile{amstext.sty}{amstext.dtx}{} +\dofile{amsopn.sty}{amsopn.dtx}{} +\dofile{amsbsy.sty}{amsbsy.dtx}{} +\dofile{amscd.sty}{amscd.dtx}{} +\dofile{amsxtra.sty}{amsxtra.dtx}{} + +\ifToplevel{ +\Msg{******************************************************************} +\Msg{*} +\Msg{* To produce the User's Guide for amsmath, run amsldoc.tex through} +\Msg{* LaTeX.} +\Msg{*} +\Msg{******************************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/latex/amsmath/amsbsy.dtx b/Master/texmf-dist/source/latex/amsmath/amsbsy.dtx new file mode 100644 index 00000000000..30c4dee1bbf --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsbsy.dtx @@ -0,0 +1,251 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsbsy.dtx", +%%% version = "1.2d", +%%% date = "1999/11/29", +%%% time = "14:26:42 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "08988 251 1238 9625", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, bold symbol, pmb", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that provides a command +%%% for producing bold math symbols when appropriate +%%% fonts exist, and a `poor man's bold' command that +%%% can be applied when no appropriate bold font +%%% is available.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +%\iffalse +%<*driver> +\documentclass{amsdtx} +\usepackage{amsbsy} +\begin{document} +\title{The \pkg{amsbsy} package} +\author{Frank Mittelbach\and Rainer Sch\"opf\and Michael Downes} +\date{Version \fileversion, \filedate} +\hDocInput{amsbsy.dtx} +\end{document} +%</driver> +%\fi +% +% \maketitle +% +% \MakeShortVerb\| +% +% \section{Introduction} +% +% The package \texttt{amsbsy}, first written in 1989, implements a +% few commands for producing \textbf{bold} characters in the `normal' +% \emph{math version}. +% \begin{quote}\em +% Note: It is recommended nowadays to use the \pkg{bm} package, which +% became available in 1997. +% \end{quote} +% +% If we have bold fonts which contain the character in question then +% we will use these fonts to produce the wanted character. But +% sometimes math fonts are only available in a certain weight +% (e.g.\ the AMS symbol fonts). +% \DescribeMacro\pmb +% For these cases we provide a command which is called \verb+\pmb+ (an +% acronym for \textbf{p}oor \textbf{m}an's \textbf{b}old) with one argument. +% The bolder weight is achieved by copying the argument three times in +% slightly different positions which is better than nothing but no +% match for a real bold font. +% +% \DescribeMacro\boldsymbol +% There also exists the \verb+\boldsymbol+ command which is better in +% all cases where bold fonts exists. This command will internally +% switch to the corresponding `bold' \emph{math version} typeset its +% argument in this version. +% +% Both commands will preserve the nature of their arguments, i.e.\ if +% they get a relational atom their result will again be a relation as +% far as \tex/'s mathspacing is concerned. +% +% Since it is good policy to make at least a small test we try to +% typeset the infinity sign ($\infty$) first with \verb+\pmb+ and then +% with \verb+\boldsymbol+. +% \[ +% \pmb{\infty} = \boldsymbol{\infty} \quad ? +% \] +% \StopEventually{} +% +% Standard package info. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amsbsy}[1999/11/29 v1.2d] +% \end{macrocode} +% +% \section{The implementation} +% +% We need some functions from the \pkg{amsgen} package. +% \begin{macrocode} +\RequirePackage{amsgen} +% \end{macrocode} +% +%\begin{macro}{\boldsymbol} +% In implementing boldsymbol, we must take into account \tex/'s +% limitation of only 16 mathgroups (math families, in Knuth's +% terminology). If we wanted to maintain mathgroups for both the bold +% and non-bold version of each math font, it would not take long to +% run out of mathgroups. Therefore what we do instead for a bold +% symbol is embed it in an \verb|\hbox|; inside that \verb|\hbox|, +% when we start another math formula, we can change all the +% mathgroups to their bold equivalents. +% +% However, to get the correct math style inside the hbox (display, +% text, script or scriptscript) we have to use \verb|\mathchoice|. +% Since \verb|\mathversion{bold}| has a lot of overhead, and +% \verb|\mathchoice| typesets the argument text four times, we would +% rather not put the \verb|\mathversion| command inside each +% \verb|\hbox| in the \verb|\mathchoice|; on the other hand, +% \verb|\mathversion| gives an error message if it's used in math +% mode. Therefore if we want to execute \verb|\mathversion{bold}| +% before starting the \verb|\mathchoice| we have to temporarily +% disable the \verb|\@nomath| error. (The error message is intended +% to keep people from accidentally emboldening a preceding part of a +% math formula, since only the mathgroups defined at the end of a +% math formula will determine the fonts used in that formula; but we +% are going to typeset our bold symbol not in the current formula but +% in an embedded formula, so that this danger doesn't apply here.) +% \begin{macrocode} +\DeclareRobustCommand{\boldsymbol}[1]{% +% \end{macrocode} +% Start a group to localize the change of \verb|\@nomath|: +% \begin{macrocode} + \begingroup +% \end{macrocode} +% Disable \verb|\@nomath| so that we don't have to leave math +% mode before executing \verb|\mathversion|: +% \begin{macrocode} + \let\@nomath\@gobble \mathversion{bold}% +% \end{macrocode} +% \cs{math@atom} is a test macro which looks at its argument and +% produces a math atom of the proper class. +% \begin{macrocode} + \math@atom{#1}{% +% \end{macrocode} +% Although it is tempting to use \verb|\text| here, to save some +% main memory, that caused a bug in the past due to some internal +% interactions with \verb|\mathversion|. +% \begin{macrocode} + \mathchoice% + {\hbox{$\m@th\displaystyle#1$}}% + {\hbox{$\m@th\textstyle#1$}}% + {\hbox{$\m@th\scriptstyle#1$}}% + {\hbox{$\m@th\scriptscriptstyle#1$}}}% +% \end{macrocode} +% End the group we started earlier. +% \begin{macrocode} + \endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@atom} +% The macro \verb+\math@atom+ looks at its argument and produce a +% correct math atom, i.e.\ a primitive like \verb+\mathopen+. +% Until the day we have a real implementation for all cases we use +% the \verb+\binrel@+ command from \amstex/ which can distinguish +% between binary, relation and ord atoms. +% \begin{macrocode} +\def\math@atom#1#2{% + \binrel@{#1}\binrel@@{#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pmb} +% Poor man's bold command, works by typesetting multiple copies of +% the given argument with small offsets. +% \begin{macrocode} +\DeclareRobustCommand{\pmb}{% + \ifmmode\else \expandafter\pmb@@\fi\mathpalette\pmb@} +% \end{macrocode} +% +% \cs{pmb@@} is called by \cn{pmb} in the non-math-mode case. +% Discard the first two arguments which are for the math-mode case. +% \begin{macrocode} +\def\pmb@@#1#2#3{\leavevmode\setboxz@h{#3}% + \dimen@-\wdz@ + \kern-.5\ex@\copy\z@ + \kern\dimen@\kern.25\ex@\raise.4\ex@\copy\z@ + \kern\dimen@\kern.25\ex@\box\z@ +} +% \end{macrocode} +% +% \begin{macrocode} +\newdimen\pmbraise@ +% \end{macrocode} +% Note: because of the use of \cs{mathpalette}, if \cs{pmb@} is applied to a +% single math italic character (or a single character from some other +% slanted math font), the italic correction will be added. This will +% cause subscripts to fall too far away from the character in some +% cases, e.g., $\pmb{T}_1$ or $\pmb{\mathcal{T}}_1$. +% \begin{macrocode} +\def\pmb@#1#2{\setbox8\hbox{$\m@th#1{#2}$}% + \setboxz@h{$\m@th#1\mkern.5mu$}\pmbraise@\wdz@ + \binrel@{#2}% + \dimen@-\wd8 % + \binrel@@{% + \mkern-.8mu\copy8 % + \kern\dimen@\mkern.4mu\raise\pmbraise@\copy8 % + \kern\dimen@\mkern.4mu\box8 }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\def\binrel@#1{\begingroup + \setboxz@h{\thinmuskip0mu + \medmuskip\m@ne mu\thickmuskip\@ne mu + \setbox\tw@\hbox{$#1\m@th$}\kern-\wd\tw@ + ${}#1{}\m@th$}% +% \end{macrocode} +% The \cn{noexpand} here should be unnecessary, but just in case +% \ldots +% \begin{macrocode} + \edef\@tempa{\endgroup\let\noexpand\binrel@@ + \ifdim\wdz@<\z@ \mathbin + \else\ifdim\wdz@>\z@ \mathrel + \else \relax\fi\fi}% + \@tempa +} +% \end{macrocode} +% For completeness, assign a default value for \cs{binrel@@}. +% \begin{macrocode} +\let\binrel@@\relax +% \end{macrocode} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \CheckSum{131} +% \Finale diff --git a/Master/texmf-dist/source/latex/amsmath/amscd.dtx b/Master/texmf-dist/source/latex/amsmath/amscd.dtx new file mode 100644 index 00000000000..7dd765109d1 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amscd.dtx @@ -0,0 +1,333 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amscd.dtx", +%%% version = "2.0", +%%% date = "1999/11/29", +%%% time = "14:30:07 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "07428 333 1152 12117", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, commutative diagram", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that adapts the +%%% commutative diagram macros of AMS-\TeX{} for +%%% use in \LaTeX{}", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +%\iffalse +%<*driver> +\documentclass{amsdtx} +\usepackage{amscd} +% Dummy citation to avoid error in an example. +\bibcite{fre:cichon}{C} +\begin{document} +\title{The \pkg{amscd} package} +\author{Frank Mittelbach\and Rainer Sch\"opf\and Michael Downes} +\date{Version \fileversion, \filedate} +\hDocInput{amscd.dtx} +\end{document} +%</driver> +%\fi +% +% \maketitle +% +% \MakeShortVerb\| +% \newcommand{\operatorname}[1]{\mathop{\mathrm{#1}}} +% \newcommand{\per}{\operatorname{per}} +% \newcommand{\cov}{\operatorname{cov}} +% \newcommand{\non}{\operatorname{non}} +% \newcommand{\cf}{\operatorname{cf}} +% \newcommand{\add}{\operatorname{add}} +% \newcommand{\End}{\operatorname{End}} +% +% \section{Introduction} +% +% The \pkg{amscd} package provides a \env{CD} environment that +% emulates the commutative diagram capabilities of \amstex/ version +% 2.x. This means that only simple rectangular diagrams are +% supported, with no diagonal arrows or more exotic features. Many +% users will be better served by one of the more powerful diagram +% packages such as \pkg{diagram}, \pkg{xypic}, or \pkg{kuvio}. +% +% Example: +% \begin{equation}\begin{CD} +% S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T\\ +% @VVV @VV{\End P}V\\ +% (S\otimes T)/I @= (Z\otimes T)/J +% \end{CD}\end{equation} +% \begin{verbatim} +% \begin{equation}\begin{CD} +% S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T\\ +% @VVV @VV{\End P}V\\ +% (S\otimes T)/I @= (Z\otimes T)/J +% \end{CD}\end{equation} +% \end{verbatim} +% (assuming \cn{End} is defined as an `operator name'. +% +% Another example: +% +% We will make liberal use of Cichon's Diagram \cite{fre:cichon}: +% \begin{equation} +% \begin{CD} +% \cov(\mathcal{L}) @>>> \non(\mathcal{K}) @>>> \cf(\mathcal{K}) @>>> +% \cf(\mathcal{L})\\ +% @VVV @AAA @AAA @VVV\\ +% \add(\mathcal{L}) @>>> \add(\mathcal{K}) @>>> \cov(\mathcal{K}) @>>> +% \non(\mathcal{L}) +% \end{CD}\end{equation} +% \begin{verbatim} +% \begin{equation}\begin{CD} +% \cov(\mathcal{L}) @>>> \non(\mathcal{K}) @>>> \cf(\mathcal{K}) @>>> +% \cf(\mathcal{L})\\ +% @VVV @AAA @AAA @VVV\\ +% \add(\mathcal{L}) @>>> \add(\mathcal{K}) @>>> \cov(\mathcal{K}) @>>> +% \non(\mathcal{L}) +% \end{CD}\end{equation} +% \end{verbatim} +% +% \StopEventually{} +% +% Standard package info. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amscd}[1999/11/29 v2.0] +% \end{macrocode} +% \begin{macrocode} +\RequirePackage{amsgen} +% \end{macrocode} +% Better not to redefine \verb|\math@cr| if it is already defined, +% because for CD use only we want to omit the part of the code +% related to \verb|\dspbrk@lvl| (see \fn{amsmath.sty}). +% +% [mjd,1999/11/04] These definitions have gone somewhat obsolete; but +% we had probably better leave them as they are for backward +% compatibility. +% \begin{macrocode} +\@ifundefined{math@cr}{% + \def\math@cr{{\ifnum0=`}\fi + \@ifstar{\global\@eqpen\@M\math@cr@}% + {\global\@eqpen\interdisplaylinepenalty \math@cr@}} +% \end{macrocode} +% The following section merely duplicates some code from the +% \pkg{amsmath} package, in case the \pkg{amscd} package is used by +% itself. For documentation of the code refer to \fn{amsmath.dtx}. +% \begin{macrocode} + \def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}} + \def\math@cr@@[#1]{\ifnum0=`{\fi}\math@cr@@@ + \noalign{\vskip#1\relax}} + \def\restore@math@cr{\def\math@cr@@@{\cr}} +}{} +\restore@math@cr +% \end{macrocode} +% [mjd,1999/11/04] These definitions too are somewhat obsolete; +% but we had probably better leave them as they are for backward +% compatibility. +% \begin{macrocode} +\@ifundefined{rightarrowfill@}{ + \def\rightarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} + \def\leftarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +}{} +% \end{macrocode} +% +% \begin{macrocode} +\def\atdef@#1{\expandafter\def\csname\space @\string#1\endcsname} +\@ifundefined{Iat}{% + \DeclareRobustCommand{\Iat}{\FN@\at@} +}{} +\begingroup \catcode`\@=\active +% \end{macrocode} +% Define math \qc{\@} to replicate its mathcode-dictated behavior. +% This is in case \qc{\@} occurs outside of \env{CD}. +% \begin{macrocode} +\csname if\string @compatibility\endcsname +\else \fam=\mathcode`\@ + \xdef @{\mathchar\number\fam\space } +\fi +\gdef\CDat{\let @=\Iat} +\endgroup +\mathcode`\@="8000 % make @ pseudo-active in math +\def\at@{\let\next@\at@@ + \ifcat\noexpand\next a\else + \ifcat\noexpand\next0\else + \ifcat\noexpand\next\relax\else + \let\next@\at@@@\fi\fi\fi\next@} +\def\at@@#1{\expandafter + \ifx\csname\space @\string#1\endcsname\relax + \DN@{\at@@@#1}% + \else + \DN@{\csname\space @\string#1\endcsname}% + \fi\next@}% +% \end{macrocode} +% The following items should be defined only if they are not +% already defined, either to leave the package name untouched (in +% the case of \cs{PackageError}) or to avoid redundant allocation +% of token or dimen registers. +% \begin{macrocode} +\@ifundefined{default@tag}{% + \def\default@tag{% + \def\tag{\PackageError{amscd}{\protect\tag\space not allowed + here}\@eha}}% +}{}% +\@ifundefined{at@@@}{% + \def\at@@@{\PackageError{amscd}{\Invalid@@ @}{\the\athelp@}\char64\relax} +}{} +\@ifundefined{athelp@}{\csname newhelp\endcsname\athelp@ +{Only certain combinations beginning with @ make sense to me.^^J% +I'll assume you wanted @@ for a printed @.}}{} +\@ifundefined{minaw@}{\newdimen\minaw@}{} +\@ifundefined{bigaw@}{\newdimen\bigaw@}{} +% \end{macrocode} +% +% Assignment of a couple of dimensions, and initialization of +% \verb=\ampersand@=. We check to see if we need to define +% \verb=\minaw@= and \verb=\bigaw@=. +% \begin{macrocode} +\minaw@11.111pt +\newdimen\minCDarrowwidth +\minCDarrowwidth2.5pc +\newif\ifCD@ +\let\ampersand@\relax +% \end{macrocode} +% +% Added \verb|\restore@math@cr\default@tag| to fix line numbering +% problems, 7-JUN-1991. Suggested by I.~Zakharevich. +% \begin{macrocode} +\newenvironment{CD}{% + \CDat + \bgroup\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi + \CD@true\vcenter\bgroup\let\\\math@cr\restore@math@cr\default@tag + \tabskip\z@skip\baselineskip20\ex@ + \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup + &\hfill$\m@th##$\hfill\crcr +}{% + \crcr\egroup\egroup\egroup +} +% \end{macrocode} +% +% \begin{macro}{\CD@check} +% This check is used by all macros that must not appear outside the +% \env{CD} environment. The first argument is the symbol to be used +% after \verb+@+, the second one the action to be performed. +% +% Once again we use the trick of defining a temporary control +% sequence \verb+\next@+ and calling it after the final \verb+\fi+. +% This is not absolutely necessary, but it ensures that the +% conditional text is processed in one and the same column +% of the enclosing alignment. +% \begin{macrocode} +\def\CD@check#1#2{\ifCD@\DN@{#2}\else + \DN@{\PackageError{amscd}{@\protect#1 not + allowed outside of the CD environment}\@eha}% + \fi\next@} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\atdef@>#1>#2>{\ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;{#1}\;\;$}% + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi +% \end{macrocode} +% If \verb|#2| is empty we can save some work. +% \begin{macrocode} + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;{#2}\;\;$}% + \ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi}% + \ifCD@\enskip\fi + \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +% +\atdef@<#1<#2<{\ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \ifCD@\enskip\fi + \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +% \end{macrocode} +% +% Variants of the above two arrows, using \verb|(| and \verb|)| +% characters instead of \verb|<| and \verb|>| characters, are +% provided for those whose keyboards don't have the latter. +% \begin{macrocode} +\begingroup \catcode`\~=\active \lccode`\~=`\@ +\lowercase{% + \global\atdef@)#1)#2){~>#1>#2>} + \global\atdef@(#1(#2({~<#1<#2<} +}% end lowercase +\endgroup +% \end{macrocode} +% +% \begin{macrocode} +\atdef@ A#1A#2A{\CD@check{A..A..A}{\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$}\Big\uparrow + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +% +\atdef@ V#1V#2V{\CD@check{V..V..V}{\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$}\Big\downarrow + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +% +\atdef@={\CD@check={&\enskip\mathrel + {\vbox{\hrule\@width\minCDarrowwidth\vskip2\ex@\hrule\@width + \minCDarrowwidth}}\enskip&}} +% +\atdef@|{\CD@check|{\Big\Vert&&}} +% +\atdef@\vert{\CD@check\vert{\Big\Vert&&}} +% +\atdef@.{\CD@check.{&&}} +% \end{macrocode} +% +% The \cn{pretend} command has weird syntax that doesn't fit well +% with standard \latex/ syntax so we leave it undone, at least for +% now. [mjd,1994/10/27] +% \begin{macrocode} +%\def\pretend#1\haswidth#2{\setboxz@h{$\m@th\scriptstyle{#2}$}\hbox +% to\wdz@{\hfill$\m@th\scriptstyle{#1}$\hfill}} +% \end{macrocode} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \CheckSum{459} +% \Finale diff --git a/Master/texmf-dist/source/latex/amsmath/amsdtx.cls b/Master/texmf-dist/source/latex/amsmath/amsdtx.cls new file mode 100644 index 00000000000..96a50814c8f --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsdtx.cls @@ -0,0 +1,517 @@ +%% +%% This is file `amsdtx.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amsdtx.dtx (with options: `amsdtx') +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsdtx.dtx", +%%% version = "2.06", +%%% date = "2004/08/06", +%%% time = "12:18:49 EDT", +%%% checksum = "19929 1192 3506 39423", +%%% author = "Michael J. Downes, updated by David M. Jones", +%%% copyright = "Copyright 1996, 1999, 2004 +%%% American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Publications Technical Group, +%%% 201 Charles Street, +%%% Providence, RI 02904, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, amslatex, ams-latex, user documentation", +%%% supported = "yes", +%%% abstract = "This is the source for two document classes, amsdtx +%%% and amsldoc, used to produce AMS user documentation +%%% or technical documentation.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1995/06/01]% LaTeX date must be June 1995 or later +\ProvidesClass{amsdtx}[2004/08/06 v2.06] +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} +\ProcessOptions +\LoadClass{book} +\IfFileExists{url.sty}{% + \RequirePackage{url}\relax + \@gobble +}{% + \@firstofone +} +{ + \DeclareRobustCommand{\url}[1]{% + \def\@tempa{#1}% + \texttt{\urlsetup $\expandafter\strip@prefix\meaning\@tempa$}% + }% + \def\urlsetup{% + \check@mathfonts \textfont\@ne\the\font \textfont\z@\the\font + \urlfix +\urlfix\=\urlfix\:\urlfix\-\urlfix\.\urlfix\,\urlfix\;% + \urlbreak\&\urlbreak\/\urlbreak\?% + }% + \def\urlbreak#1{% + \mathcode`#1="8000 + \begingroup \lccode`\~=`#1 \lowercase{\endgroup \edef~}% + {\mathchar\number`#1\penalty\hyphenpenalty}% + }% + \def\urlfix#1{% + \mathcode`#1=`#1\relax + }% +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\providecommand{\qq}[1]{\textquotedblleft#1\/\textquotedblright} +\providecommand{\mdash}{\textemdash\penalty\exhyphenpenalty} +\providecommand{\ndash}{\textendash\penalty\exhyphenpenalty} +\let\@xp\expandafter +\newcommand*{\autoindex}[1]{% + \index{#1\ifcodeline@index\encapchar usage\fi}% +} +\newcommand{\ntt}{\normalfont\ttfamily} +\newcommand*{\indexcs}[1]{% + \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil +} +\def\@indexcs#1\@nil{% + \autoindex{#1\actualchar + \string\verb\quotechar*\verbatimchar + \@xp\@bothoftwo\string\ #1\@empty + \verbatimchar + }% +} +\def\@bothoftwo#1#2{#1#2} +\def\category@index#1#2{% + {\ntt#2}% + \@category@index{#1}{#2}% +} +\def\@category@index#1#2{% + \autoindex{% + #2\actualchar\string\texttt{#2}% + \ifx\@nil#1\@nil\else\space#1\fi + }% +} +\chardef\bslchar=`\\ % p. 424, TeXbook +\newcommand{\addbslash}{\expandafter\@addbslash\string} +\def\@addbslash#1{\bslchar\@nobslash#1} +\newcommand{\nobslash}{\expandafter\@nobslash\string} +\def\@nobslash#1{\ifnum`#1=\bslchar\else#1\fi} +\def\@boxorbreak{% + \leavevmode + \ifmmode\hbox\else\ifdim\lastskip=\z@\penalty9999 \fi\fi +} +\DeclareRobustCommand{\cs}[1]{% + \@boxorbreak{% + \ntt + \addbslash#1\@empty + \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil + }% +} +\let\cn\cs +\DeclareRobustCommand{\cls}{\category@index{class}} +\DeclareRobustCommand{\pkg}{\category@index{package}} +\DeclareRobustCommand{\opt}{\category@index{option}} +\DeclareRobustCommand{\env}[1]{{\ntt#1}\SpecialEnvIndex{#1}} +\DeclareRobustCommand{\fn}{\category@index{}} +\DeclareRobustCommand{\bst}{\category@index{\string\BibTeX{} style}} +\DeclareRobustCommand{\cnt}{\category@index{counter}} +\DeclareRobustCommand{\fnt}{\category@index{font}} +\def\allowtthyphens{\begingroup + \fontencoding{OT1}\fontfamily{cmtt}% + \expandafter\let\csname OT1+cmtt\endcsname\relax + \try@load@fontshape + \endgroup + \expandafter\let\csname OT1+cmtt\endcsname\@empty +} +\hfuzz2pc +\vbadness9999 \hbadness5000 +\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}% + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +\def\latex/{{\protect\LaTeX}} +\def\amslatex/{{\protect\AmS-\protect\LaTeX}} +\def\tex/{{\protect\TeX}} +\def\amstex/{{\protect\AmS-\protect\TeX}} +\def\bibtex/{{Bib\protect\TeX}} +\def\makeindx/{MakeIndex} +\def\xypic/{XY\mbox{-}pic} +\newcommand{\Textures}{\textit{Textures}} +\def\<#1>{\textit{$\langle$#1\/$\rangle$}} +\def\@listi{% + \leftmargin\leftmargini + \topsep 3\p@ \@plus2\p@ \@minus\p@ + \parsep \p@ \@plus\p@ \itemsep\parsep +} +\let\@listI\@listi +\@listi +\def\@listii{% + \leftmargin\leftmarginii + \labelwidth\leftmarginii \advance\labelwidth-\labelsep + \topsep\p@\@plus\p@ \@minus\p@ + \parsep\z@skip \itemsep\z@skip +} +\def\@listiii{% + \leftmargin\leftmarginiii + \labelwidth\leftmarginiii \advance\labelwidth-\labelsep + \topsep\z@skip \parsep\z@skip \itemsep\z@skip +} +\newenvironment{histnote}{% + \trivlist\item[\hspace{\labelsep}\bfseries Historical Note:]% +}{% + \endtrivlist +} +\def\@starttoc#1{\begingroup + \let\autoindex\@gobble + \makeatletter + \@input{\jobname.#1}\if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout + \csname tf@#1\endcsname \jobname.#1\relax + \fi \global\@nobreakfalse \endgroup} +\newcommand*{\secref}[1]{\S\ref{#1}} +\newcommand{\qc}[1]{}% check for prior definition +\edef\qc#1{\noexpand\protect\expandafter\noexpand\csname qc \endcsname + \noexpand\protect#1} +\@namedef{qc }#1#2{\begingroup\ntt + \ifx\ #2\char`\ \else\escapechar\m@ne\string#2\fi\endgroup} +\DeclareRobustCommand{\qcat}{\qc\@}% +\DeclareRobustCommand{\qcamp}{\qc\&}% +\DeclareRobustCommand{\qcbang}{\qc\!}% +\DeclareRobustCommand{\arg}[1]{{\ntt\##1}} +\def\ncn#1{{\let\index\@gobble\cn{#1}}} + +\DeclareRobustCommand{\cnbang}{% + \ncn{\!}\index{"!@{\ntt\bslchar\qcbang}}} +\DeclareRobustCommand{\cnat}{% + \ncn{\!}\index{"@@{\ntt\bslchar\qcat}}} +\def\5{\penalty500 } +\newcommand{\errexa}{\par\noindent\textit{Example}:\ } +\newcommand{\errexpl}{\par\noindent\textit{Explanation}:\ } +\renewcommand\chapter{\par \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}\fi + \else + \addcontentsline{toc}{chapter}{#1} + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% + \vspace{1.5\baselineskip}% + {\parindent \z@ \raggedright \reset@font + \ifnum \c@secnumdepth >\m@ne + \large\bfseries \@chapapp\space\thechapter + \par\nobreak + \vskip.5\baselineskip\relax + \fi + #1\par\nobreak + \vskip\baselineskip + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% + \vspace*{1.5\baselineskip}% + {\parindent \z@ \raggedright + \reset@font + \large \bfseries #1\par\nobreak + \vskip\baselineskip + }} +\def\@removefromreset#1#2{\let\@tempb\@elt + \expandafter\let\expandafter\@tempa\csname c@#1\endcsname + \def\@elt##1{\expandafter\ifx\csname c@##1\endcsname\@tempa\else + \noexpand\@elt{##1}\fi}% + \expandafter\edef\csname cl@#2\endcsname{\csname cl@#2\endcsname}% + \let\@elt\@tempb} +\@removefromreset{footnote}{chapter} +\def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil{\footnotesize\leftmark{}{}}}% + \def\@oddhead{{\footnotesize\rightmark{}{}}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter. \ \fi + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi + ##1}}}} +\renewcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\fnsymbol{footnote}}% + \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{plain}\@thanks + \endgroup + \setcounter{footnote}{0}% + \let\thanks\relax + \let\maketitle\relax\let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}} +\def\@maketitle{% + \newpage + \null + \vskip 2em% + \begin{center}% + {\LARGE \@title \par}% + \vskip 1.5em% + {\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1em% + {\large \@date}% + \end{center}% + \par + \uppercase\expandafter{\expandafter\toks@\expandafter{\@title}}% + \edef\@tempa{\noexpand\markboth{\the\toks@}{\the\toks@}}% + \@tempa + \vskip 1.5em} +\renewcommand\tableofcontents{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \subsection*{\contentsname}% + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-.6\baselineskip \@plus -3\p@}% + {.4\baselineskip} + {\reset@font\Large\bfseries}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-.3\baselineskip\@plus -2\p@}% + {.2\baselineskip}% + {\reset@font\large\bfseries}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-.2\baselineskip\@plus -2\p@}% + {.2\baselineskip}% + {\reset@font\normalsize\bfseries}} +\renewenvironment{theindex}{% + \if@twocolumn \@restonecolfalse \else \@restonecoltrue \fi + \columnseprule \z@ \columnsep 35\p@ + \let\autoindex\@gobble + \twocolumn[\section*{\indexname}]% + \addcontentsline{toc}{chapter}{\indexname}% + \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}% + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem +}{% + \if@restonecol\onecolumn\else\clearpage\fi +} +\renewcommand{\thesection}{\arabic{section}} +\long\def\@makecaption#1#2{% + \addvspace\abovecaptionskip + \begingroup + \countdef\@parcycles=8 % local count register + \@parcycles\z@ + \@setpar{\advance\@parcycles\@ne \ifnum\@parcycles>999 + \@@par\@parcycles\z@\fi + \ifhmode \unskip\hskip\parfillskip\penalty-\@M\fi}% + \@hangfrom{\textbf{#1.} }\vadjust{\penalty\m@ne}#2% + \endgroup + \ifhmode\unpenalty\fi\par + \ifnum\lastpenalty=\m@ne % only one line in the caption + \unpenalty \setbox\@tempboxa\lastbox + \nointerlineskip + \hbox to\hsize{\hfill\unhbox\@tempboxa\unskip\hfill}% + \fi + \nobreak\vskip\belowcaptionskip +} +\renewenvironment{table}{% + \belowcaptionskip\abovecaptionskip \abovecaptionskip\z@skip + \@float{table}% +}{% + \end@float +} +\renewenvironment{table*}{% + \belowcaptionskip\abovecaptionskip \abovecaptionskip\z@skip + \@dblfloat{table}% +}{% + \end@dblfloat +} +\setcounter{topnumber}{4}\setcounter{bottomnumber}{4} +\setcounter{totalnumber}{4}\setcounter{dbltopnumber}{4} +\renewcommand{\topfraction}{.97}\renewcommand{\bottomfraction}{.97} +\renewcommand{\textfraction}{.03}\renewcommand{\floatpagefraction}{.9} +\renewcommand{\dbltopfraction}{.97} +\renewcommand{\dblfloatpagefraction}{.9} +\setlength{\floatsep}{8pt plus6pt} +\setlength{\textfloatsep}{10pt plus8pt} +\setlength{\intextsep}{8pt plus6pt} +\setlength{\dblfloatsep}{8pt plus6pt} +\setlength{\dbltextfloatsep}{10pt plus8pt} +\setlength{\@fptop}{0pt}\setlength{\@fpsep}{8pt}% +\setlength{\@fpbot}{0pt plus 1fil} +\setlength{\@dblfptop}{0pt}\setlength{\@dblfpsep}{8pt}% +\setlength{\@dblfpbot}{0pt plus 1fil} + +\pagestyle{headings} +\newcommand{\arrayargpatch}{% + \let\@oldarray\@array + \edef\@array[##1]##2{\catcode\number`\|=\number\catcode`\| + \catcode\number`\@=\number\catcode`\@ \relax + \let\noexpand\@array\noexpand\@oldarray + \noexpand\@array[##1]{##2}}% + \catcode`\|=12 \catcode`\@=12 \relax +} +\newenvironment{ctab}{% + \par\topsep\medskipamount + \trivlist\centering + \item[]% + \arrayargpatch + \begin{tabular}% +}{% + \end{tabular}% + \endtrivlist +} +\RequirePackage{doc} +\def\AltMacroFont{\MacroFont} +\def\SpecialMainEnvIndex#1{% + \@bsphack + \special@index{% + #1\actualchar\string\texttt{#1} environment\encapchar main% + }% + \special@index{% + environments:\levelchar#1% + \actualchar\string\texttt{#1}% + \encapchar main}% + \@esphack +} +\def\SpecialEnvIndex#1{% + \@bsphack + \index{#1\actualchar\string\texttt{#1} environment\encapchar usage}% + \index{% + environments:\levelchar#1% + \actualchar\string\texttt{#1}% + \encapchar usage}% + \@esphack +} +\def\DescribeOption{% + \leavevmode + \@bsphack + \begingroup + \MakePrivateLetters + \Describe@Option +} +\def\Describe@Option#1{% + \endgroup + \marginpar{\raggedleft\PrintDescribeOption{#1}}% + \SpecialOptionIndex{#1}% + \@esphack + \ignorespaces +} +\def\PrintDescribeOption#1{\strut \MacroFont #1\ } +\def\option{% + \let\SpecialMainEnvIndex\SpecialMainOptionIndex +\begingroup + \catcode`\\12 + \MakePrivateLetters \m@cro@ \iffalse} +\def\SpecialMainOptionIndex#1{% + \@bsphack + \special@index{#1\actualchar\string\texttt{#1} option\encapchar main}% + \@esphack +} +\def\SpecialOptionIndex{\@category@index{option}} +\def\hDocInput#1{\MakePercentIgnore + \begingroup + \begingroup \lccode`\~=`\@ + \lowercase{\endgroup\long\def ~}##1##{% + \catcode`\==12 \skipfileheader{##1}}% + \catcode`\@=\active \catcode`\==14 % comment + \def\filename{#1}% + \@@input#1 \MakePercentComment} +\def\skipfileheader#1#2 {\endgroup + \hGetFileInfo#2 version = "??" date = "??"\@nil + \begingroup\catcode`\==9 \catcode`\ =9 \futurelet\0\endgroup +} +\long\def\hGetFileInfo#1 version = "#2"#3 date = "#4"#5\@nil{% + \def\fileversion{#2}\def\filedate{#4}} +\DoNotIndex{\@xp,\@nx,\@empty,\newcommand,\renewcommand} +\DoNotIndex{\newenvironment,\renewenvironment,\providecommand} +\DoNotIndex{\if,\fi,\ifnum,\fi,\@let@token,\futurelet,\fsa@n} +\DoNotIndex{\ignorespaces,\@tempcnta,\@tempcntb,\count@} +\DoNotIndex{\toks@,\@ne,\advance} +\DoNotIndex{\!,\/,\?,\@,\^,\_} +\DoNotIndex{\@@par,\@M,\@auxout,\@bsphack,\@esphack,\@depth,\@ehc} +\DoNotIndex{\@for,\@flushglue,\@gobble,\@gobbletwo,\@height,\@idxitem} +\DoNotIndex{\@ifnextchar,\@ifstar,\@ifundefined,\@input,\@latexerr} +\DoNotIndex{\@makeschapterhead,\@namedef,\@nameuse,\@nil} +\DoNotIndex{\@nobreakfalse,\@restonecolfalse,\@restonecoltrue} +\DoNotIndex{\@tempa,\@tempb,\@tempc,\@tempf,\@temptokena,\@themark,\@width} +\DoNotIndex{\active,\aindex,\baselineskip,\begin,\begingroup,\box} +\DoNotIndex{\c@page,\catcode,\chapter,\char,\chardef,\closeout} +\DoNotIndex{\CodelineIndex,\sp,\sb,\label,\leavevmode,\mark} +\DoNotIndex{\mark,\newinsert,\newwrite,\newtoks,\xdef} +\DoNotIndex{\columnsep,\columnseprule,\columnwidth,\csname,\def} +\DoNotIndex{\dimen,\do,\DocInput,\documentstyle,\edef,\em} +\DoNotIndex{\EnableCrossrefs,\end,\endcsname,\endgroup,\endinput} +\DoNotIndex{\everypar,\expandafter,\filedate,\fileversion} +\DoNotIndex{\footnotesize,\gdef,\global,\glossary,\hangindent} +\DoNotIndex{\if@filesw,\else,\fi} +\DoNotIndex{\if@nobreak,\if@twocolumn,\if@twoside,\fi,\fi,\fi} +\DoNotIndex{\hsize,\hskip} +\DoNotIndex{\ifhmode,\ifmmode,\ifodd,\ifvmode,\ifx,\fi,\fi,\fi,\fi,\fi} +\DoNotIndex{\ifcase,\ifdim,\ifeof,\iffalse,\iftrue,\fi,\fi,\fi,\fi,\fi} +\DoNotIndex{\ifcat,\fi} +\DoNotIndex{\immediate,\insert,\item,\jobname,\long} +\DoNotIndex{\let,\lineskip,\marginparsep,\marginparwidth,\maxdimen} +\DoNotIndex{\makeatletter,\noexpand,\openout,\protect,\rlap} +\DoNotIndex{\min,\newpage,\nobreak,\normalbaselineskip} +\DoNotIndex{\normallineskip,\p@,\par,\parfillskip,\parindent,\parskip} +\DoNotIndex{\penalty,\relax,\section,\sin,\sloppy,\space,\string} +\DoNotIndex{\tableofcontents,\the,\thepage,\thispagestyle,\toks,\tt} +\DoNotIndex{\twocolumn,\uppercase,\vbox,\vrule,\vskip,\vss} +\DoNotIndex{\write,\z@,\z@skip} +\endinput +%% +%% End of file `amsdtx.cls'. diff --git a/Master/texmf-dist/source/latex/amsmath/amsgen.dtx b/Master/texmf-dist/source/latex/amsmath/amsgen.dtx new file mode 100644 index 00000000000..dddaadd9af8 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsgen.dtx @@ -0,0 +1,396 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsgen.dtx", +%%% version = "2.0", +%%% date = "1999/11/30", +%%% time = "12:33:33 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "07569 396 1613 14368", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, amslatex, ams-latex", +%%% supported = "yes", +%%% abstract = "This is part of the AMS-\LaTeX{} distribution. +%%% It contains some general internal macros shared +%%% by several different files in AMS-\LaTeX{}.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% \iffalse +%<*driver> +\documentclass{amsdtx} +\begin{document} +\title{The \pkg{amsgen} package} +\author{American Mathematical Society\\Michael Downes} +\date{Version \fileversion, \filedate} +\hDocInput{amsgen.dtx} +\end{document} +%</driver> +% \fi +% +% \maketitle +% +% \MakeShortVerb\| +% +% \section{Introduction} +% This is an internal package for storing common functions +% that are shared by more than one package in the \amslatex/ +% distribution. Some of these might eventually make it into the \latex/ +% kernel. +% +% \StopEventually{} +% +% Standard package info. +% Using \cs{ProvidesFile} rather than \cs{ProvidesPackage} because +% the latter, when input by, e.g, \cls{amsbook}, results in +% \texttt{LaTeX warning: You have requested document class `amsbook', +% but the document class provides `amsgen'.} +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesFile{amsgen.sty}[1999/11/30 v2.0] +% \end{macrocode} +% +% \section{Implementation} +% Some general macros shared by \fn{amsart.dtx}, \fn{amsmath.dtx}, +% \fn{amsfonts.dtx}, \dots +% +% \begin{macro}{\@saveprimitive} +% The \pkg{amsmath} package redefines a number of \tex/ primitives. +% In case some preceding package also decided to redefine one of +% those same primitives, we had better do some checking to make +% sure that we are able to save the primitive meaning for internal +% use. This is handled by the \cs{@saveprimitive} function. We +% follow the example of \cs{@@input} where the primitive meaning is +% stored in an internal control sequence with a |@@| prefix. +% Primitive control sequences can be distinguished by the fact that +% \cs{string} and \cs{meaning} return the same information. +% \begin{macrocode} +\providecommand{\@saveprimitive}[2]{\begingroup\escapechar`\\\relax + \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}% + \ifx\@tempa\@tempb \global\let#2#1% + \else +% \end{macrocode} +% Check to see if \arg{2} was already given the desired primitive +% meaning somewhere else. +% \begin{macrocode} + \edef\@tempb{\meaning#2}% + \ifx\@tempa\@tempb + \else + \@latex@error{Unable to properly define \string#2; primitive + \noexpand#1no longer primitive}\@eha + \fi + \fi + \endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@xp} +% \begin{macro}{\@nx} +% Shorthands for long command names. +% \begin{macrocode} +\let\@xp=\expandafter +\let\@nx=\noexpand +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@emptytoks} +% A token register companion for \cs{@empty}. Saves a little main mem and +% probably makes initializations such as |\toks@{}| run faster too. +% \begin{macrocode} +\newtoks\@emptytoks +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@oparg} +% Use of \cs{@oparg} simplifies some constructions where a macro +% takes an optional argument in square brackets. We can't use +% \cn{newcommand} here because this function might be previously +% defined by the \pkg{amsmath} package in a loading sequence such as +% \begin{verbatim} +% \usepackage{amsmath,amsthm} +% \end{verbatim} +% \begin{macrocode} +\def\@oparg#1[#2]{\@ifnextchar[{#1}{#1[#2]}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ifempty} +% \begin{macro}{\@ifnotempty} +% |\@ifnotempty| and |\@ifempty| use category 11 |@| characters to +% test whether the argument is empty or not, since these are highly +% unlikely to occur in the argument. As with \cn{@oparg}, there is a +% possibility that these commands were defined previously in +% \fn{amsmath.sty}. +% \begin{macrocode} +\long\def\@ifempty#1{\@xifempty#1@@..\@nil} +\long\def\@xifempty#1#2@#3#4#5\@nil{% + \ifx#3#4\@xp\@firstoftwo\else\@xp\@secondoftwo\fi} +% \end{macrocode} +% \cs{@ifnotempty} is a shorthand that makes code read better when +% no action is needed in the empty case. At a cost of double +% argument-reading---so for often-executed code, avoiding +% \cs{@ifnotempty} might be wise. +% \begin{macrocode} +\long\def\@ifnotempty#1{\@ifempty{#1}{}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Some abbreviations to conserve token mem. +% \begin{macrocode} +\def\FN@{\futurelet\@let@token} +\def\DN@{\def\next@} +\def\RIfM@{\relax\ifmmode} +\def\setboxz@h{\setbox\z@\hbox} +\def\wdz@{\wd\z@} +\def\boxz@{\box\z@} +\def\relaxnext@{\let\@let@token\relax} +% \end{macrocode} +% +% \begin{macro}{\new@ifnextchar} +% This macro is a new version of \latex/'s \verb+\@ifnextchar+, +% macro that does not skip over spaces. +% \begin{macrocode} +\long\def\new@ifnextchar#1#2#3{% +% \end{macrocode} +% By including the space after the equals sign, we make it possible +% for \cs{new@ifnextchar} to do look-ahead for any token, including a +% space! +% \begin{macrocode} + \let\reserved@d= #1% + \def\reserved@a{#2}\def\reserved@b{#3}% + \futurelet\@let@token\new@ifnch +} +% +\def\new@ifnch{% + \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi + \reserved@b +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ifstar} +% There will essentially never be a space before the \qc{\*}, so +% using \cs{@ifnextchar} is unnecessarily slow. +% \begin{macrocode} +\def\@ifstar#1#2{\new@ifnextchar *{\def\reserved@a*{#1}\reserved@a}{#2}} +% \end{macrocode} +% \end{macro} +% +% The hook \cs{every@size} was changed to \cs{every@math@size} in the +% December 1994 release of \latex/ and its calling procedures changed. +% If \cs{every@math@size} is undefined it means the user has an older +% version of \latex/ so we had better define it and patch a couple of +% functions (\cs{glb@settings} and \cs{set@fontsize}). +% \begin{macrocode} +\@ifundefined{every@math@size}{% +% \end{macrocode} +% Reuse the same token register; since it was never used except for +% the purposes that are affected below, this is OK. +% \begin{macrocode} +\let\every@math@size=\every@size +\def\glb@settings{% + \expandafter\ifx\csname S@\f@size\endcsname\relax + \calculate@math@sizes + \fi + \csname S@\f@size\endcsname + \ifmath@fonts +% \ifnum \tracingfonts>\tw@ +% \@font@info{Setting up math fonts for +% \f@size/\f@baselineskip}\fi + \begingroup + \escapechar\m@ne + \csname mv@\math@version \endcsname + \globaldefs\@ne + \let \glb@currsize \f@size + \math@fonts + \endgroup + \the\every@math@size + \else +% \ifnum \tracingfonts>\tw@ +% \@font@info{No math setup for \f@size/\f@baselineskip}% +% \fi + \fi +} +% \end{macrocode} +% Remove |\the\every@size| from \cs{size@update}. +% \begin{macrocode} +\def\set@fontsize#1#2#3{% + \@defaultunits\@tempdimb#2pt\relax\@nnil + \edef\f@size{\strip@pt\@tempdimb}% + \@defaultunits\@tempskipa#3pt\relax\@nnil + \edef\f@baselineskip{\the\@tempskipa}% + \edef\f@linespread{#1}% + \let\baselinestretch\f@linespread + \def\size@update{% + \baselineskip\f@baselineskip\relax + \baselineskip\f@linespread\baselineskip + \normalbaselineskip\baselineskip + \setbox\strutbox\hbox{% + \vrule\@height.7\baselineskip + \@depth.3\baselineskip + \@width\z@}% +%%% \the\every@size + \let\size@update\relax}% + } +}{}% end \@ifundefined test +% \end{macrocode} +% +% \begin{macro}{\ex@} +% The \cs{ex@} variable provides a small unit of space for use in +% math-mode constructions, that varies according to the current type +% size. For example, the \cn{pmb} command uses \cs{ex@} units. +% Since a macro or mu unit solution for the \meta{dimen} \cs{ex@} won't +% work without changing a lot of current code in the \pkg{amsmath} +% package, we set \cs{ex@} through the \cs{every@math@size} hook. +% The value of \cs{ex@} is scaled nonlinearly in a range of roughly +% 0.5pt to 1.5pt, by the function \cs{compute@ex@}. +% \begin{macrocode} +\newdimen\ex@ +\addto@hook\every@math@size{\compute@ex@} +% \end{macrocode} +% \end{macro} +% +% \cs{compute@ex@} computes \cs{ex@} as a nonlinear scaling from 10pt +% to current font size (\cs{f@size}). Using .97 as the multiplier makes 1 +% |ex@| $\approx$ .9pt when the current type size is 8pt and 1 |ex@| +% $\approx$ 1.1pt when the current type size is 12pt. +% +% The formula is essentially +% \begin{displaymath} +% \newcommand{\points}{\mbox{pt}} +% \newcommand{\floor}[1]{\lfloor#1\rfloor} +% 1\points \pm (1\points - (.97)^{\floor{\vert 10 - n\vert}}) +% \end{displaymath} +% where $n$ = current type size, but adjusted to differentiate +% half-point sizes as well as whole point sizes, and there is a +% cutoff for extraordinarily large values of \cs{f@size} ($>$ 20pt) +% so that the value of \cs{ex@} never exceeds 1.5pt. +% +% \begin{macrocode} +\def\compute@ex@{% + \begingroup + \dimen@-\f@size\p@ + \ifdim\dimen@<-20\p@ +% \end{macrocode} +% Never make \cs{ex@} larger than 1.5pt. +% \begin{macrocode} + \global\ex@ 1.5\p@ + \else +% \end{macrocode} +% Adjust by the reference size and multiply by 2 to allow for +% half-point sizes. +% \begin{macrocode} + \advance\dimen@10\p@ \multiply\dimen@\tw@ +% \end{macrocode} +% Save information about the current sign of \cs{dimen@}. +% \begin{macrocode} + \edef\@tempa{\ifdim\dimen@>\z@ -\fi}% +% \end{macrocode} +% Get the absolute value of \cs{dimen@}. +% \begin{macrocode} + \dimen@ \ifdim\dimen@<\z@ -\fi \dimen@ + \advance\dimen@-\@m sp % fudge factor +% \end{macrocode} +% Here we use \cs{vfuzz} merely as a convenient scratch register +% \begin{macrocode} + \vfuzz\p@ +% \end{macrocode} +% Multiply in a loop. +% \begin{macrocode} + \def\do{\ifdim\dimen@>\z@ + \vfuzz=.97\vfuzz + \advance\dimen@ -\p@ +%\message{\vfuzz: \the\vfuzz, \dimen@: \the\dimen@}% + \@xp\do \fi}% + \do + \dimen@\p@ \advance\dimen@-\vfuzz + \global\ex@\p@ + \global\advance\ex@ \@tempa\dimen@ + \fi + \endgroup +%\typeout{\string\f@size: \f@size}\showthe\ex@ +} +% \end{macrocode} +% Tests of the \cs{compute@ex@} function yield the following results: +% +% \begin{center}\begin{tabular}{rlrl} +% \cs{f@size}& \cs{ex@}& \cs{f@size}& \cs{ex@}\\ +% 10& 1.0pt& 9& 0.94089pt\\ +% 11& 1.05911pt& 8.7& 0.91266pt\\ +% 12& 1.11473pt& 8.5& 0.91266pt\\ +% 14.4& 1.23982pt& 8.4& 0.88527pt\\ +% 17.28& 1.36684pt& 8& 0.88527pt\\ +% 20.74& 1.5pt& 7& 0.83293pt\\ +% 19.5& 1.4395pt& 6& 0.78369pt\\ +% && 5& 0.73737pt\\ +% && 1& 0.57785pt +% \end{tabular}\end{center} +% +% \begin{macro}{\@addpunct} +% Use of the \cs{@addpunct} function allows ending punctuation in +% section headings and elsewhere to be intelligently omitted +% when punctuation is already present. +% \begin{macrocode} +\def\@addpunct#1{\ifnum\spacefactor>\@m \else#1\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frenchspacing} +% Change \cn{frenchspacing} to ensure that \cs{@addpunct} will +% continue to work properly even when `french' spacing is in effect. +% \begin{macrocode} +\def\frenchspacing{\sfcode`\.1006\sfcode`\?1005\sfcode`\!1004% + \sfcode`\:1003\sfcode`\;1002\sfcode`\,1001 } +% \end{macrocode} +% \end{macro} +% +% \subsection{Miscellaneous} +% \begin{macrocode} +\def\nomath@env{\@amsmath@err{% + \string\begin{\@currenvir} allowed only in paragraph mode% +}\@ehb% "You've lost some text" +} +% \end{macrocode} +% A trade-off between main memory space and hash size; using +% \verb+\Invalid@@+ saves 14 bytes of main memory for each use of +% \verb+\Invalid@+, at the cost of one control sequence name. +% \verb+\Invalid@+ is currently used about five times and +% \verb+\Invalid@@+ is used by itself in some other instances, +% which means that it saves us more memory than \verb+\FN@+, +% \verb+\RIfM@+, and some of the other abbreviations above. +% \begin{macrocode} +\def\Invalid@@{Invalid use of \string} +% \end{macrocode} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \CheckSum{337} +% \Finale diff --git a/Master/texmf-dist/source/latex/amsmath/amsldoc.cls b/Master/texmf-dist/source/latex/amsmath/amsldoc.cls new file mode 100644 index 00000000000..0e8d142cbf9 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsldoc.cls @@ -0,0 +1,451 @@ +%% +%% This is file `amsldoc.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amsdtx.dtx (with options: `amsldoc') +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsdtx.dtx", +%%% version = "2.06", +%%% date = "2004/08/06", +%%% time = "12:18:49 EDT", +%%% checksum = "19929 1192 3506 39423", +%%% author = "Michael J. Downes, updated by David M. Jones", +%%% copyright = "Copyright 1996, 1999, 2004 +%%% American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Publications Technical Group, +%%% 201 Charles Street, +%%% Providence, RI 02904, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, amslatex, ams-latex, user documentation", +%%% supported = "yes", +%%% abstract = "This is the source for two document classes, amsdtx +%%% and amsldoc, used to produce AMS user documentation +%%% or technical documentation.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1995/06/01]% LaTeX date must be June 1995 or later +\ProvidesClass{amsldoc}[2004/08/06 v2.06] +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} +\ProcessOptions +\LoadClass{book} +\IfFileExists{url.sty}{% + \RequirePackage{url}\relax + \@gobble +}{% + \@firstofone +} +{ + \DeclareRobustCommand{\url}[1]{% + \def\@tempa{#1}% + \texttt{\urlsetup $\expandafter\strip@prefix\meaning\@tempa$}% + }% + \def\urlsetup{% + \check@mathfonts \textfont\@ne\the\font \textfont\z@\the\font + \urlfix +\urlfix\=\urlfix\:\urlfix\-\urlfix\.\urlfix\,\urlfix\;% + \urlbreak\&\urlbreak\/\urlbreak\?% + }% + \def\urlbreak#1{% + \mathcode`#1="8000 + \begingroup \lccode`\~=`#1 \lowercase{\endgroup \edef~}% + {\mathchar\number`#1\penalty\hyphenpenalty}% + }% + \def\urlfix#1{% + \mathcode`#1=`#1\relax + }% +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\providecommand{\qq}[1]{\textquotedblleft#1\/\textquotedblright} +\providecommand{\mdash}{\textemdash\penalty\exhyphenpenalty} +\providecommand{\ndash}{\textendash\penalty\exhyphenpenalty} +\let\@xp\expandafter +\def\actualchar{@} +\def\quotechar{"} +\def\levelchar{!} +\def\encapchar{|} +\def\verbatimchar{+} +\newif\ifcodeline@index +\newcommand*{\autoindex}[1]{% + \index{#1\ifcodeline@index\encapchar usage\fi}% +} +\newcommand{\ntt}{\normalfont\ttfamily} +\newcommand*{\indexcs}[1]{% + \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil +} +\def\@indexcs#1\@nil{% + \autoindex{#1\actualchar + \string\verb\quotechar*\verbatimchar + \@xp\@bothoftwo\string\ #1\@empty + \verbatimchar + }% +} +\def\@bothoftwo#1#2{#1#2} +\def\category@index#1#2{% + {\ntt#2}% + \@category@index{#1}{#2}% +} +\def\@category@index#1#2{% + \autoindex{% + #2\actualchar\string\texttt{#2}% + \ifx\@nil#1\@nil\else\space#1\fi + }% +} +\chardef\bslchar=`\\ % p. 424, TeXbook +\newcommand{\addbslash}{\expandafter\@addbslash\string} +\def\@addbslash#1{\bslchar\@nobslash#1} +\newcommand{\nobslash}{\expandafter\@nobslash\string} +\def\@nobslash#1{\ifnum`#1=\bslchar\else#1\fi} +\def\@boxorbreak{% + \leavevmode + \ifmmode\hbox\else\ifdim\lastskip=\z@\penalty9999 \fi\fi +} +\DeclareRobustCommand{\cs}[1]{% + \@boxorbreak{% + \ntt + \addbslash#1\@empty + \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil + }% +} +\let\cn\cs +\DeclareRobustCommand{\cls}{\category@index{class}} +\DeclareRobustCommand{\pkg}{\category@index{package}} +\DeclareRobustCommand{\opt}{\category@index{option}} +\DeclareRobustCommand{\env}{\category@index{environment}} +\DeclareRobustCommand{\fn}{\category@index{}} +\DeclareRobustCommand{\bst}{\category@index{\string\BibTeX{} style}} +\DeclareRobustCommand{\cnt}{\category@index{counter}} +\DeclareRobustCommand{\fnt}{\category@index{font}} +\def\allowtthyphens{\begingroup + \fontencoding{OT1}\fontfamily{cmtt}% + \expandafter\let\csname OT1+cmtt\endcsname\relax + \try@load@fontshape + \endgroup + \expandafter\let\csname OT1+cmtt\endcsname\@empty +} +\hfuzz2pc +\vbadness9999 \hbadness5000 +\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}% + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +\def\latex/{{\protect\LaTeX}} +\def\amslatex/{{\protect\AmS-\protect\LaTeX}} +\def\tex/{{\protect\TeX}} +\def\amstex/{{\protect\AmS-\protect\TeX}} +\def\bibtex/{{Bib\protect\TeX}} +\def\makeindx/{MakeIndex} +\def\xypic/{XY\mbox{-}pic} +\newcommand{\Textures}{\textit{Textures}} +\def\<#1>{\textit{$\langle$#1\/$\rangle$}} +\def\@listi{% + \leftmargin\leftmargini + \topsep 3\p@ \@plus2\p@ \@minus\p@ + \parsep \p@ \@plus\p@ \itemsep\parsep +} +\let\@listI\@listi +\@listi +\def\@listii{% + \leftmargin\leftmarginii + \labelwidth\leftmarginii \advance\labelwidth-\labelsep + \topsep\p@\@plus\p@ \@minus\p@ + \parsep\z@skip \itemsep\z@skip +} +\def\@listiii{% + \leftmargin\leftmarginiii + \labelwidth\leftmarginiii \advance\labelwidth-\labelsep + \topsep\z@skip \parsep\z@skip \itemsep\z@skip +} +\newenvironment{histnote}{% + \trivlist\item[\hspace{\labelsep}\bfseries Historical Note:]% +}{% + \endtrivlist +} +\def\@starttoc#1{\begingroup + \let\autoindex\@gobble + \makeatletter + \@input{\jobname.#1}\if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout + \csname tf@#1\endcsname \jobname.#1\relax + \fi \global\@nobreakfalse \endgroup} +\newcommand{\gloss}[1]{} +\newcommand*{\secref}[1]{\S\ref{#1}} +\newcommand{\qc}[1]{}% check for prior definition +\edef\qc#1{\noexpand\protect\expandafter\noexpand\csname qc \endcsname + \noexpand\protect#1} +\@namedef{qc }#1#2{\begingroup\ntt + \ifx\ #2\char`\ \else\escapechar\m@ne\string#2\fi\endgroup} +\DeclareRobustCommand{\qcat}{\qc\@}% +\DeclareRobustCommand{\qcamp}{\qc\&}% +\DeclareRobustCommand{\qcbang}{\qc\!}% +\DeclareRobustCommand{\arg}[1]{{\ntt\##1}} +\newcommand{\openbox}{\leavevmode + \hbox to.77778em{% + \hfil\vrule + \vbox to.675em{\hrule width.6em\vfil\hrule}% + \vrule\hfil}} +\newcommand{\qedsymbol}{\openbox} +\def\mail{\texttt} +\def\*#1{\def\@tempa{#1}\def\@tempb{*}% + \ifx\@tempa\@tempb \expandafter\index + \else #1\index{#1}\fi} +\def\ncn#1{{\let\index\@gobble\cn{#1}}} + +\DeclareRobustCommand{\cnbang}{% + \ncn{\!}\index{"!@{\ntt\bslchar\qcbang}}} +\DeclareRobustCommand{\cnat}{% + \ncn{\!}\index{"@@{\ntt\bslchar\qcat}}} +\def\5{\penalty500 } +\newenvironment{error}{% + \begingroup\catcode`\\=12 \expandafter\endgroup\errora +}{% + \endtrivlist +} +\newcommand{\errora}[1]{% + \trivlist + \item[\hskip\labelsep\errorbullet\enspace + \ntt\frenchspacing\def\@tempa{#1}% + \expandafter\strip@prefix\meaning\@tempa]\leavevmode\par +} +\newcommand{\errorbullet}{\rule[-.5pt]{2.5pt}{7.5pt}% + \rule[-.5pt]{5pt}{2.5pt}\kern-2.5pt% + \rule[4.5pt]{2.5pt}{2.5pt}} +\newcommand{\errexa}{\par\noindent\textit{Example}:\ } +\newcommand{\errexpl}{\par\noindent\textit{Explanation}:\ } +\renewcommand\frontmatter{\clearpage + \@mainmatterfalse\pagenumbering{roman}} +\renewcommand\mainmatter{\clearpage + \@mainmattertrue\pagenumbering{arabic}} +\renewcommand\backmatter{\clearpage \@mainmatterfalse} +\renewcommand\part{\clearpage + \thispagestyle{plain}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \hbox{}\vfil + \secdef\@part\@spart} +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \reset@font + \ifnum \c@secnumdepth >-2\relax + \Large\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Large \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \reset@font + \Large \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \hbox{}% + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} +\renewcommand\chapter{\par \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}\fi + \else + \addcontentsline{toc}{chapter}{#1} + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% + \vspace{1.5\baselineskip}% + {\parindent \z@ \raggedright \reset@font + \ifnum \c@secnumdepth >\m@ne + \large\bfseries \@chapapp\space\thechapter + \par\nobreak + \vskip.5\baselineskip\relax + \fi + #1\par\nobreak + \vskip\baselineskip + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% + \vspace*{1.5\baselineskip}% + {\parindent \z@ \raggedright + \reset@font + \large \bfseries #1\par\nobreak + \vskip\baselineskip + }} +\def\@removefromreset#1#2{\let\@tempb\@elt + \expandafter\let\expandafter\@tempa\csname c@#1\endcsname + \def\@elt##1{\expandafter\ifx\csname c@##1\endcsname\@tempa\else + \noexpand\@elt{##1}\fi}% + \expandafter\edef\csname cl@#2\endcsname{\csname cl@#2\endcsname}% + \let\@elt\@tempb} +\@removefromreset{footnote}{chapter} +\def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil{\footnotesize\leftmark{}{}}}% + \def\@oddhead{{\footnotesize\rightmark{}{}}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \@chapapp\ \thechapter. \ \fi + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\uppercase{\ifnum \c@secnumdepth >\z@ + \thesection. \ \fi + ##1}}}} +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-.6\baselineskip \@plus -3\p@}% + {.4\baselineskip} + {\reset@font\normalsize\bfseries}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-.3\baselineskip\@plus -2\p@}% + {.2\baselineskip}% + {\reset@font\normalsize\bfseries}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-.2\baselineskip\@plus -2\p@}% + {.2\baselineskip}% + {\reset@font\normalsize\bfseries}} +\renewenvironment{theindex}{% + \if@twocolumn \@restonecolfalse \else \@restonecoltrue \fi + \columnseprule \z@ \columnsep 35\p@ + \let\autoindex\@gobble + \twocolumn[\@makeschapterhead{\indexname}]% + \addcontentsline{toc}{chapter}{\indexname}% + \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}% + \thispagestyle{plain}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem +}{% + \if@restonecol\onecolumn\else\clearpage\fi +} +\long\def\@makecaption#1#2{% + \addvspace\abovecaptionskip + \begingroup + \countdef\@parcycles=8 % local count register + \@parcycles\z@ + \@setpar{\advance\@parcycles\@ne \ifnum\@parcycles>999 + \@@par\@parcycles\z@\fi + \ifhmode \unskip\hskip\parfillskip\penalty-\@M\fi}% + \@hangfrom{\textbf{#1.} }\vadjust{\penalty\m@ne}#2% + \endgroup + \ifhmode\unpenalty\fi\par + \ifnum\lastpenalty=\m@ne % only one line in the caption + \unpenalty \setbox\@tempboxa\lastbox + \nointerlineskip + \hbox to\hsize{\hfill\unhbox\@tempboxa\unskip\hfill}% + \fi + \nobreak\vskip\belowcaptionskip +} +\renewenvironment{table}{% + \belowcaptionskip\abovecaptionskip \abovecaptionskip\z@skip + \@float{table}% +}{% + \end@float +} +\renewenvironment{table*}{% + \belowcaptionskip\abovecaptionskip \abovecaptionskip\z@skip + \@dblfloat{table}% +}{% + \end@dblfloat +} +\setcounter{topnumber}{4}\setcounter{bottomnumber}{4} +\setcounter{totalnumber}{4}\setcounter{dbltopnumber}{4} +\renewcommand{\topfraction}{.97}\renewcommand{\bottomfraction}{.97} +\renewcommand{\textfraction}{.03}\renewcommand{\floatpagefraction}{.9} +\renewcommand{\dbltopfraction}{.97} +\renewcommand{\dblfloatpagefraction}{.9} +\setlength{\floatsep}{8pt plus6pt} +\setlength{\textfloatsep}{10pt plus8pt} +\setlength{\intextsep}{8pt plus6pt} +\setlength{\dblfloatsep}{8pt plus6pt} +\setlength{\dbltextfloatsep}{10pt plus8pt} +\setlength{\@fptop}{0pt}\setlength{\@fpsep}{8pt}% +\setlength{\@fpbot}{0pt plus 1fil} +\setlength{\@dblfptop}{0pt}\setlength{\@dblfpsep}{8pt}% +\setlength{\@dblfpbot}{0pt plus 1fil} + +\pagestyle{headings} +\AtBeginDocument{\catcode`\|=\active } +\def\activevert{\verb|} +\expandafter\gdef\expandafter\dospecials\expandafter + {\dospecials \do\|}% +\expandafter\gdef\expandafter\@sanitize\expandafter + {\@sanitize \@makeother\|} +\begingroup\catcode`\|=\active \gdef|{\protect\activevert{}}\endgroup +\newcommand{\arrayargpatch}{% + \let\@oldarray\@array + \edef\@array[##1]##2{\catcode\number`\|=\number\catcode`\| + \catcode\number`\@=\number\catcode`\@ \relax + \let\noexpand\@array\noexpand\@oldarray + \noexpand\@array[##1]{##2}}% + \catcode`\|=12 \catcode`\@=12 \relax +} +\newenvironment{ctab}{% + \par\topsep\medskipamount + \trivlist\centering + \item[]% + \arrayargpatch + \begin{tabular}% +}{% + \end{tabular}% + \endtrivlist +} +\endinput +%% +%% End of file `amsldoc.cls'. diff --git a/Master/texmf-dist/source/latex/amsmath/amsldoc.tex b/Master/texmf-dist/source/latex/amsmath/amsldoc.tex new file mode 100644 index 00000000000..abb532cccb8 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsldoc.tex @@ -0,0 +1,2620 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsldoc.tex", +%%% version = "2.09", +%%% date = "2004/04/06", +%%% time = "15:13:33 EDT", +%%% checksum = "39446 2620 11111 93831", +%%% author = "American Mathematical Society", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% copyright = "Copyright 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% supported = "yes", +%%% keywords = "latex, amsmath", +%%% abstract = "This file is the source file for the user's +%%% guide of the \LaTeX{} package amsmath .", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\documentclass[leqno,titlepage,openany]{amsldoc}[1999/12/13] + +\ifx\UndEfiNed\url + \ClassError{amsldoc}{% + This version of amsldoc.tex must be processed\MessageBreak + with a newer version of amsldoc.cls (2.02 or later)}{} +\fi + +\title{User's Guide for the \pkg{amsmath} Package (Version~2.0)} +\author{American Mathematical Society} +\date{1999-12-13 (revised 2002-02-25)} + +% Use the amsmath package and amscd package in order to print +% examples. +\usepackage{amsmath} +\usepackage{amscd} + +\makeindex % generate index data +\providecommand{\see}[2]{\textit{see} #1} + +% The amsldoc class includes a number of features useful for +% documentation about TeX, including: +% +% ---Commands \tex/, \amstex/, \latex/, ... for uniform treatment +% of the various logos and easy handling of following spaces. +% +% ---Commands for printing various common elements: \cn for command +% names, \fn for file names (including font-file names), \env for +% environments, \pkg and \cls for packages and classes, etc. + +% Many of the command names used here are rather long and will +% contribute to poor linebreaking if we follow the \latex/ practice +% of not hyphenating anything set in tt font; instead we selectively +% allow some hyphenation. +\allowtthyphens % defined in amsldoc.cls + +\hyphenation{ac-cent-ed-sym-bol add-to-counter add-to-length align-at + aligned-at allow-dis-play-breaks ams-art ams-cd ams-la-tex amsl-doc + ams-symb ams-tex ams-text ams-xtra bmatrix bold-sym-bol cen-ter-tags + eqn-ar-ray idots-int int-lim-its latex med-space neg-med-space + neg-thick-space neg-thin-space no-int-lim-its no-name-lim-its + over-left-arrow over-left-right-arrow over-right-arrow pmatrix + qed-sym-bol set-length side-set small-er tbinom the-equa-tion + thick-space thin-space un-der-left-arrow un-der-left-right-arrow + un-der-right-arrow use-pack-age var-inj-lim var-proj-lim vmatrix + xalign-at xx-align-at} + +% Prepare for illustrating the \vec example +\newcommand{\vect}[1]{\mathbf{#1}} + +\newcommand{\booktitle}[1]{\textit{#1}} +\newcommand{\journalname}[1]{\textit{#1}} +\newcommand{\seriesname}[1]{\textit{#1}} + +% Command to insert and index a particular phrase. Doesn't work for +% certain kinds of special characters in the argument. +\newcommand{\ii}[1]{#1\index{#1}} + +\newcommand{\vstrut}[1]{\vrule width0pt height#1\relax} + +% An environment for presenting comprehensive address information: +\newenvironment{infoaddress}{% + \par\topsep\medskipamount + \trivlist\centering + \item[]% + \begin{minipage}{.7\columnwidth}% + \raggedright +}{% + \end{minipage}% + \endtrivlist +} + +\newenvironment{eqxample}{% + \par\addvspace\medskipamount + \noindent\begin{minipage}{.5\columnwidth}% + \def\producing{\end{minipage}\begin{minipage}{.5\columnwidth}% + \hbox\bgroup\kern-.2pt\vrule width.2pt% + \vbox\bgroup\parindent0pt\relax +% The 3pt is to cancel the -\lineskip from \displ@y + \abovedisplayskip3pt \abovedisplayshortskip\abovedisplayskip + \belowdisplayskip0pt \belowdisplayshortskip\belowdisplayskip + \noindent} +}{% + \par +% Ensure that a lonely \[\] structure doesn't take up width less than +% \hsize. + \hrule height0pt width\hsize + \egroup\vrule width.2pt\kern-.2pt\egroup + \end{minipage}% + \par\addvspace\medskipamount +} + +% The chapters are so short, perhaps we shouldn't call them by the +% name `Chapter'. We make \chaptername read an argument in order to +% remove a following \space or "{} " (both possibilities are present +% in book.cls). + +\renewcommand{\chaptername}[1]{} +\newcommand{\chapnum}[1]{\mdash #1\mdash } +\makeatletter +\def\@makechapterhead#1{% + \vspace{1.5\baselineskip}% + {\parindent \z@ \raggedright \reset@font + \ifnum \c@secnumdepth >\m@ne + \large\bfseries \chapnum{\thechapter}% + \par\nobreak + \vskip.5\baselineskip\relax + \fi + #1\par\nobreak + \vskip\baselineskip + }} +\makeatother + +% A command for ragged-right parbox in a tabular. +\newcommand{\rp}{\let\PBS\\\raggedright\let\\\PBS} + +% Non-indexed file name +\newcommand{\nfn}[1]{\texttt{#1}} + +% For the examples in the math spacing table. +%%\newcommand{\lspx}{\mbox{\rule{5pt}{.6pt}\rule{.6pt}{6pt}}} +%%\newcommand{\rspx}{\mbox{\rule[-1pt]{.6pt}{7pt}% +%% \rule[-1pt]{5pt}{.6pt}}} +\newcommand{\lspx}{\mathord{\Rightarrow\mkern-1mu}} +\newcommand{\rspx}{\mathord{\mkern-1mu\Leftarrow}} +\newcommand{\spx}[1]{$\lspx #1\rspx$} + +% For a list of characters representing document input. +\newcommand{\clist}[1]{% + \mbox{\ntt\spaceskip.2em plus.1em \xspaceskip\spaceskip#1}} + +% Fix weird \latex/ definition of rightmark. +\makeatletter +\def\rightmark{\expandafter\@rightmark\botmark{}{}} +% Also turn off section marks. +\let\sectionmark\@gobble +\renewcommand{\chaptermark}[1]{% + \uppercase{\markboth{\rhcn#1}{\rhcn#1}}} +\newcommand{\rhcn}{\thechapter. } +\makeatother + +% Include down to \section but not \subsection, in toc: +\setcounter{tocdepth}{1} + +\DeclareMathOperator{\ix}{ix} +\DeclareMathOperator{\nul}{nul} +\DeclareMathOperator{\End}{End} +\DeclareMathOperator{\xxx}{xxx} + +\begin{document} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\frontmatter + +\maketitle +\pagestyle{headings} +\tableofcontents +\cleardoublepage % for better page number placement + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\mainmatter +\chapter{Introduction} + +The \pkg{amsmath} package is a \LaTeX{} package that provides +miscellaneous enhancements for improving the information structure and +printed output of documents that contain mathematical formulas. Readers +unfamiliar with \LaTeX{} should refer to \cite{lamport}. If you have an +up-to-date version of \LaTeX{}, the \pkg{amsmath} package is normally +provided along with it. Upgrading when a newer version of the +\pkg{amsmath} package is released can be done via +\url{http://www.ams.org/tex/amsmath.html} or +\url{ftp://ftp.ams.org/pub/tex/}. + +This documentation describes the features of the \pkg{amsmath} package +and discusses how they are intended to be used. It also covers some +ancillary packages: +\begin{ctab}{ll} +\pkg{amsbsy}& \pkg{amstext}\\ +\pkg{amscd}& \pkg{amsxtra}\\ +\pkg{amsopn} +\end{ctab} +These all have something to do with the contents of math formulas. For +information on extra math symbols and math fonts, see \cite{amsfonts} +and \url{http://www.ams.org/tex/amsfonts.html}. For documentation of the +\pkg{amsthm} package or AMS document classes (\cls{amsart}, +\cls{amsbook}, etc.\@) see \cite{amsthdoc} or \cite{instr-l} and +\url{http://www.ams.org/tex/author-info.html}. + +If you are a long-time \latex/ user and have lots of mathematics in what +you write, then you may recognize solutions for some familiar problems +in this list of \pkg{amsmath} features: +\begin{itemize} + +\item A convenient way to define new `operator name' commands analogous +to \cn{sin} and \cn{lim}, including proper side spacing and automatic +selection of the correct font style and size (even when used in +sub- or superscripts). + +\item Multiple substitutes for the \env{eqnarray} environment to make +various kinds of equation arrangements easier to write. + +\item Equation numbers automatically adjust up or down to avoid +overprinting on the equation contents (unlike \env{eqnarray}). + +\item Spacing around equals signs matches the normal spacing in the +\env{equation} environment (unlike \env{eqnarray}). + +\item A way to produce multiline subscripts as are often used with +summation or product symbols. + +\item An easy way to substitute a variant equation number for a given +equation instead of the automatically supplied number. + +\item An easy way to produce subordinate equation numbers of the form +(1.3a) (1.3b) (1.3c) for selected groups of equations. + +\end{itemize} + +The \pkg{amsmath} package is distributed together with some small +auxiliary packages: +\begin{description} +\item[\pkg{amsmath}] Primary package, provides various features for + displayed equations and other mathematical constructs. + +\item[\pkg{amstext}] Provides a \cn{text} command for + typesetting a fragment of text inside a display. + +\item[\pkg{amsopn}] Provides \cn{DeclareMathOperator} for defining new + `operator names' like \cn{sin} and \cn{lim}. + +\item[\pkg{amsbsy}] For backward compatibility this package continues +to exist but use of the newer \pkg{bm} package that comes with \LaTeX{} +is recommended instead. + +\item[\pkg{amscd}] Provides a \env{CD} environment for simple + commutative diagrams (no support for diagonal arrows). + +\item[\pkg{amsxtra}] Provides certain odds and ends such as + \cn{fracwithdelims} and \cn{accentedsymbol}, for compatibility with + documents created using version 1.1. + +\end{description} + +The \pkg{amsmath} package incorporates \pkg{amstext}, \pkg{amsopn}, and +\pkg{amsbsy}. The features of \pkg{amscd} and \pkg{amsxtra}, however, +are available only by invoking those packages separately. + +\chapter{Options for the \pkg{amsmath} package}\label{options} + +The \pkg{amsmath} package has the following options: +\begin{description} + +\item[\opt{centertags}] (default) For a split equation, place equation +numbers\index{equation numbers!vertical placement} vertically centered +on the total height of the equation. + +\item[\opt{tbtags}] `Top-or-bottom tags': For a split equation, place +equation numbers\index{equation numbers!vertical placement} level with +the last (resp.\@ first) line, if numbers are on the right (resp.\@ +left). + +\item[\opt{sumlimits}] (default) Place the subscripts and +superscripts\index{subscripts and superscripts!placement}\relax +\index{limits|see{subscripts and superscripts}} of summation symbols +above and below, in displayed equations. This option also affects other +symbols of the same type\mdash $\prod$, $\coprod$, $\bigotimes$, +$\bigoplus$, and so forth\mdash but excluding integrals (see below). + +\item[\opt{nosumlimits}] Always place the subscripts and superscripts of +summation-type symbols to the side, even in displayed equations. + +\item[\opt{intlimits}] Like \opt{sumlimits}, but for +integral\index{integrals!placement of limits} symbols. + +\item[\opt{nointlimits}] (default) Opposite of \opt{intlimits}. + +\item[\opt{namelimits}] (default) Like \opt{sumlimits}, but for certain +`operator names' such as $\det$, $\inf$, $\lim$, $\max$, $\min$, that +traditionally have subscripts \index{subscripts and +superscripts!placement} placed underneath when they occur in a displayed +equation. + +\item[\opt{nonamelimits}] Opposite of \opt{namelimits}. + +\end{description} + +To use one of these package options, put the option name in the optional +argument of the \cn{usepackage} command\mdash e.g., +\verb"\usepackage[intlimits]{amsmath}". + +The \pkg{amsmath} package also recognizes the following options which +are normally selected (implicitly or explicitly) through the +\cn{documentclass} command, and thus need not be repeated in the option +list of the \cn{usepackage}|{amsmath}| statement. +\begin{description} + +\item[\opt{leqno}] Place equation numbers on the left.\index{equation +numbers!left or right placement} + +\item[\opt{reqno}] Place equation numbers on the right. + +\item[\opt{fleqn}] Position equations at a fixed indent from the left +margin rather than centered in the text column.\index{displayed +equations!centering} + +\end{description} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Displayed equations} + +\section{Introduction} +The \pkg{amsmath} package provides a number of additional displayed +equation structures\index{displayed + equations}\index{equations|see{displayed equations}} beyond the ones +provided in basic \latex/. The augmented set includes: +\begin{verbatim} + equation equation* align align* + gather gather* flalign flalign* + multline multline* alignat alignat* + split +\end{verbatim} +(Although the standard \env{eqnarray} environment remains available, +it is better to use \env{align} or \env{equation}+\env{split} instead.) + +Except for \env{split}, each environment has both starred and unstarred +forms, where the unstarred forms have automatic numbering using +\latex/'s \env{equation} counter. You can suppress the number on any +particular line by putting \cn{notag} before the \cn{\\}; you can also +override\index{equation numbers!overriding} it with a tag of your own +using \cn{tag}|{|\<label>|}|, where \<label> means arbitrary text such +as |$*$| or |ii| used to \qq{number} the equation. There is also a +\cn{tag*} command that causes the text you supply to be typeset +literally, without adding parentheses around it. \cn{tag} and \cn{tag*} +can also be used within the unnumbered versions of all the \pkg{amsmath} +alignment structures. Some examples of the use of \cn{tag} may be found +in the sample files \fn{testmath.tex} and \fn{subeqn.tex} provided with +the \pkg{amsmath} package. + +The \env{split} environment is a special subordinate form that is used +only \emph{inside} one of the others. It cannot be used inside +\env{multline}, however. + +In the structures that do alignment (\env{split}, \env{align} and +variants), relation symbols have an \verb'&' before them but not +after\mdash unlike \env{eqnarray}. Putting the \verb'&' after the +relation symbol will interfere with the normal spacing; it has to go +before. + +\begin{table}[p] +\caption[]{Comparison of displayed equation environments (vertical lines +indicating nominal margins)}\label{displays} +\renewcommand{\theequation}{\arabic{equation}} +\begin{eqxample} +\begin{verbatim} +\begin{equation*} +a=b +\end{equation*} +\end{verbatim} +\producing +\begin{equation*} +a=b +\end{equation*} +\end{eqxample} + +\begin{eqxample} +\begin{verbatim} +\begin{equation} +a=b +\end{equation} +\end{verbatim} +\producing +\begin{equation} +a=b +\end{equation} +\end{eqxample} + +\begin{eqxample} +\begin{verbatim} +\begin{equation}\label{xx} +\begin{split} +a& =b+c-d\\ + & \quad +e-f\\ + & =g+h\\ + & =i +\end{split} +\end{equation} +\end{verbatim} +\producing +\begin{equation}\label{xx} +\begin{split} +a& =b+c-d\\ + & \quad +e-f\\ + & =g+h\\ + & =i +\end{split} +\end{equation} +\end{eqxample} + +\begin{eqxample} +\begin{verbatim} +\begin{multline} +a+b+c+d+e+f\\ ++i+j+k+l+m+n +\end{multline} +\end{verbatim} +\producing +\begin{multline} +a+b+c+d+e+f\\ ++i+j+k+l+m+n +\end{multline} +\end{eqxample} + +\begin{eqxample} +\begin{verbatim} +\begin{gather} +a_1=b_1+c_1\\ +a_2=b_2+c_2-d_2+e_2 +\end{gather} +\end{verbatim} +\producing +\begin{gather} +a_1=b_1+c_1\\ +a_2=b_2+c_2-d_2+e_2 +\end{gather} +\end{eqxample} + +\begin{eqxample} +\begin{verbatim} +\begin{align} +a_1& =b_1+c_1\\ +a_2& =b_2+c_2-d_2+e_2 +\end{align} +\end{verbatim} +\producing +\begin{align} +a_1& =b_1+c_1\\ +a_2& =b_2+c_2-d_2+e_2 +\end{align} +\end{eqxample} + +\begin{eqxample} +\begin{verbatim} +\begin{align} +a_{11}& =b_{11}& + a_{12}& =b_{12}\\ +a_{21}& =b_{21}& + a_{22}& =b_{22}+c_{22} +\end{align} +\end{verbatim} +\producing +\begin{align} +a_{11}& =b_{11}& + a_{12}& =b_{12}\\ +a_{21}& =b_{21}& + a_{22}& =b_{22}+c_{22} +\end{align} +\end{eqxample} + +\begin{eqxample} +\begin{verbatim} +\begin{flalign*} +a_{11}& =b_{11}& + a_{12}& =b_{12}\\ +a_{21}& =b_{21}& + a_{22}& =b_{22}+c_{22} +\end{flalign*} +\end{verbatim} +\producing +\begin{flalign*} +a_{11}& =b_{11}& + a_{12}& =b_{12}\\ +a_{21}& =b_{21}& + a_{22}& =b_{22}+c_{22} +\end{flalign*} +\end{eqxample} +\end{table} + +\section{Single equations} + +The \env{equation} environment is for a single equation with an +automatically generated number. The \env{equation*} environment is the +same except for omitting the number.% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\footnote{Basic \latex/ doesn't provide an \env{equation*} environment, +but rather a functionally equivalent environment named +\env{displaymath}.} + +\section{Split equations without alignment} + +The \env{multline} environment is a variation of the \env{equation} +environment used for equations that don't fit on a single line. The +first line of a \env{multline} will be at the left margin and the last +line at the right margin, except for an indention on both sides in the +amount of \cn{multlinegap}. Any additional lines in between will be +centered independently within the display width (unless the \opt{fleqn} +option is in effect). + +Like \env{equation}, \env{multline} has only a single equation number +(thus, none of the individual lines should be marked with \cn{notag}). +The equation number is placed on the last line (\opt{reqno} option) or +first line (\opt{leqno} option); vertical centering as for \env{split} +is not supported by \env{multline}. + +It's possible to force one of the middle lines to the left or right with +commands \cn{shoveleft}, \cn{shoveright}. These commands take the entire +line as an argument, up to but not including the final \cn{\\}; for +example +\begin{multline} +\framebox[.65\columnwidth]{A}\\ +\framebox[.5\columnwidth]{B}\\ +\shoveright{\framebox[.55\columnwidth]{C}}\\ +\framebox[.65\columnwidth]{D} +\end{multline} +\begin{verbatim} +\begin{multline} +\framebox[.65\columnwidth]{A}\\ +\framebox[.5\columnwidth]{B}\\ +\shoveright{\framebox[.55\columnwidth]{C}}\\ +\framebox[.65\columnwidth]{D} +\end{multline} +\end{verbatim} + +The value of \cn{multlinegap} can be changed with the usual \latex/ +commands \cn{setlength} or \cn{addtolength}. + +\section{Split equations with alignment} + +Like \env{multline}, the \env{split} environment is for \emph{single} +equations that are too long to fit on one line and hence must be split +into multiple lines. Unlike \env{multline}, however, the \env{split} +environment provides for alignment among the split lines, using |&| to +mark alignment points. Unlike the other \pkg{amsmath} equation +structures, the \env{split} environment provides no numbering, because +it is intended to be used \emph{only inside some other displayed + equation structure}, usually an \env{equation}, \env{align}, or +\env{gather} environment, which provides the numbering. For example: +\begin{equation}\label{e:barwq}\begin{split} +H_c&=\frac{1}{2n} \sum^n_{l=0}(-1)^{l}(n-{l})^{p-2} +\sum_{l _1+\dots+ l _p=l}\prod^p_{i=1} \binom{n_i}{l _i}\\ +&\quad\cdot[(n-l )-(n_i-l _i)]^{n_i-l _i}\cdot +\Bigl[(n-l )^2-\sum^p_{j=1}(n_i-l _i)^2\Bigr]. +\kern-2em % adjust equation body to the right [mjd,13-Nov-1994] +\end{split}\end{equation} + +\begin{verbatim} +\begin{equation}\label{e:barwq}\begin{split} +H_c&=\frac{1}{2n} \sum^n_{l=0}(-1)^{l}(n-{l})^{p-2} +\sum_{l _1+\dots+ l _p=l}\prod^p_{i=1} \binom{n_i}{l _i}\\ +&\quad\cdot[(n-l )-(n_i-l _i)]^{n_i-l _i}\cdot +\Bigl[(n-l )^2-\sum^p_{j=1}(n_i-l _i)^2\Bigr]. +\end{split}\end{equation} +\end{verbatim} + +The \env{split} structure should constitute the entire body of the +enclosing structure, apart from commands like \cn{label} that produce no +visible material. + +\section{Equation groups without alignment} + +The \env{gather} environment is used for a group of consecutive +equations when there is no alignment desired among them; each one is +centered separately within the text width (see Table~\ref{displays}). +Equations inside \env{gather} are separated by a \cn{\\} command. +Any equation in a \env{gather} may consist of a \verb'\begin{split}' + \dots\ \verb'\end{split}' structure\mdash for example: +\begin{verbatim} +\begin{gather} + first equation\\ + \begin{split} + second & equation\\ + & on two lines + \end{split} + \\ + third equation +\end{gather} +\end{verbatim} + +\section{Equation groups with mutual alignment} + +The \env{align} environment is used for two or more equations when +vertical alignment is desired; usually binary relations such as equal +signs are aligned (see Table~\ref{displays}). + +To have several equation columns side-by-side, use extra ampersands +to separate the columns: +\begin{align} +x&=y & X&=Y & a&=b+c\\ +x'&=y' & X'&=Y' & a'&=b\\ +x+x'&=y+y' & X+X'&=Y+Y' & a'b&=c'b +\end{align} +% +\begin{verbatim} +\begin{align} +x&=y & X&=Y & a&=b+c\\ +x'&=y' & X'&=Y' & a'&=b\\ +x+x'&=y+y' & X+X'&=Y+Y' & a'b&=c'b +\end{align} +\end{verbatim} +Line-by-line annotations on an equation can be done by judicious +application of \cn{text} inside an \env{align} environment: +\begin{align} +x& = y_1-y_2+y_3-y_5+y_8-\dots + && \text{by \eqref{eq:C}}\\ + & = y'\circ y^* && \text{by \eqref{eq:D}}\\ + & = y(0) y' && \text {by Axiom 1.} +\end{align} +% +\begin{verbatim} +\begin{align} +x& = y_1-y_2+y_3-y_5+y_8-\dots + && \text{by \eqref{eq:C}}\\ + & = y'\circ y^* && \text{by \eqref{eq:D}}\\ + & = y(0) y' && \text {by Axiom 1.} +\end{align} +\end{verbatim} +A variant environment \env{alignat} allows the horizontal space between +equations to be explicitly specified. This environment takes one argument, +the number of \qq{equation columns}: count the maximum number of \verb'&'s +in any row, add 1 and divide by 2. +\begin{alignat}{2} +x& = y_1-y_2+y_3-y_5+y_8-\dots + &\quad& \text{by \eqref{eq:C}}\\ + & = y'\circ y^* && \text{by \eqref{eq:D}}\\ + & = y(0) y' && \text {by Axiom 1.} +\end{alignat} +% +\begin{verbatim} +\begin{alignat}{2} +x& = y_1-y_2+y_3-y_5+y_8-\dots + &\quad& \text{by \eqref{eq:C}}\\ + & = y'\circ y^* && \text{by \eqref{eq:D}}\\ + & = y(0) y' && \text {by Axiom 1.} +\end{alignat} +\end{verbatim} + +\section{Alignment building blocks} + +Like \env{equation}, the multi-equation environments \env{gather}, +\env{align}, and \env{alignat} are designed to produce a structure +whose width is the full line width. This means, for example, that one +cannot readily add parentheses around the entire structure. But variants +\env{gathered}, \env{aligned}, and \env{alignedat} are provided whose +total width is the actual width of the contents; thus they can be used +as a component in a containing expression. E.g., +\begin{equation*} +\left.\begin{aligned} + B'&=-\partial\times E,\\ + E'&=\partial\times B - 4\pi j, +\end{aligned} +\right\} +\qquad \text{Maxwell's equations} +\end{equation*} +\begin{verbatim} +\begin{equation*} +\left.\begin{aligned} + B'&=-\partial\times E,\\ + E'&=\partial\times B - 4\pi j, +\end{aligned} +\right\} +\qquad \text{Maxwell's equations} +\end{equation*} +\end{verbatim} +Like the \env{array} environment, these \texttt{-ed} variants also take +an optional \verb'[t]' or \verb'[b]' argument to specify vertical +positioning. + +\qq{Cases} constructions like the following are common in +mathematics: +\begin{equation}\label{eq:C} +P_{r-j}= + \begin{cases} + 0& \text{if $r-j$ is odd},\\ + r!\,(-1)^{(r-j)/2}& \text{if $r-j$ is even}. + \end{cases} +\end{equation} +and in the \pkg{amsmath} package there is a \env{cases} environment to +make them easy to write: +\begin{verbatim} +P_{r-j}=\begin{cases} + 0& \text{if $r-j$ is odd},\\ + r!\,(-1)^{(r-j)/2}& \text{if $r-j$ is even}. + \end{cases} +\end{verbatim} +Notice the use of \cn{text} (cf.~\secref{text}) and the nested +math formulas. + +\section{Adjusting tag placement} + +Placing equation numbers can be a rather complex problem in multiline +displays. The environments of the \pkg{amsmath} package try hard to +avoid overprinting an equation number on the equation contents, if +necessary moving the number down or up to a separate line. Difficulties +in accurately calculating the profile of an equation can occasionally +result in number movement that doesn't look right. There is a +\cn{raisetag} command provided to adjust the vertical position of the +current equation number, if it has been shifted away from its normal +position. To move a particular number up by six points, write +|\raisetag{6pt}|. This kind of adjustment is fine tuning like line +breaks and page breaks, and should therefore be left undone until your +document is nearly finalized, or you may end up redoing the fine tuning +several times to keep up with changing document contents. + +\section{Vertical spacing and page breaks in multiline displays} + +You can use the \cn{\\}|[|\<dimension>|]| command to get extra vertical +space between lines in all the \pkg{amsmath} displayed equation +environments, as is usual in \latex/. When the \pkg{amsmath} package is +in use \ii{page breaks} between equation lines are normally disallowed; +the philosophy is that page breaks in such material should receive +individual attention from the author. To get an individual page break +inside a particular displayed equation, a \cn{displaybreak} command is +provided. \cn{displaybreak} is best placed immediately before the +\cn{\\} where it is to take effect. Like \latex/'s \cn{pagebreak}, +\cn{displaybreak} takes an optional argument between 0 and 4 denoting +the desirability of the pagebreak. |\displaybreak[0]| means \qq{it is + permissible to break here} without encouraging a break; +\cn{displaybreak} with no optional argument is the same as +|\displaybreak[4]| and forces a break. + +If you prefer a strategy of letting page breaks fall where they may, +even in the middle of a multi-line equation, then you might put +\cn{allowdisplaybreaks}\texttt{[1]} in the preamble of your document. An +optional argument 1\ndash 4 can be used for finer control: |[1]| means +allow page breaks, but avoid them as much as possible; values of 2,3,4 +mean increasing permissiveness. When display breaks are enabled with +\cn{allowdisplaybreaks}, the \cn{\\*} command can be used to prohibit a +pagebreak after a given line, as usual. + +\begin{bfseries} +Note: Certain equation environments wrap their contents in an +unbreakable box, with the consequence that neither \cn{displaybreak} nor +\cn{allowdisplaybreaks} will have any effect on them. These include +\env{split}, \env{aligned}, \env{gathered}, and \env{alignedat}. +\end{bfseries} + +\section{Interrupting a display} + +The command \cn{intertext} is used for a short interjection of one or +two lines of text\index{text fragments inside math} in the middle of a +multiple-line display structure (see also the \cn{text} command in +\secref{text}). Its salient feature is preservation of the alignment, +which would not happen if you simply ended the display and then started +it up again afterwards. \cn{intertext} may only appear right after a +\cn{\\} or \cn{\\*} command. Notice the position of the word \qq{and} in +this example. +\begin{align} +A_1&=N_0(\lambda;\Omega')-\phi(\lambda;\Omega'),\\ +A_2&=\phi(\lambda;\Omega')-\phi(\lambda;\Omega),\\ +\intertext{and} +A_3&=\mathcal{N}(\lambda;\omega). +\end{align} +\begin{verbatim} +\begin{align} +A_1&=N_0(\lambda;\Omega')-\phi(\lambda;\Omega'),\\ +A_2&=\phi(\lambda;\Omega')-\phi(\lambda;\Omega),\\ +\intertext{and} +A_3&=\mathcal{N}(\lambda;\omega). +\end{align} +\end{verbatim} + +\section{Equation numbering} + +\subsection{Numbering hierarchy} +In \latex/ if you wanted to have equations numbered within +sections\mdash that is, have +equation numbers (1.1), (1.2), \dots, (2.1), (2.2), +\dots, in sections 1, 2, and so forth\mdash you could redefine +\cn{theequation} as suggested in the \latex/ manual \cite[\S6.3, \S +C.8.4]{lamport}: +\begin{verbatim} +\renewcommand{\theequation}{\thesection.\arabic{equation}} +\end{verbatim} + +This works pretty well, except that the equation counter won't be reset +to zero at the beginning of a new section or chapter, unless you do it +yourself using \cn{setcounter}. To make this a little more convenient, +the \pkg{amsmath} package provides a command\index{equation +numbers!hierarchy} \cn{numberwithin}. To have equation numbering tied to +section numbering, with automatic reset of the equation counter, write +\begin{verbatim} +\numberwithin{equation}{section} +\end{verbatim} +As its name implies, the \cn{numberwithin} command can be applied to +any counter, not just the \texttt{equation} counter. + +\subsection{Cross references to equation numbers} + +To make cross-references to equations easier, an \cn{eqref} +command\index{equation numbers!cross-references} is provided. This +automatically supplies the parentheses around the equation number. I.e., +if \verb'\ref{abc}' produces 3.2 then \verb'\eqref{abc}' produces +(3.2). + +\subsection{Subordinate numbering sequences} + +The \pkg{amsmath} package provides also a \env{subequations} +environment\index{equation numbers!subordinate numbering} to make it +easy to number equations in a particular group with a subordinate +numbering scheme. For example +\begin{verbatim} +\begin{subequations} +... +\end{subequations} +\end{verbatim} +causes all numbered equations within that part of the document to be +numbered (4.9a) (4.9b) (4.9c) \dots, if the preceding numbered +equation was (4.8). A \cn{label} command immediately after +\verb/\begin{subequations}/ will produce a \cn{ref} of the parent +number 4.9, not 4.9a. The counters used by the subequations +environment are \verb/parentequation/ and \verb/equation/ and +\cn{addtocounter}, \cn{setcounter}, \cn{value}, etc., can be applied +as usual to those counter names. To get anything other than lowercase +letters for the subordinate numbers, use standard \latex/ methods for +changing numbering style \cite[\S6.3, \S C.8.4]{lamport}. For example, +redefining \cn{theequation} as follows will produce roman numerals. +\begin{verbatim} +\begin{subequations} +\renewcommand{\theequation}{\theparentequation \roman{equation}} +... +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\chapter{Miscellaneous mathematical features} + +\section{Matrices}\label{ss:matrix} + +The \pkg{amsmath} package provides some environments for +matrices\index{matrices} beyond the basic \env{array} environment of +\latex/. The \env{pmatrix}, \env{bmatrix}, \env{Bmatrix}, \env{vmatrix} +and \env{Vmatrix} have (respectively) $(\,)$, $[\,]$, $\lbrace\,\rbrace$, +$\lvert\,\rvert$, and +$\lVert\,\rVert$ delimiters built in. For naming consistency there is a +\env{matrix} environment sans delimiters. This is not entirely redundant +with the \env{array} environment; the matrix environments all use more +economical horizontal spacing than the rather prodigal spacing of the +\env{array} environment. Also, unlike the \env{array} environment, you +don't have to give column specifications for any of the matrix +environments; by default you can have up to 10 centered columns.% +\footnote{%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +More precisely: The maximum number of columns in a matrix is determined +by the counter |MaxMatrixCols| (normal value = 10), which you can change +if necessary using \latex/'s \cn{setcounter} or \cn{addtocounter} +commands.% +}\space%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +(If you need left or right alignment in a column or other special +formats you must resort to \env{array}.) + +To produce a small matrix suitable for use in text, there is a +\env{smallmatrix} environment (e.g., +\begin{math} +\bigl( \begin{smallmatrix} + a&b\\ c&d +\end{smallmatrix} \bigr) +\end{math}) +that comes closer to fitting within a single text line than a normal +matrix. Delimiters must be provided; there are no |p|,|b|,|B|,|v|,|V| +versions of \env{smallmatrix}. The above example was produced by +\begin{verbatim} +\bigl( \begin{smallmatrix} + a&b\\ c&d +\end{smallmatrix} \bigr) +\end{verbatim} + +\cn{hdotsfor}|{|\<number>|}| produces a row of dots in a +matrix\index{matrices!ellipsis dots}\index{ellipsis dots!in +matrices}\index{dots|see{ellipsis dots}} spanning the given number of +columns. For example, +\begin{center} +\begin{minipage}{.3\columnwidth} +\noindent$\begin{matrix} a&b&c&d\\ +e&\hdotsfor{3} \end{matrix}$ +\end{minipage}% +\qquad +\begin{minipage}{.45\columnwidth} +\begin{verbatim} +\begin{matrix} a&b&c&d\\ +e&\hdotsfor{3} \end{matrix} +\end{verbatim} +\end{minipage}% +\end{center} + +The spacing of the dots can be varied through use of a square-bracket +option, for example, |\hdotsfor[1.5]{3}|. The number in square brackets +will be used as a multiplier (i.e., the normal value is 1.0). +\begin{equation}\label{eq:D} +\begin{pmatrix} D_1t&-a_{12}t_2&\dots&-a_{1n}t_n\\ +-a_{21}t_1&D_2t&\dots&-a_{2n}t_n\\ +\hdotsfor[2]{4}\\ +-a_{n1}t_1&-a_{n2}t_2&\dots&D_nt\end{pmatrix}, +\end{equation} +\begin{verbatim} +\begin{pmatrix} D_1t&-a_{12}t_2&\dots&-a_{1n}t_n\\ +-a_{21}t_1&D_2t&\dots&-a_{2n}t_n\\ +\hdotsfor[2]{4}\\ +-a_{n1}t_1&-a_{n2}t_2&\dots&D_nt\end{pmatrix} +\end{verbatim} + +\section{Math spacing commands} + +The \pkg{amsmath} package slightly extends the set of math +spacing\index{horizontal space!in math mode} commands, as shown below. +Both the spelled-out and abbreviated forms of these commands are robust, +and they can also be used outside of math. +\begin{ctab}{lll|lll} +Abbrev.& Spelled out& Example & Abbrev.& Spelled out& Example\\ +\hline +\vstrut{2.5ex} +& no space& \spx{}& & no space & \spx{}\\ +\cn{\,}& \cn{thinspace}& \spx{\,}& + \cnbang& \cn{negthinspace}& \spx{\!}\\ +\cn{\:}& \cn{medspace}& \spx{\:}& + & \cn{negmedspace}& \spx{\negmedspace}\\ +\cn{\;}& \cn{thickspace}& \spx{\;}& + & \cn{negthickspace}& \spx{\negthickspace}\\ +& \cn{quad}& \spx{\quad}\\ +& \cn{qquad}& \spx{\qquad} +\end{ctab} +For the greatest possible control over math spacing, use \cn{mspace} +and `math units'. One math unit, or |mu|, is equal to 1/18 em. Thus to +get a negative \cn{quad} you could write |\mspace{-18.0mu}|. + +\section{Dots} + +For preferred placement of ellipsis dots (raised or on-line) in various +contexts there is no general consensus. It may therefore be considered a +matter of taste. By using the semantically oriented commands +\begin{itemize} +\item \cn{dotsc} for \qq{dots with commas} +\item \cn{dotsb} for \qq{dots with binary operators/relations} +\item \cn{dotsm} for \qq{multiplication dots} +\item \cn{dotsi} for \qq{dots with integrals} +\item \cn{dotso} for \qq{other dots} (none of the above) +\end{itemize} +instead of \cn{ldots} and \cn{cdots}, you make it possible for your +document to be adapted to different conventions on the fly, in case (for +example) you have to submit it to a publisher who insists on following +house tradition in this respect. The default treatment for the various +kinds follows American Mathematical Society conventions: +\begin{center} +\begin{tabular}{@{}l@{}l@{}} +\begin{minipage}[t]{.54\textwidth} +\begin{verbatim} +Then we have the series $A_1, A_2, +\dotsc$, the regional sum $A_1 ++A_2 +\dotsb $, the orthogonal +product $A_1 A_2 \dotsm $, and +the infinite integral +\[\int_{A_1}\int_{A_2}\dotsi\]. +\end{verbatim} +\end{minipage} +& +\begin{minipage}[t]{.45\textwidth} +\noindent +Then we have the series $A_1,A_2,\dotsc$, +the regional sum $A_1+A_2+\dotsb$, +the orthogonal product $A_1A_2\dotsm$, +and the infinite integral +\[\int_{A_1}\int_{A_2}\dotsi.\] +\end{minipage} +\end{tabular} +\end{center} + +\section{Nonbreaking dashes} + +A command \cn{nobreakdash} is provided to suppress the possibility +of a linebreak after the following hyphen or dash. For example, if you +write `pages 1\ndash 9' as |pages 1\nobreakdash--9| then a linebreak will +never occur between the dash and the 9. You can also use +\cn{nobreakdash} to prevent undesirable hyphenations in combinations +like |$p$-adic|. For frequent use, it's advisable to make abbreviations, +e.g., +\begin{verbatim} +\newcommand{\p}{$p$\nobreakdash}% for "\p-adic" +\newcommand{\Ndash}{\nobreakdash--}% for "pages 1\Ndash 9" +% For "\n dimensional" ("n-dimensional"): +\newcommand{\n}[1]{$n$\nobreakdash-\hspace{0pt}} +\end{verbatim} +The last example shows how to prohibit a linebreak after the hyphen but +allow normal hyphenation in the following word. (It suffices to add a +zero-width space after the hyphen.) + +\section{Accents in math} + +In ordinary \LaTeX{} the placement of the second accent in doubled math +accents is often poor. With the \pkg{amsmath} package you +will get improved placement of the second accent: +$\hat{\hat{A}}$ (\cn{hat}|{\hat{A}}|). + +The commands \cn{dddot} and \cn{ddddot} are available to produce triple +and quadruple dot accents in addition to the \cn{dot} and \cn{ddot} +accents already available in \latex/. + +To get a superscripted hat or tilde character, load the \pkg{amsxtra} +package and use \cn{sphat} or \cn{sptilde}. Usage is \verb'A\sphat' +(note the absence of the \verb'^' character). + +To place an arbitrary symbol in math accent position, or to get under +accents, see the \pkg{accents} package by Javier Bezos. + +\section{Roots} + +In ordinary \latex/ the placement of root indices is sometimes not so +good: $\sqrt[\beta]{k}$ (|\sqrt||[\beta]{k}|). In the +\pkg{amsmath} package \cn{leftroot} and \cn{uproot} allow you to adjust +the position of the root: +\begin{verbatim} + \sqrt[\leftroot{-2}\uproot{2}\beta]{k} +\end{verbatim} +will move the beta up and to the right: +$\sqrt[\leftroot{-2}\uproot{2}\beta]{k}$. The negative argument used +with \cn{leftroot} moves the $\beta$ to the right. The units are a small +amount that is a useful size for such adjustments. + +\section{Boxed formulas} + +The command \cn{boxed} puts a box around its +argument, like \cn{fbox} except that the contents are in math mode: +\begin{equation} +\boxed{\eta \leq C(\delta(\eta) +\Lambda_M(0,\delta))} +\end{equation} +\begin{verbatim} + \boxed{\eta \leq C(\delta(\eta) +\Lambda_M(0,\delta))} +\end{verbatim} + +\section{Over and under arrows} + +Basic \latex/ provides \cn{overrightarrow} and \cn{overleftarrow} +commands. Some additional over and under arrow commands are provided +by the \pkg{amsmath} package to extend the set: + +\begin{tabbing} +\qquad\=\ncn{overleftrightarrow}\qquad\=\kill +\> \cn{overleftarrow} \> \cn{underleftarrow} \+\\ + \cn{overrightarrow} \> \cn{underrightarrow} \\ + \cn{overleftrightarrow}\> \cn{underleftrightarrow} +\end{tabbing} + +\section{Extensible arrows} + +\cn{xleftarrow} and \cn{xrightarrow} produce +arrows\index{arrows!extensible} that extend automatically to accommodate +unusually wide subscripts or superscripts. These commands take one +optional argument (the subscript) and one mandatory argument (the +superscript, possibly empty): +\begin{equation} +A\xleftarrow{n+\mu-1}B \xrightarrow[T]{n\pm i-1}C +\end{equation} +\begin{verbatim} + \xleftarrow{n+\mu-1}\quad \xrightarrow[T]{n\pm i-1} +\end{verbatim} + +\section{Affixing symbols to other symbols} + +\latex/ provides \cn{stackrel} for placing a +superscript\index{subscripts and superscripts} above a binary relation. +In the \pkg{amsmath} package there are somewhat more general commands, +\cn{overset} and \cn{underset}, that can be used to place one symbol +above or below another symbol, whether it's a relation or something +else. The input |\overset{*}{X}| will place a superscript-size $*$ above +the $X$: $\overset{*}{X}$; \cn{underset} is the analog for adding a +symbol underneath. + +See also the description of \cn{sideset} in \secref{sideset}. + +\section{Fractions and related constructions} + +\subsection{The \cn{frac}, \cn{dfrac}, and \cn{tfrac} commands} + +The \cn{frac} command, which is in the basic command set of +\latex/,\index{fractions} takes two arguments\mdash numerator and +denominator\mdash and typesets them in normal fraction form. The +\pkg{amsmath} package provides also \cn{dfrac} and \cn{tfrac} as +convenient abbreviations for |{\displaystyle\frac| |...| |}| +and\indexcs{textstyle}\relax +\indexcs{displaystyle} |{\textstyle\frac| |...| |}|. +\begin{equation} +\frac{1}{k}\log_2 c(f)\quad\tfrac{1}{k}\log_2 c(f)\quad +\sqrt{\frac{1}{k}\log_2 c(f)}\quad\sqrt{\dfrac{1}{k}\log_2 c(f)} +\end{equation} +\begin{verbatim} +\begin{equation} +\frac{1}{k}\log_2 c(f)\;\tfrac{1}{k}\log_2 c(f)\; +\sqrt{\frac{1}{k}\log_2 c(f)}\;\sqrt{\dfrac{1}{k}\log_2 c(f)} +\end{equation} +\end{verbatim} + +\subsection{The \cn{binom}, \cn{dbinom}, and \cn{tbinom} commands} + +For binomial expressions\index{binomials} such as $\binom{n}{k}$ +\pkg{amsmath} has \cn{binom}, \cn{dbinom} and \cn{tbinom}: +\begin{equation} +2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2} +\end{equation} +\begin{verbatim} +2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2} +\end{verbatim} + +\subsection{The \cn{genfrac} command} + +The capabilities of \cn{frac}, \cn{binom}, and their variants are +subsumed by a generalized fraction command \cn{genfrac} with six +arguments. The last two correspond to \cn{frac}'s numerator and +denominator; the first two are optional delimiters (as seen in +\cn{binom}); the third is a line thickness override (\cn{binom} uses +this to set the fraction line thickness to 0\mdash i.e., invisible); and +the fourth argument is a mathstyle override: integer values 0\ndash 3 select +respectively \cn{displaystyle}, \cn{textstyle}, \cn{scriptstyle}, and +\cn{scriptscriptstyle}. If the third argument is left empty, the line +thickness defaults to `normal'. + +\begin{center}\begin{minipage}{.85\columnwidth} +\raggedright \normalfont\ttfamily \exhyphenpenalty10000 +\newcommand{\ma}[1]{% + \string{{\normalfont\itshape#1}\string}\penalty9999 \ignorespaces} +\string\genfrac \ma{left-delim} \ma{right-delim} \ma{thickness} +\ma{mathstyle} \ma{numerator} \ma{denominator} +\end{minipage}\end{center} +To illustrate, here is how \cn{frac}, \cn{tfrac}, and +\cn{binom} might be defined. +\begin{verbatim} +\newcommand{\frac}[2]{\genfrac{}{}{}{}{#1}{#2}} +\newcommand{\tfrac}[2]{\genfrac{}{}{}{1}{#1}{#2}} +\newcommand{\binom}[2]{\genfrac{(}{)}{0pt}{}{#1}{#2}} +\end{verbatim} +If you find yourself repeatedly using \cn{genfrac} throughout a document +for a particular notation, you will do yourself a favor (and your +publisher) if you define a meaningfully-named abbreviation for that +notation, along the lines of \cn{frac} and \cn{binom}. + +The primitive generalized fraction commands \cs{over}, \cs{overwithdelims}, +\cs{atop}, \cs{atopwithdelims}, \cs{above}, \cs{abovewithdelims} produce +warning messages if used with the \pkg{amsmath} package, for reasons +discussed in \fn{technote.tex}. + +\section{Continued fractions} + +The continued fraction\index{continued fractions} +\begin{equation} +\cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+\cdots +}}} +\end{equation} +can be obtained by typing +{\samepage +\begin{verbatim} +\cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+\dotsb +}}} +\end{verbatim} +}% End of \samepage +This produces better-looking results than straightforward use of +\cn{frac}. Left or right placement of any of the numerators is +accomplished by using \cn{cfrac}|[l]| or \cn{cfrac}|[r]| instead of +\cn{cfrac}. + +\section{Smash options} + +The command \cn{smash} is used to typeset a subformula with an effective height and depth of zero, which is sometimes +useful in adjusting the subformula's position with respect to adjacent +symbols. With the \pkg{amsmath} package \cn{smash} has optional +arguments |t| and |b|, because occasionally it is advantageous to be +able to \qq{smash} only the top or only the bottom of something while +retaining the natural depth or height. For example, when adjacent +radical symbols are unevenly sized or positioned because of differences +in the height and depth of their contents, \cn{smash} can be employed to +make them more consistent. Compare +$\sqrt{x}+\sqrt{y}+\sqrt{z}$ and $\sqrt{x}+\sqrt{\smash[b]{y}}+\sqrt{z}$, +where the latter was produced by +\verb"$\sqrt{x}" \verb"+" +\verb"\sqrt{"\5\verb"\smash[b]{y}}" \verb"+" \verb"\sqrt{z}$". + +\section{Delimiters} + +\subsection{Delimiter sizes}\label{bigdel} + +The automatic delimiter sizing done by \cn{left} and \cn{right} has two +limitations: First, it is applied mechanically to produce delimiters +large enough to encompass the largest contained item, and second, the +range of sizes is not even approximately continuous but has fairly large +quantum jumps. This means that a math fragment that is infinitesimally +too large for a given delimiter size will get the next larger size, a +jump of 3pt or so in normal-sized text. There are two or three +situations where the delimiter size is commonly adjusted, using a set of +commands that have `big' in their names. +\begin{ctab}{l|llllll} +Delimiter& + text& \ncn{left}& \ncn{bigl}& \ncn{Bigl}& \ncn{biggl}& \ncn{Biggl}\\ +size& + size& \ncn{right}& \ncn{bigr}& \ncn{Bigr}& \ncn{biggr}& \ncn{Biggr}\\ +\hline +Result\vstrut{5ex}& + $\displaystyle(b)(\frac{c}{d})$& + $\displaystyle\left(b\right)\left(\frac{c}{d}\right)$& + $\displaystyle\bigl(b\bigr)\bigl(\frac{c}{d}\bigr)$& + $\displaystyle\Bigl(b\Bigr)\Bigl(\frac{c}{d}\Bigr)$& + $\displaystyle\biggl(b\biggr)\biggl(\frac{c}{d}\biggr)$& + $\displaystyle\Biggl(b\Biggr)\Biggl(\frac{c}{d}\Biggr)$ +\end{ctab} +The first kind of situation is a cumulative operator with limits above +and below. With \cn{left} and \cn{right} the delimiters usually turn out +larger than necessary, and using the |Big| or |bigg| +sizes\index{big@\cn{big}, \cn{Big}, \cn{bigg}, \dots\ delimiters} +instead gives better results: +\begin{equation*} +\left[\sum_i a_i\left\lvert\sum_j x_{ij}\right\rvert^p\right]^{1/p} +\quad\text{versus}\quad +\biggl[\sum_i a_i\Bigl\lvert\sum_j x_{ij}\Bigr\rvert^p\biggr]^{1/p} +\end{equation*} +\begin{verbatim} +\biggl[\sum_i a_i\Bigl\lvert\sum_j x_{ij}\Bigr\rvert^p\biggr]^{1/p} +\end{verbatim} +The second kind of situation is clustered pairs of delimiters where +\cn{left} and \cn{right} make them all the same size (because that is +adequate to cover the encompassed material) but what you really want +is to make some of the delimiters slightly larger to make the nesting +easier to see. +\begin{equation*} +\left((a_1 b_1) - (a_2 b_2)\right) +\left((a_2 b_1) + (a_1 b_2)\right) +\quad\text{versus}\quad +\bigl((a_1 b_1) - (a_2 b_2)\bigr) +\bigl((a_2 b_1) + (a_1 b_2)\bigr) +\end{equation*} +\begin{verbatim} +\left((a_1 b_1) - (a_2 b_2)\right) +\left((a_2 b_1) + (a_1 b_2)\right) +\quad\text{versus}\quad +\bigl((a_1 b_1) - (a_2 b_2)\bigr) +\bigl((a_2 b_1) + (a_1 b_2)\bigr) +\end{verbatim} +The third kind of situation is a slightly oversize object in running +text, such as $\left\lvert\frac{b'}{d'}\right\rvert$ where the +delimiters produced by \cn{left} and \cn{right} cause too much line +spreading. In that case \ncn{bigl} and \ncn{bigr}\index{big@\cn{big}, +\cn{Big}, \cn{bigg}, \dots\ delimiters} can be used to produce +delimiters that are slightly larger than the base size but still able to +fit within the normal line spacing: +$\bigl\lvert\frac{b'}{d'}\bigr\rvert$. + +In ordinary \latex/ \ncn{big}, \ncn{bigg}, \ncn{Big}, and \ncn{Bigg} +delimiters aren't scaled properly over the full range of \latex/ font +sizes. With the \pkg{amsmath} package they are. + +\subsection{Vertical bar notations} + +The \pkg{amsmath} package provides commands \cn{lvert}, \cn{rvert}, +\cn{lVert}, \cn{rVert} (compare \cn{langle}, \cn{rangle}) to address the +problem of overloading for the vert bar character \qc{\|}. This +character is currently used in \latex/ documents to represent a wide +variety of mathematical objects: the `divides' relation in a +number-theory expression like $p\vert q$, or the absolute-value +operation $\lvert z\rvert$, or the `such that' condition in set +notation, or the `evaluated at' notation $f_\zeta(t)\bigr\rvert_{t=0}$. +The multiplicity of uses in itself is not so bad; what is bad, however, +is that fact that not all of the uses take the same typographical +treatment, and that the complex discriminatory powers of a knowledgeable +reader cannot be replicated in computer processing of mathematical +documents. It is recommended therefore that there should be a one-to-one +correspondence in any given document between the vert bar character +\qc{\|} and a selected mathematical notation, and similarly for the +double-bar command \ncn{\|}\index{"|@\verb"*+"\"|+}. This immediately +rules out the use of \qc{|} +and \ncn{\|}\index{"|@\verb"*+"\"|+} for delimiters, because left and right +delimiters are distinct usages that do not relate in the same way to +adjacent symbols; recommended practice is therefore to define suitable +commands in the document preamble for any paired-delimiter use of vert +bar symbols: +\begin{verbatim} +\providecommand{\abs}[1]{\lvert#1\rvert} +\providecommand{\norm}[1]{\lVert#1\rVert} +\end{verbatim} +whereupon the document would contain |\abs{z}| to produce $\lvert +z\rvert$ and |\norm{v}| to produce $\lVert v\rVert$. + +\chapter{Operator names} + +\section{Defining new operator names}\label{s:opname} + +Math functions\index{operator names}\relax \index{function +names|see{operator names}} such as $\log$, $\sin$, and $\lim$ are +traditionally typeset in roman type to make them visually more distinct +from one-letter math variables, which are set in math italic. The more +common ones have predefined names, \cn{log}, \cn{sin}, \cn{lim}, and so +forth, but new ones come up all the time in mathematical papers, so the +\pkg{amsmath} package provides a general mechanism for defining new +`operator names'. To define a math function \ncn{xxx} to work like +\cn{sin}, you write +\begin{verbatim} +\DeclareMathOperator{\xxx}{xxx} +\end{verbatim} +whereupon ensuing uses of \ncn{xxx} will produce {\upshape xxx} in the +proper font and automatically add proper spacing\index{horizontal +space!around operator names} on either side when necessary, so that you +get $A\xxx B$ instead of $A\mathrm{xxx}B$. In the second argument of +\cn{DeclareMathOperator} (the name text), a pseudo-text mode prevails: +the hyphen character \qc{\-} will print as a text hyphen rather than a +minus sign and an asterisk \qc{\*} will print as a raised text asterisk +instead of a centered math star. (Compare +\textit{a}-\textit{b}*\textit{c} and $a-b*c$.) But otherwise the name +text is printed in math mode, so that you can use, e.g., subscripts and +superscripts there. + +If the new operator should have subscripts and superscripts placed in +`limits' position above and below as with $\lim$, $\sup$, or $\max$, use +the \qc{\*} form of the \cn{DeclareMathOperator} command: +\begin{verbatim} +\DeclareMathOperator*{\Lim}{Lim} +\end{verbatim} +See also the discussion of subscript placement in +Section~\ref{subplace}. + +The following operator names are predefined: +\begin{ctab}{rlrlrlrl} +\cn{arccos}& $\arccos$ &\cn{deg}& $\deg$ & \cn{lg}& $\lg$ & \cn{projlim}& $\projlim$\\ +\cn{arcsin}& $\arcsin$ &\cn{det}& $\det$ & \cn{lim}& $\lim$ & \cn{sec}& $\sec$\\ +\cn{arctan}& $\arctan$ &\cn{dim}& $\dim$ & \cn{liminf}& $\liminf$ &\cn{sin}& $\sin$\\ +\cn{arg}& $\arg$ & \cn{exp}& $\exp$ & \cn{limsup}& $\limsup$ &\cn{sinh}& $\sinh$\\ +\cn{cos}& $\cos$ & \cn{gcd}& $\gcd$ & \cn{ln}& $\ln$ & \cn{sup}& $\sup$\\ +\cn{cosh}& $\cosh$ & \cn{hom}& $\hom$ & \cn{log}& $\log$ & \cn{tan}& $\tan$\\ +\cn{cot}& $\cot$ & \cn{inf}& $\inf$ & \cn{max}& $\max$ & \cn{tanh}& $\tanh$\\ +\cn{coth}& $\coth$ & \cn{injlim}& $\injlim$ &\cn{min}& $\min$\\ +\cn{csc}& $\csc$ & \cn{ker}& $\ker$ & \cn{Pr}& $\Pr$ +\end{ctab} +\begin{ctab}{rlrl} +\cn{varlimsup}& $\displaystyle\varlimsup$& + \cn{varinjlim}& $\displaystyle\varinjlim$\\ +\cn{varliminf}& $\displaystyle\varliminf$& + \cn{varprojlim}& $\displaystyle\varprojlim$ +\end{ctab} + +There is also a command \cn{operatorname} such that using +\begin{verbatim} +\operatorname{abc} +\end{verbatim} +in a math formula is equivalent to a use of \ncn{abc} defined by +\cn{DeclareMathOperator}. This may be occasionally useful for +constructing more complex notation or other purposes. (Use the variant +\cn{operatorname*} to get limits.) + +\section{\cn{mod} and its relatives} + +Commands \cn{mod}, \cn{bmod}, \cn{pmod}, \cn{pod} are provided to deal +with the special spacing conventions of \qq{mod} notation. \cn{bmod} and +\cn{pmod} are available in \latex/, but with the \pkg{amsmath} package +the spacing of \cn{pmod} will adjust to a smaller value if it's used in +a non-display-mode formula. \cn{mod} and \cn{pod} are variants of +\cn{pmod} preferred by some authors; \cn{mod} omits the parentheses, +whereas \cn{pod} omits the \qq{mod} and retains the parentheses. +\begin{equation} +\gcd(n,m\bmod n);\quad x\equiv y\pmod b; +\quad x\equiv y\mod c;\quad x\equiv y\pod d +\end{equation} +\begin{verbatim} +\gcd(n,m\bmod n);\quad x\equiv y\pmod b; +\quad x\equiv y\mod c;\quad x\equiv y\pod d +\end{verbatim} + +\chapter{The \cn{text} command}\label{text} + +The main use of the command \cn{text} is for words or +phrases\index{text fragments inside math} in a display. It is very +similar to the \latex/ command \cn{mbox} in its effects, but has a +couple of advantages. If you want a word or phrase of text in a +subscript, you can type |..._{\text{word or phrase}}|, which is slightly +easier than the \cn{mbox} equivalent: |..._{\mbox{\scriptsize| |word| +|or| |phrase}}|. The other advantage is the more descriptive name. +\begin{equation} +f_{[x_{i-1},x_i]} \text{ is monotonic,} +\quad i = 1,\dots,c+1 +\end{equation} +\begin{verbatim} +f_{[x_{i-1},x_i]} \text{ is monotonic,} +\quad i = 1,\dots,c+1 +\end{verbatim} + +\chapter{Integrals and sums} + +\section{Multiline subscripts and superscripts} + +The \cn{substack} command can be used to produce a multiline subscript +or superscript:\index{subscripts and superscripts!multi-line}\relax +\index{superscripts|see{subscripts and superscripts}} for example +\begin{ctab}{ll} +\begin{minipage}[t]{.6\columnwidth} +\begin{verbatim} +\sum_{\substack{ + 0\le i\le m\\ + 0<j<n}} + P(i,j) +\end{verbatim} +\end{minipage} +& +$\displaystyle +\sum_{\substack{0\le i\le m\\ 0<j<n}} P(i,j)$ +\end{ctab} +A slightly more generalized form is the \env{subarray} environment which +allows you to specify that each line should be left-aligned instead of +centered, as here: +\begin{ctab}{ll} +\begin{minipage}[t]{.6\columnwidth} +\begin{verbatim} +\sum_{\begin{subarray}{l} + i\in\Lambda\\ 0<j<n + \end{subarray}} + P(i,j) +\end{verbatim} +\end{minipage} +& +$\displaystyle + \sum_{\begin{subarray}{l} + i\in \Lambda\\ 0<j<n + \end{subarray}} + P(i,j)$ +\end{ctab} + +\section{The \cn{sideset} command}\label{sideset} + +There's also a command called \cn{sideset}, for a rather special +purpose: putting symbols at the subscript and +superscript\index{subscripts and superscripts!on sums} corners of a +large operator symbol such as $\sum$ or $\prod$. \emph{Note: this +command is not designed to be applied to anything other than sum-class symbols.} The prime +example is the case when you want to put a prime on a sum symbol. If +there are no limits above or below the sum, you could just use +\cn{nolimits}: here's +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +|\sum\nolimits' E_n| in display mode: +\begin{equation} +\sum\nolimits' E_n +\end{equation} +If, however, you want not only the prime but also something below or +above the sum symbol, it's not so easy\mdash indeed, without +\cn{sideset}, it would be downright difficult. With \cn{sideset}, you +can write +\begin{ctab}{ll} +\begin{minipage}[t]{.6\columnwidth} +\begin{verbatim} +\sideset{}{'} + \sum_{n<k,\;\text{$n$ odd}} nE_n +\end{verbatim} +\end{minipage} +&$\displaystyle +\sideset{}{'}\sum_{n<k,\;\text{$n$ odd}} nE_n +$ +\end{ctab} +The extra pair of empty braces is explained by the fact that +\cn{sideset} has the capability of putting an extra symbol or symbols at +each corner of a large operator; to put an asterisk at each corner of a +product symbol, you would type +\begin{ctab}{ll} +\begin{minipage}[t]{.6\columnwidth} +\begin{verbatim} +\sideset{_*^*}{_*^*}\prod +\end{verbatim} +\end{minipage} +&$\displaystyle +\sideset{_*^*}{_*^*}\prod +$ +\end{ctab} + +\section{Placement of subscripts and limits}\label{subplace} + +The default positioning for subscripts depends on the +base symbol involved. The default for sum-class symbols is +`displaylimits' positioning: When a sum-class symbol appears +in a displayed formula, subscript and superscript are placed in `limits' +position above and below, but in an inline formula, they are placed to +the side, to avoid unsightly and wasteful spreading of the +surrounding text lines. +The default for integral-class symbols is to have sub- and +superscripts always to the side, even in displayed formulas. +(See the discussion of the \opt{intlimits} and related options in +Section~\ref{options}.) + +Operator names such as $\sin$ or $\lim$ may have either `displaylimits' +or `limits' positioning depending on how they were defined. The standard +operator names are defined according to normal mathematical usage. + +The commands \cn{limits} and \cn{nolimits} can be used to override the +normal behavior of a base symbol: +\begin{equation*} +\sum\nolimits_X,\qquad \iint\limits_{A}, +\qquad\varliminf\nolimits_{n\to \infty} +\end{equation*} +To define a command whose subscripts follow the +same `displaylimits' behavior as \cn{sum}, put +\cn{displaylimits} at the tail end of the definition. When multiple +instances of \cn{limits}, \cn{nolimits}, or \cn{displaylimits} occur +consecutively, the last one takes precedence. + +\section{Multiple integral signs} + +\cn{iint}, \cn{iiint}, and \cn{iiiint} give multiple integral +signs\index{integrals!multiple} with the spacing between them nicely +adjusted, in both text and display style. \cn{idotsint} is an extension +of the same idea that gives two integral signs with dots between them. +\begin{gather} +\iint\limits_A f(x,y)\,dx\,dy\qquad\iiint\limits_A +f(x,y,z)\,dx\,dy\,dz\\ +\iiiint\limits_A +f(w,x,y,z)\,dw\,dx\,dy\,dz\qquad\idotsint\limits_A f(x_1,\dots,x_k) +\end{gather} + +\chapter{Commutative diagrams}\label{s:commdiag} + +Some commutative diagram commands like the ones in \amstex/ are +available as a separate package, \pkg{amscd}. For complex commutative +diagrams authors will need to turn to more comprehensive packages like +\pkg{kuvio} or \xypic/, but for simple diagrams without diagonal +arrows\index{arrows!in commutative diagrams} the \pkg{amscd} commands +may be more convenient. Here is one example. +\begin{equation*} +\begin{CD} +S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T\\ +@VVV @VV{\End P}V\\ +(S\otimes T)/I @= (Z\otimes T)/J +\end{CD} +\end{equation*} +\begin{verbatim} +\begin{CD} +S^{{\mathcal{W}}_\Lambda}\otimes T @>j>> T\\ +@VVV @VV{\End P}V\\ +(S\otimes T)/I @= (Z\otimes T)/J +\end{CD} +\end{verbatim} +In the \env{CD} environment the commands |@>>>|, +|@<<<|, |@VVV|, and |@AAA| give respectively right, left, down, and up +arrows. For the horizontal arrows, material between the first and second +|>| or |<| symbols will be typeset as a superscript, and material +between the second and third will be typeset as a subscript. Similarly, +material between the first and second or second and third |A|s or |V|s +of vertical arrows will be typeset as left or right \qq{sidescripts}. +The commands |@=| and \verb'@|' give horizontal and vertical double lines. +A \qq{null arrow} command |@.| can be used instead of a visible arrow +to fill out an array where needed. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Using math fonts} + +\section{Introduction} + +For more comprehensive information on font use in \latex/, see the +\latex/ font guide (\fn{fntguide.tex}) or \booktitle{The \latex/ +Companion} \cite{tlc}. The basic set of math font commands\index{math +fonts}\relax \index{math symbols|see{math fonts}} in \latex/ includes +\cn{mathbf}, \cn{mathrm}, \cn{mathcal}, \cn{mathsf}, \cn{mathtt}, +\cn{mathit}. Additional math alphabet commands such as +\cn{mathbb} for blackboard bold, \cn{mathfrak} for Fraktur, and +\cn{mathscr} for Euler script are available through the packages +\pkg{amsfonts} and \pkg{euscript} (distributed separately). + +\section{Recommended use of math font commands} + +If you find yourself employing math font commands frequently in your +document, you might wish that they had shorter names, such as \ncn{mb} +instead of \cn{mathbf}. Of course, there is nothing to keep you from +providing such abbreviations for yourself by suitable \cn{newcommand} +statements. But for \latex/ to provide shorter names would actually be a +disservice to authors, as that would obscure a much better alternative: +defining custom command names derived from the names of the underlying +mathematical objects, rather than from the names of the fonts used to +distinguish the objects. For example, if you are using bold to indicate +vectors, then you will be better served in the long run if you define a +`vector' command instead of a `math-bold' command: +\begin{verbatim} + \newcommand{\vect}[1]{\mathbf{#1}} +\end{verbatim} +you can write |\vect{a} + \vect{b}| to produce $\vect{a} + +\vect{b}$. +If you decide several months down the road that you want to use the bold +font for some other purpose, and mark vectors by a small over-arrow +instead, then you can put the change into effect merely by changing the +definition of \ncn{vect}; otherwise you would have to replace all +occurrences of \cn{mathbf} throughout your document, perhaps even +needing to inspect each one to see whether it is indeed +an instance of a vector. + +It can also be useful to assign distinct +command names for different letters of a particular font: +\begin{verbatim} +\DeclareSymbolFont{AMSb}{U}{msb}{m}{n}% or use amsfonts package +\DeclareMathSymbol{\C}{\mathalpha}{AMSb}{"43} +\DeclareMathSymbol{\R}{\mathalpha}{AMSb}{"52} +\end{verbatim} +These statements would define the commands \cn{C} and \cn{R} to produce +blackboard-bold letters from the `AMSb' math symbols font. If you refer +often to the\break complex numbers or real numbers in your document, you +might find this method more convenient than (let's say) defining a +\ncn{field} command and writing\break |\field{C}|, |\field{R}|. But for +maximum flexibility and control, define such a \ncn{field} command and +then define \ncn{C} and \ncn{R} in terms of that +command:\indexcs{mathbb} +\begin{verbatim} +\usepackage{amsfonts}% to get the \mathbb alphabet +\newcommand{\field}[1]{\mathbb{#1}} +\newcommand{\C}{\field{C}} +\newcommand{\R}{\field{R}} +\end{verbatim} + +\section{Bold math symbols} + +The \cn{mathbf} command is commonly used to obtain bold Latin letters in +math, but for most other kinds of math symbols it has no effect, or its +effects depend unreliably on the set of math fonts that are in use. For +example, writing +\begin{verbatim} +\Delta \mathbf{\Delta}\mathbf{+}\delta \mathbf{\delta} +\end{verbatim} +produces $\Delta \mathbf{\Delta}\mathbf{+}\delta +\mathbf{\delta}$; the \cn{mathbf} has no effect on the plus +sign or the small delta. + +The \pkg{amsmath} package therefore provides two additional commands, +\cn{boldsymbol} and \cn{pmb}, that can be applied to other kinds of math +symbols. \cn{boldsymbol} can be used for a math symbol that remains +unaffected by \cn{mathbf} if (and only if) your current math font set +includes a bold version of that symbol. \cn{pmb} can be used as a last +resort for any math symbols that do not have a true bold version +provided by your set of math fonts; \qq{pmb} stands for \qq{poor man's +bold} and the command works by typesetting multiple copies of the symbol +with slight offsets. The quality of the output is inferior, especially +for symbols that contain any hairline strokes. When the standard default set of +\latex/ math fonts are in use (Computer Modern), the only symbols that +are likely to require \cn{pmb} are large operator symbols like \cn{sum}, +extended delimiter symbols, or the extra math symbols provided by +the \pkg{amssymb} package \cite{amsfonts}. + +The following formula shows some of the results that are possible: +\begin{verbatim} +A_\infty + \pi A_0 +\sim \mathbf{A}_{\boldsymbol{\infty}} \boldsymbol{+} + \boldsymbol{\pi} \mathbf{A}_{\boldsymbol{0}} +\sim\pmb{A}_{\pmb{\infty}} \pmb{+}\pmb{\pi} \pmb{A}_{\pmb{0}} +\end{verbatim} +\begin{equation*} +A_\infty + \pi A_0 +\sim \mathbf{A}_{\boldsymbol{\infty}} \boldsymbol{+} + \boldsymbol{\pi} \mathbf{A}_{\boldsymbol{0}} +\sim\pmb{A}_{\pmb{\infty}} \pmb{+}\pmb{\pi} \pmb{A}_{\pmb{0}} +\end{equation*} +If you want to use only the \cn{boldsymbol} command without loading the +whole \pkg{amsmath} package, the \pkg{bm} package is recommended (this +is a standard \latex/ package, not an AMS package; you probably have it +already if you have a 1997 or newer version of \latex/). + +\section{Italic Greek letters} + +For italic versions of the capital Greek letters, the following commands +are provided: +\begin{ctab}{rlrl} +\cn{varGamma}& $\varGamma$& \cn{varSigma}& $\varSigma$\\ +\cn{varDelta}& $\varDelta$& \cn{varUpsilon}& $\varUpsilon$\\ +\cn{varTheta}& $\varTheta$& \cn{varPhi}& $\varPhi$\\ +\cn{varLambda}& $\varLambda$& \cn{varPsi}& $\varPsi$\\ +\cn{varXi}& $\varXi$& \cn{varOmega}& $\varOmega$\\ +\cn{varPi}& $\varPi$ +\end{ctab} + +\chapter{Error messages and output problems} + +\section{General remarks} + +This is a supplement to Chapter~8 of the \latex/ manual \cite{lamport} (first +edition: Chapter~6). For the reader's convenience, the set of error +messages discussed here overlaps somewhat with the set in that chapter, +but please be aware that we don't provide exhaustive coverage here. +The error messages are arranged in alphabetical order, disregarding +unimportant text such as |! LaTeX Error:| at the beginning, and +nonalphabetical characters such as \qc{\\}. Where examples are given, we +show also the help messages that appear on screen when you respond to an +error message prompt by entering |h|. + +There is also a section discussing some output errors, i.e., instances +where the printed document has something wrong but there was no \latex/ +error during typesetting. + +\section{Error messages} + +\begin{error}{\begin{split} won't work here.} +\errexa +\begin{verbatim} +! Package amsmath Error: \begin{split} won't work here. + ... + +l.8 \begin{split} + +? h +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. +? +\end{verbatim} +\errexpl +The \env{split} environment does not construct a stand-alone displayed +equation; it needs to be used within some other environment such as +\env{equation} or \env{gather}. + +\end{error} + +\begin{error}{Extra & on this line} +\errexa +\begin{verbatim} +! Package amsmath Error: Extra & on this line. + +See the amsmath package documentation for explanation. +Type H <return> for immediate help. + ... + +l.9 \end{alignat} + +? h +\An extra & here is so disastrous that you should probably exit + and fix things up. +? +\end{verbatim} +\errexpl +In an \env{alignat} structure the number of alignment points per line +is dictated by the numeric argument given after |\begin{alignat}|. +If you use more alignment points in a line it is assumed that you +accidentally left out a newline command \cn{\\} and the above error is +issued. +\end{error} + +\begin{error}{Improper argument for math accent} +\errexa +\begin{verbatim} +! Package amsmath Error: Improper argument for math accent: +(amsmath) Extra braces must be added to +(amsmath) prevent wrong output. + +See the amsmath package documentation for explanation. +Type H <return> for immediate help. + ... + +l.415 \tilde k_{\lambda_j} = P_{\tilde \mathcal + {M}} +? +\end{verbatim} +\errexpl +Non-simple arguments for any \LaTeX{} command should be enclosed in +braces. In this example extra braces are needed as follows: +\begin{verbatim} +... P_{\tilde{\mathcal{M}}} +\end{verbatim} +\end{error} + +\begin{error}{Font OMX/cmex/m/n/7=cmex7 not loadable ...} +\errexa +\begin{verbatim} +! Font OMX/cmex/m/n/7=cmex7 not loadable: Metric (TFM) file not found. +<to be read again> + relax +l.8 $a + b+b^2$ +? h +I wasn't able to read the size data for this font, +so I will ignore the font specification. +[Wizards can fix TFM files using TFtoPL/PLtoTF.] +You might try inserting a different font spec; +e.g., type `I\font<same font id>=<substitute font name>'. +? +\end{verbatim} +\errexpl +Certain extra sizes of some Computer Modern fonts that were formerly +available mainly through the AMSFonts\index{AMSFonts collection} +distribution are considered part of standard \latex/ (as of June 1994): +\fn{cmex7}\ndash \texttt{9}, \fn{cmmib5}\ndash \texttt{9}, and +\fn{cmbsy5}\ndash \texttt{9}. If these extra sizes are missing on your +system, you should try first to get them from the source where you +obtained \latex/. If that fails, you could try getting the fonts from +CTAN (e.g., in the form of Metafont\index{Metafont source files} source +files, directory \nfn{/tex-archive/fonts/latex/mf}, or in PostScript +Type 1 format, directory +\nfn{/tex-archive/fonts/cm/ps-type1/bakoma}\index{BaKoMa fonts}\relax +\index{PostScript fonts}). + +If the font name begins with \fn{cmex}, there is a special option +\fn{cmex10} for the \pkg{amsmath} package that provides a temporary +workaround. I.e., change the \cn{usepackage} to +\begin{verbatim} +\usepackage[cmex10]{amsmath} +\end{verbatim} +This will force the use of the 10-point size of the \fn{cmex} font in +all cases. Depending on the contents of your document this may be +adequate. +\end{error} + +\begin{error}{Math formula deleted: Insufficient extension fonts} +\errexa +\begin{verbatim} +! Math formula deleted: Insufficient extension fonts. +l.8 $ab+b^2$ + +? +\end{verbatim} +\errexpl +This usually follows a previous error |Font ... not loadable|; see the +discussion of that error (above) for solutions. +\end{error} + +\begin{error}{Missing number, treated as zero} +\errexa +\begin{verbatim} +! Missing number, treated as zero. +<to be read again> + a +l.100 \end{alignat} + +? h +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +? +\end{verbatim} +\errexpl +There are many possibilities that can lead to this error. However, one +possibility that is relevant for the \pkg{amsmath} package is that you +forgot to give the number argument of an \env{alignat} environment, as +in: +\begin{verbatim} +\begin{alignat} + a& =b& c& =d\\ +a'& =b'& c'& =d' +\end{alignat} +\end{verbatim} +where the first line should read instead +\begin{verbatim} +\begin{alignat}{2} +\end{verbatim} + +Another possibility is that you have a left bracket character |[| +following a linebreak command \cn{\\} in a multiline construction such +as \env{array}, \env{tabular}, or \env{eqnarray}. This will be +interpreted by \latex/ as the beginning of an `additional vertical +space' request \cite[\S C.1.6]{lamport}, even if it occurs on the following +line and is intended to be part of the contents. For example +\begin{verbatim} +\begin{array} +a+b\\ +[f,g]\\ +m+n +\end{array} +\end{verbatim} +To prevent the error message in such a case, you can +add braces as discussed in the \latex/ manual \cite[\S C.1.1]{lamport}: +\begin{verbatim} +\begin{array} +a+b\\ +{[f,g]}\\ +m+n +\end{array} +\end{verbatim} + +\end{error} + +\begin{error}{Missing \right. inserted} +\errexa +\begin{verbatim} +! Missing \right. inserted. +<inserted text> + \right . +l.10 \end{multline} + +? h +I've inserted something that you may have forgotten. +(See the <inserted text> above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. +\end{verbatim} +\errexpl +This error typically arises when you try to insert a linebreak inside a +\cn{left}-\cn{right} pair of delimiters in a \env{multline} or +\env{split} environment: +\begin{verbatim} +\begin{multline} +AAA\left(BBB\\ + CCC\right) +\end{multline} +\end{verbatim} +There are two possible solutions: (1)~instead of using \cn{left} and +\cn{right}, use `big' delimiters of fixed size (\cn{bigl} \cn{bigr} +\cn{biggl} \cn{biggr} \dots; see \secref{bigdel}); or (2)~use null +delimiters to break up the \cn{left}-\cn{right} pair into parts for each +line: +\begin{verbatim} +AAA\left(BBB\right.\\ + \left.CCC\right) +\end{verbatim} +The latter solution may result in mismatched delimiter sizes; +ensuring that they match requires using \cn{vphantom} in the line +that has the smaller delimiter (or possibly \cn{smash} in the line that +has the larger delimiter). In the argument of \cn{vphantom} put a copy +of the tallest element that occurs in the other line, e.g., +\begin{verbatim} +xxx \left(\int_t yyy\right.\\ + \left.\vphantom{\int_t} zzz ... \right) +\end{verbatim} +\end{error} + +\begin{error}{Paragraph ended before \xxx was complete} +\errexa +\begin{verbatim} +Runaway argument? + +! Paragraph ended before \multline was complete. +<to be read again> + \par +l.100 + +? h +I suspect you've forgotten a `}', causing me to apply this +control sequence to too much text. How can we recover? +My plan is to forget the whole thing and hope for the best. +? +\end{verbatim} +\errexpl +This might be produced by a misspelling in the |\end{multline}| command, +e.g., +\begin{verbatim} +\begin{multline} +... +\end{multiline} +\end{verbatim} +or by using abbreviations for certain environments, such as |\bal| and +|\eal| for |\begin{align}| and |\end{align}|: +\begin{verbatim} +\bal +... +\eal +\end{verbatim} +For technical reasons that kind of abbreviation does not work with +the more complex displayed equation environments of the \pkg{amsmath} package +(\env{gather}, \env{align}, \env{split}, etc.; cf.\@ \fn{technote.tex}). +\end{error} + +\begin{error}{Runaway argument?} +See the discussion for the error message +\texttt{Paragraph ended before \ncn{xxx} was complete}. +\end{error} + +\begin{error}{Unknown option `xxx' for package `yyy'} +\errexa +\begin{verbatim} +! LaTeX Error: Unknown option `intlim' for package `amsmath'. +... +? h +The option `intlim' was not declared in package `amsmath', perhaps you +misspelled its name. Try typing <return> to proceed. +? +\end{verbatim} +\errexpl +This means that you misspelled the option name, or the package simply +does not have an option that you expected it to have. Consult the +documentation for the given package. +\end{error} + +\begin{error}{Old form `\pmatrix' should be \begin{pmatrix}.} +\errexa +\begin{verbatim} +! Package amsmath Error: Old form `\pmatrix' should be + \begin{pmatrix}. + +See the amsmath package documentation for explanation. +Type H <return> for immediate help. + ... + +\pmatrix ->\left (\matrix@check \pmatrix + \env@matrix +l.16 \pmatrix + {a&b\cr c&d\cr} +? h +`\pmatrix{...}' is old Plain-TeX syntax whose use is +ill-advised in LaTeX. +? +\end{verbatim} +\errexpl +When the \pkg{amsmath} package is used, the old forms of \cn{pmatrix}, +\cn{matrix}, and \cn{cases} cannot be used any longer because of naming +conflicts. Their syntax did not conform with standard \LaTeX{} syntax +in any case. +\end{error} + +\begin{error}{Erroneous nesting of equation structures} +\errexa +\begin{verbatim} +! Package amsmath Error: Erroneous nesting of equation structures; +(amsmath) trying to recover with `aligned'. + +See the amsmath package documentation for explanation. +Type H <return> for immediate help. + ... + +l.260 \end{alignat*} + \end{equation*} +\end{verbatim} +\errexpl +The structures \env{align}, \env{alignat}, etc., are designed +for top-level use and for the most part cannot be nested inside some +other displayed equation structure. The chief exception is that +\env{align} and most of its variants can be used inside the +\env{gather} environment. +\end{error} + +\section{Warning messages} + +\begin{error}{Foreign command \over [or \atop or \above]} +\errexa +\begin{verbatim} +Package amsmath Warning: Foreign command \over; \frac or \genfrac +(amsmath) should be used instead. +\end{verbatim} +\errexpl The primitive generalized fraction commands of \tex/\mdash +\cs{over}, \cs{atop}, \cs{above}\mdash are deprecated when the +\pkg{amsmath} package is used because their syntax is foreign to \latex/ +and \pkg{amsmath} provides native \latex/ equivalents. See +\fn{technote.tex} for further information. +\end{error} + +\begin{error}{Cannot use `split' here} +\errexa +\begin{verbatim} +Package amsmath Warning: Cannot use `split' here; +(amsmath) trying to recover with `aligned' +\end{verbatim} +\errexpl The \env{split} environment is designed to serve as the entire +body of an equation, or an entire line of an \env{align} or \env{gather} +environment. There cannot be any printed material before or +after it within the same enclosing structure: +\begin{verbatim} +\begin{equation} +\left\{ % <-- Not allowed +\begin{split} +... +\end{split} +\right. % <-- Not allowed +\end{equation} +\end{verbatim} +\end{error} + +\section{Wrong output} + +\subsection{Section numbers 0.1, 5.1, 8.1 instead of 1, 2, 3} +\label{numinverse} + +This most likely means that you have the arguments for \cn{numberwithin} +in reverse order: +\begin{verbatim} +\numberwithin{section}{equation} +\end{verbatim} +That means `print the section number as \textit{equation +number}.\textit{section number} and reset to 1 every time an equation +occurs' when what you probably wanted was the inverse +\begin{verbatim} +\numberwithin{equation}{section} +\end{verbatim} + +\subsection{The \cn{numberwithin} command had no effect on equation +numbers} + +Are you looking at the first section in your document? Check the section +numbers elsewhere to see if the problem is the one described in +\secref{numinverse}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\chapter{Additional information} + +\section{Converting existing documents} + +\subsection{Converting from plain \LaTeX{}} + +A \LaTeX{} document will typically continue to work the same in most +respects if \verb'\usepackage{amsmath}' is added in the document +preamble. By default, however, the \pkg{amsmath} package suppresses page +breaks inside multiple-line displayed equation structures such as +\env{eqnarray}, \env{align}, and \env{gather}. To continue allowing page +breaks inside \env{eqnarray} after switching to \pkg{amsmath}, you will +need to add the following line in your document preamble: +\begin{verbatim} +\allowdisplaybreaks[1] +\end{verbatim} +To ensure normal spacing around relation symbols, you might also want to +change \env{eqnarray} to \env{align}, \env{multline}, or +\env{equation}\slash\env{split} as appropriate. + +Most of the other differences in \pkg{amsmath} usage can be considered +optional refinements, e.g., using +\begin{verbatim} +\DeclareMathOperator{\Hom}{Hom} +\end{verbatim} +instead of \verb'\newcommand{\Hom}{\mbox{Hom}}'. + +\subsection{Converting from \amslatex/ 1.1} +See \fn{diffs-m.txt}. + +\section{Technical notes} +The file \fn{technote.tex} contains some remarks on miscellaneous +technical questions that are less likely to be of general interest. + +\section{Getting help} + +Questions or comments regarding \pkg{amsmath} and related packages +should be sent to: +\begin{infoaddress} +American Mathematical Society\\ +Technical Support\\ +Electronic Products and Services\\ +P. O. Box 6248\\ +Providence, RI 02940\\[3pt] +Phone: 800-321-4AMS (321-4267) \quad or \quad 401-455-4080\\ +Internet: \mail{tech-support@ams.org} +\end{infoaddress} +If you are reporting a problem you should include +the following information to make proper investigation possible: +\begin{enumerate} +\item The source file where the problem occurred, preferably reduced + to minimum size by removing any material that can be removed without + affecting the observed problem. +\item A \latex/ log file showing the error message (if applicable) and + the version numbers of the document class and option files being used. +\end{enumerate} + +\section{Of possible interest}\label{a:possible-interest} +Information about obtaining AMSFonts or other \tex/-related +software from the AMS Internet archive \fn{e-math.ams.org} +can be obtained by sending a request through electronic mail to: +\mail{webmaster@ams.org}. + +Information about obtaining the \pkg{amsmath} distribution on diskette +from the AMS is available from: +\begin{infoaddress} +American Mathematical Society\\ +Customer Services\\ +P. O. Box 6248\\ +Providence, RI 02940\\[3pt] +Phone: 800-321-4AMS (321-4267) \quad or \quad 401-455-4000\\ +Internet: \mail{cust-serv@ams.org} +\end{infoaddress} + +The \tex/ Users Group\index{TeX Users@\tex/ Users Group} is a nonprofit +organization that publishes a journal +(\journalname{TUGboat}\index{TUGboat@\journalname{TUGboat}}), holds +meetings, and serves as a clearing-house of general information about +\tex/ and \tex/-related software. +\begin{infoaddress} +\tex/ Users Group\\ +PO Box 2311\\ +Portland, OR 97208-2311\\ +USA\\[3pt] +Phone: +1-503-223-9994\\ +Email: \mail{office@tug.org} +\end{infoaddress} +Membership in the \tex/ Users Group is a good way to support continued +development of free \tex/-related software. There are also many local +\tex/ user groups in other countries; information about contacting a +local user group can be gotten from the \tex/ Users Group. + +There is a Usenet newsgroup called \fn{comp.text.tex} that is a fairly +good source of information about \latex/ and \tex/ in general. If you +don't know about reading newsgroups, check with your local system +administrator to see if newsgroup service is available at your site. + +\begin{thebibliography}{9} +\addcontentsline{toc}{chapter}{Bibliography} + +\bibitem{amsfonts}\booktitle{AMSFonts version \textup{2.2}\mdash user's guide}, +Amer. Math. Soc., Providence, RI, 1994; distributed +with the AMSFonts package. + +\bibitem{instr-l}\booktitle{Instructions for preparation of +papers and monographs\mdash \amslatex/}, +Amer. Math. Soc., Providence, RI, 1996, 1999. + +\bibitem{amsthdoc}\booktitle{Using the \pkg{amsthm} Package}, +Amer. Math. Soc., Providence, RI, 1999. + +\bibitem{tlc} Michel Goossens, Frank Mittelbach, and Alexander Samarin, +\booktitle{The \latex/ companion}, Addison-Wesley, Reading, MA, 1994. + [\emph{Note: The 1994 edition is not a reliable guide for the + \pkg{amsmath} package unless you refer to the errata for Chapter + 8\mdash file \fn{compan.err}, distributed with \LaTeX{}.}] + +% Deal with a line breaking problem +\begin{raggedright} +\bibitem{mil} G. Gr\"{a}tzer, +\emph{Math into \LaTeX{}: An Introduction to \LaTeX{} and AMS-\LaTeX{}} + \url{http://www.ams.org/cgi-bin/bookstore/bookpromo?fn=91&arg1=bookvideo&itmc=MLTEX}, +Birkh\"{a}user, Boston, 1995.\par +\end{raggedright} + +\bibitem{kn} Donald E. Knuth, \booktitle{The \tex/book}, +Addison-Wesley, Reading, MA, 1984. + +\bibitem{lamport} Leslie Lamport, \booktitle{\latex/: A document preparation +system}, 2nd revised ed., Addison-Wesley, Reading, MA, 1994. + +\bibitem{msf} Frank Mittelbach and Rainer Sch\"opf, +\textit{The new font family selection\mdash user +interface to standard \latex/}, \journalname{TUGboat} \textbf{11}, +no.~2 (June 1990), pp.~297\ndash 305. + +\bibitem{jt} Michael Spivak, \booktitle{The joy of \tex/}, 2nd revised ed., +Amer. Math. Soc., Providence, RI, 1990. + +\end{thebibliography} + +\begin{theindex} + + \item {\normalfont \ttfamily \bslchar \qcbang }, 11 + \item \verb*+\,+, 11 + \item \verb*+\:+, 11 + \item \verb*+\;+, 11 + \item \verb*+\\+, 3, 5, 6, 8, 9, 24, 26 + \item \verb*+\\*+, 9 + \item \verb*+\|+, 16 + + \indexspace + + \item \verb*+\above+, 14, 29 + \item \verb*+\abovewithdelims+, 14 + \item \verb*+\accentedsymbol+, 2 + \item \texttt{accents} package, 12 + \item \verb*+\addtocounter+, 10 + \item \verb*+\addtolength+, 5 + \item \texttt{align} environment, 3, 5--7, 28--30 + \item \texttt{alignat} environment, 7, 24, 26, 29 + \item \texttt{aligned} environment, 7, 9 + \item \texttt{alignedat} environment, 7, 9 + \item \verb*+\allowdisplaybreaks+, 8, 9 + \item \texttt{amsart} class, 1 + \item \texttt{amsbook} class, 1 + \item \texttt{amsbsy} package, 1, 2 + \item \texttt{amscd} package, 1, 2, 20 + \item \texttt{amsfonts} package, 21 + \item AMSFonts collection, 25 + \item \texttt{amsmath} package, i, 1--3, 5, 8--18, 22, 23, 25, 26, + 28--32 + \item \texttt{amsopn} package, 1, 2 + \item \texttt{amssymb} package, 22 + \item \texttt{amstext} package, 1, 2 + \item \texttt{amsthm} package, 1, 32 + \item \texttt{amsxtra} package, 1, 2, 12 + \item \verb*+\arccos+, 18 + \item \verb*+\arcsin+, 18 + \item \verb*+\arctan+, 18 + \item \verb*+\arg+, 18 + \item \texttt{array} environment, 8, 10, 26 + \item arrows + \subitem extensible, 13 + \subitem in commutative diagrams, 20 + \item \verb*+\atop+, 14, 29 + \item \verb*+\atopwithdelims+, 14 + + \indexspace + + \item BaKoMa fonts, 25 + \item \cn{big}, \cn{Big}, \cn{bigg}, \dots\ delimiters, 16 + \item \verb*+\biggl+, 27 + \item \verb*+\biggr+, 27 + \item \verb*+\bigl+, 27 + \item \verb*+\bigr+, 27 + \item \verb*+\binom+, 14 + \item binomials, 14 + \item \texttt{bm} package, 2, 23 + \item \texttt{Bmatrix} environment, 10 + \item \texttt{bmatrix} environment, 10 + \item \verb*+\bmod+, 18 + \item \verb*+\boldsymbol+, 22, 23 + \item \verb*+\boxed+, 13 + + \indexspace + + \item \verb*+\C+, 22 + \item \texttt{cases} environment, 8 + \item \verb*+\cases+, 28 + \item \texttt{CD} environment, 2, 21 + \item \verb*+\cdots+, 12 + \item \texttt{centertags} option, 2 + \item \verb*+\cfrac+, 15 + \item \texttt{cmbsy5}, 25 + \item \texttt{cmex}, 25 + \item \texttt{cmex10}, 25 + \item \texttt{cmex7}, 25 + \item \texttt{cmmib5}, 25 + \item \texttt{comp.text.tex}, 31 + \item \texttt{compan.err}, 32 + \item continued fractions, 15 + \item \verb*+\cos+, 18 + \item \verb*+\cosh+, 18 + \item \verb*+\cot+, 18 + \item \verb*+\coth+, 18 + \item \verb*+\csc+, 18 + + \indexspace + + \item \verb*+\dbinom+, 14 + \item \verb*+\ddddot+, 12 + \item \verb*+\dddot+, 12 + \item \verb*+\ddot+, 12 + \item \verb*+\DeclareMathOperator+, 2, 17, 18 + \item \verb*+\deg+, 18 + \item \verb*+\det+, 18 + \item \verb*+\dfrac+, 14 + \item \texttt{diffs-m.txt}, 30 + \item \verb*+\dim+, 18 + \item \verb*+\displaybreak+, 8, 9 + \item displayed equations, 3 + \item displayed equations + \subitem centering, 3 + \item \verb*+\displaylimits+, 20 + \item \texttt{displaymath} environment, 3 + \item \verb*+\displaystyle+, 14 + \item \verb*+\documentclass+, 2 + \item \verb*+\dot+, 12 + \item dots, \see{ellipsis dots}{11} + \item \verb*+\dotsb+, 12 + \item \verb*+\dotsc+, 12 + \item \verb*+\dotsi+, 12 + \item \verb*+\dotsm+, 12 + \item \verb*+\dotso+, 12 + + \indexspace + + \item \texttt{e-math.ams.org}, 31 + \item ellipsis dots + \subitem in matrices, 11 + \item \texttt{eqnarray} environment, 1, 3, 26, 30 + \item \verb*+\eqref+, 10 + \item \texttt{equation} environment, 1, 3, 5, 7, 24, 30 + \item equation numbers + \subitem cross-references, 10 + \subitem hierarchy, 9 + \subitem left or right placement, 3 + \subitem overriding, 3 + \subitem subordinate numbering, 10 + \subitem vertical placement, 2 + \item \texttt{equation*} environment, 3 + \item equations, \see{displayed equations}{3} + \item \texttt{euscript} package, 21 + \item \verb*+\exp+, 18 + + \indexspace + + \item \verb*+\fbox+, 13 + \item \texttt{fleqn} option, 3, 5 + \item \texttt{fntguide.tex}, 21 + \item \verb*+\frac+, 14, 15 + \item fractions, 14 + \item \verb*+\fracwithdelims+, 2 + \item function names, \see{operator names}{17} + + \indexspace + + \item \texttt{gather} environment, 5--7, 24, 28--30 + \item \texttt{gathered} environment, 7, 9 + \item \verb*+\gcd+, 18 + \item \verb*+\genfrac+, 14 + + \indexspace + + \item \verb*+\hat+, 12 + \item \verb*+\hdotsfor+, 11 + \item \verb*+\hom+, 18 + \item horizontal space + \subitem around operator names, 17 + \subitem in math mode, 11 + + \indexspace + + \item \verb*+\idotsint+, 20 + \item \verb*+\iiiint+, 20 + \item \verb*+\iiint+, 20 + \item \verb*+\iint+, 20 + \item \verb*+\inf+, 18 + \item \verb*+\injlim+, 18 + \item integrals + \subitem multiple, 20 + \subitem placement of limits, 2 + \item \verb*+\intertext+, 9 + \item \texttt{intlimits} option, 2, 20 + + \indexspace + + \item \verb*+\ker+, 18 + \item \texttt{kuvio} package, 20 + + \indexspace + + \item \verb*+\label+, 6, 10 + \item \verb*+\langle+, 16 + \item \verb*+\ldots+, 12 + \item \verb*+\left+, 15, 16, 27 + \item \verb*+\leftroot+, 13 + \item \texttt{leqno} option, 3, 5 + \item \verb*+\lg+, 18 + \item \verb*+\lim+, 1, 2, 17, 18 + \item \verb*+\liminf+, 18 + \item limits, \see{subscripts and superscripts}{2} + \item \verb*+\limits+, 20 + \item \verb*+\limsup+, 18 + \item \verb*+\ln+, 18 + \item \verb*+\log+, 17, 18 + \item \verb*+\lVert+, 16 + \item \verb*+\lvert+, 16 + + \indexspace + + \item math fonts, 21 + \item math symbols, \see{math fonts}{21} + \item \verb*+\mathbb+, 21, 22 + \item \verb*+\mathbf+, 21, 22 + \item \verb*+\mathcal+, 21 + \item \verb*+\mathfrak+, 21 + \item \verb*+\mathit+, 21 + \item \verb*+\mathrm+, 21 + \item \verb*+\mathscr+, 21 + \item \verb*+\mathsf+, 21 + \item \verb*+\mathtt+, 21 + \item matrices, 10 + \subitem ellipsis dots, 11 + \item \texttt{matrix} environment, 10 + \item \verb*+\matrix+, 28 + \item \verb*+\max+, 18 + \item \verb*+\mbox+, 18 + \item \verb*+\medspace+, 11 + \item Metafont source files, 25 + \item \verb*+\min+, 18 + \item \verb*+\mod+, 18 + \item \verb*+\mspace+, 11 + \item \texttt{multline} environment, 3, 5, 27, 30 + \item \verb*+\multlinegap+, 5 + + \indexspace + + \item \texttt{namelimits} option, 2 + \item \verb*+\negmedspace+, 11 + \item \verb*+\negthickspace+, 11 + \item \verb*+\negthinspace+, 11 + \item \verb*+\newcommand+, 21 + \item \verb*+\nobreakdash+, 12 + \item \texttt{nointlimits} option, 2 + \item \verb*+\nolimits+, 19, 20 + \item \texttt{nonamelimits} option, 2 + \item \texttt{nosumlimits} option, 2 + \item \verb*+\notag+, 3, 5 + \item \verb*+\numberwithin+, 9, 29, 30 + + \indexspace + + \item operator names, 17 + \item \verb*+\operatorname+, 18 + \item \verb*+\operatorname*+, 18 + \item \verb*+\over+, 14, 29 + \item \verb*+\overleftarrow+, 13 + \item \verb*+\overleftrightarrow+, 13 + \item \verb*+\overrightarrow+, 13 + \item \verb*+\overset+, 13 + \item \verb*+\overwithdelims+, 14 + + \indexspace + + \item page breaks, 8 + \item \verb*+\pagebreak+, 8 + \item \texttt{pmatrix} environment, 10 + \item \verb*+\pmatrix+, 28 + \item \verb*+\pmb+, 22 + \item \verb*+\pmod+, 18 + \item \verb*+\pod+, 18 + \item PostScript fonts, 25 + \item \verb*+\Pr+, 18 + \item \verb*+\projlim+, 18 + + \indexspace + + \item \verb*+\qquad+, 11 + \item \verb*+\quad+, 11 + + \indexspace + + \item \verb*+\R+, 22 + \item \verb*+\raisetag+, 8 + \item \verb*+\rangle+, 16 + \item \verb*+\ref+, 10 + \item \texttt{reqno} option, 3, 5 + \item \verb*+\right+, 15, 16, 27 + \item \verb*+\rVert+, 16 + \item \verb*+\rvert+, 16 + + \indexspace + + \item \verb*+\scriptscriptstyle+, 14 + \item \verb*+\scriptstyle+, 14 + \item \verb*+\sec+, 18 + \item \verb*+\setcounter+, 9, 10 + \item \verb*+\setlength+, 5 + \item \verb*+\shoveleft+, 5 + \item \verb*+\shoveright+, 5 + \item \verb*+\sideset+, 13, 19 + \item \verb*+\sin+, 1, 2, 17, 18 + \item \verb*+\sinh+, 18 + \item \texttt{smallmatrix} environment, 11 + \item \verb*+\smash+, 15, 27 + \item \verb*+\sphat+, 12 + \item \texttt{split} environment, 3, 5, 6, 9, 24, 27--30 + \item \verb*+\sptilde+, 12 + \item \verb*+\stackrel+, 13 + \item \texttt{subarray} environment, 19 + \item \texttt{subeqn.tex}, 3 + \item \texttt{subequations} environment, 10 + \item subscripts and superscripts, 13 + \subitem multi-line, 19 + \subitem on sums, 19 + \subitem placement, 2 + \item \verb*+\substack+, 19 + \item \verb*+\sum+, 20, 22 + \item \texttt{sumlimits} option, 2 + \item \verb*+\sup+, 18 + \item superscripts, \see{subscripts and superscripts}{19} + + \indexspace + + \item \texttt{tabular} environment, 26 + \item \verb*+\tag+, 3 + \item \verb*+\tag*+, 3 + \item \verb*+\tan+, 18 + \item \verb*+\tanh+, 18 + \item \verb*+\tbinom+, 14 + \item \texttt{tbtags} option, 2 + \item \texttt{technote.tex}, 14, 28--30 + \item \texttt{testmath.tex}, 3 + \item \tex/ Users Group, 31 + \item \verb*+\text+, 2, 7--9, 18 + \item text fragments inside math, 9, 18 + \item \verb*+\textstyle+, 14 + \item \verb*+\tfrac+, 14 + \item \verb*+\theequation+, 9, 10 + \item \verb*+\thickspace+, 11 + \item \verb*+\thinspace+, 11 + \item \journalname{TUGboat}, 31 + + \indexspace + + \item \verb*+\underleftarrow+, 13 + \item \verb*+\underleftrightarrow+, 13 + \item \verb*+\underrightarrow+, 13 + \item \verb*+\underset+, 13 + \item \verb*+\uproot+, 13 + \item \verb*+\usepackage+, 2, 25 + + \indexspace + + \item \verb*+\value+, 10 + \item \verb*+\varDelta+, 23 + \item \verb*+\varGamma+, 23 + \item \verb*+\varinjlim+, 18 + \item \verb*+\varLambda+, 23 + \item \verb*+\varliminf+, 18 + \item \verb*+\varlimsup+, 18 + \item \verb*+\varOmega+, 23 + \item \verb*+\varPhi+, 23 + \item \verb*+\varPi+, 23 + \item \verb*+\varprojlim+, 18 + \item \verb*+\varPsi+, 23 + \item \verb*+\varSigma+, 23 + \item \verb*+\varTheta+, 23 + \item \verb*+\varUpsilon+, 23 + \item \verb*+\varXi+, 23 + \item \texttt{Vmatrix} environment, 10 + \item \texttt{vmatrix} environment, 10 + \item \verb*+\vphantom+, 27 + + \indexspace + + \item \verb*+\xleftarrow+, 13 + \item \verb*+\xrightarrow+, 13 + +\end{theindex} + +\end{document} diff --git a/Master/texmf-dist/source/latex/amsmath/amsmath.dtx b/Master/texmf-dist/source/latex/amsmath/amsmath.dtx new file mode 100644 index 00000000000..9810bc283f0 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsmath.dtx @@ -0,0 +1,5829 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsmath.dtx", +%%% version = "2.13", +%%% date = "2000/07/18", +%%% time = "08:16:41 EDT", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 2000 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Publications Technical Group, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "38084 5829 21569 202795", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, amslatex, math, amsmath", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that provides a variety of +%%% extra mathematical features, largely derived from +%%% AMS-\TeX{}.", +%%% docstring = "The checksum field above contains a CRC-16 checksum +%%% as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of +%%% lines, words, and characters. This is produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% +%\iffalse +%<*driver> +\documentclass{amsdtx} +\raggedbottom +\begin{document} +\title{The \pkg{amsmath} package} +\author{Frank Mittelbach\and Rainer Sch\"opf\and Michael Downes\and + David M. Jones} +\date{Version \fileversion, \filedate} +\providecommand{\histnote}{} +\renewenvironment{histnote}{% + \trivlist\item[\hspace{\labelsep}\bfseries Historical Note:]% +}{% + \endtrivlist +} +\hDocInput{amsmath.dtx} +\end{document} +%</driver> +%\fi +% +% \maketitle +% +% \MakeShortVerb\| +% +% \section{Introduction} +% +% A \latex/ package named \pkg{amstex} was created in 1988--1989 by +% adapting \fn{amstex.tex} for use within \latex/. The \pkg{amsmath} +% package is the successor of the \pkg{amstex} package. It was +% substantially overhauled to integrate it with \latex/2e, which +% arrived on the scene in 1994. It provides more or less the same +% features, but there are quite a few organizational differences as +% well as some new features and bug fixes. For example, the +% \pkg{amstex} package automatically loaded the \pkg{amsfonts} +% package, but the \pkg{amsmath} package does not. At the present +% time (November 1999) user-level documentation of the commands +% provided here is found in the AMSmath Users' Guide, +% \fn{amsldoc.tex}. +% +% \StopEventually{} +% +% Standard file identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must be December 1994 or later +\ProvidesPackage{amsmath}[2000/07/18 v2.13 AMS math features] +% \end{macrocode} +% +% \section{Catcode defenses} +% +% Some packages change the catcode of characters that are essential +% in low-level \tex/ syntax. Any package that does so does not +% qualify as a PWWO package (\qq{Plays Well With Others}) because it +% can cause other packages to fail if they are loaded later. \LaTeX{} +% is partly to blame for this because it fails to provide adequate +% built-in safeguards in the package loading mechanisms. In the +% absence of such safeguards, we will provide them here. +% \begin{macrocode} +\edef\@temp{\catcode 96=\number\catcode 96 } +\catcode\string `\`=12 +\def\do#1{\catcode\number`#1=\number\catcode`#1} +\edef\@temp{% + \noexpand\AtEndOfPackage{% + \@temp + \do\"\do\'\do\(\do\)\do\*\do\+\do\,\do\-\do\.% + \do\/\do\<\do\=\do\>\do\[\do\]\do\^\do\_\relax + }% +} +\@temp +\def\do#1{\catcode\number`#1=12 } +\do\"\do\'\do\(\do\)\do\*\do\+\do\,\do\-\do\. +\do\/\do\<\do\=\do\>\do\[\do\] +\catcode`\^=7 \catcode`\_=8 +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Declare some options} +% +% Handling of limits on integrals, sums, operatornames. +% \begin{macrocode} +\DeclareOption{intlimits}{\let\ilimits@\displaylimits} +\DeclareOption{nointlimits}{\let\ilimits@\nolimits} +\DeclareOption{sumlimits}{\let\slimits@\displaylimits} +\DeclareOption{nosumlimits}{\let\slimits@\nolimits} +\DeclareOption{namelimits}{\PassOptionsToPackage{namelimits}{amsopn}} +\DeclareOption{nonamelimits}{% + \PassOptionsToPackage{nonamelimits}{amsopn}} +% \end{macrocode} +% +% The following two switches might have been defined already by the +% documentclass, but it doesn't hurt to re-execute the \cs{newif}'s. +% \begin{macrocode} +\newif\ifctagsplit@ +\newif\iftagsleft@ +% \end{macrocode} +% Right or left placement of equation numbers. +% \begin{macrocode} +\DeclareOption{leqno}{\tagsleft@true} +\DeclareOption{reqno}{\tagsleft@false} +\DeclareOption{centertags}{\ctagsplit@true} +\DeclareOption{tbtags}{\ctagsplit@false} +% \end{macrocode} +% +% The \opt{cmex10} option is an escape hatch for people who don't +% happen to have sizes 7--9 of the \fn{cmex} fonts available to them +% yet. (Strictly speaking they are considered part of a minimum +% \latex/ distribution now, i.e., all \LaTeXe{} users should have +% them, without needing to get the AMSFonts distrib.) +% \begin{macrocode} +\DeclareOption{cmex10}{% + \ifnum\cmex@opt=\@ne \def\cmex@opt{0}% + \else \def\cmex@opt{10}\fi +} +% \end{macrocode} +% To help things work out better with various package loading orders +% of \pkg{amsmath} and \pkg{amsfonts}, we establish a variable to +% communicate the status of the cmex font definition. If the +% \pkg{amsfonts} package was loaded first this variable might be +% already defined, in which case we want to preserve its value. +% \begin{macrocode} +\@ifundefined{cmex@opt}{\def\cmex@opt{7}}{} +% \end{macrocode} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Flush-left equations [DMJ]} +% +% The left margin of math enviroments is controlled by +% \cs{@mathmargin}. This can be set to \cs{@centering} to +% implement the default behaviour, i.e., centered equations, and to +% something else to implement the flushleft style. +% +% In theory, all that's needed to activate the flushleft mode +% in the AMS document classes is something like this: +% \begin{verbatim} +% \DeclareOption{fleqn}{% +% \AtBeginDocument{\@mathmargin30pt\relax}% +% } +% \end{verbatim} +% (In fact, unless the document class wants to specify the +% \cs{@mathmargin}, it doesn't need to do anything with the +% \opt{fleqn} option.) +% \begin{macrocode} +\newif\if@fleqn +% +\newskip\@mathmargin +\@mathmargin\@centering +% +\DeclareOption{fleqn}{% + \@fleqntrue + \@mathmargin = -1sp + \let\mathindent=\@mathmargin + \AtBeginDocument{% + \ifdim\@mathmargin= -1sp + \@mathmargin\leftmargini minus\leftmargini + \fi + }% +} +% \end{macrocode} +% +% DMJ: This ensures that \cs{@mathmargin} is given some sort of +% sensible default if the class doesn't specify one, while still +% allowing a user to override the default value in their document +% preamble. (Incidentally, I'm initializing \cs{@mathmargin} to +% \cs{leftmargini} for compatibility with \fn{fleqn.clo}, but I'm +% not at all convinced that's the right thing to do.) +% +% The next question is what happens when amsmath is used with +% one of the standard classes. Unfortunately, \latex/ implements +% \opt{fleqn} somewhat clumsily; instead of paramaterizing the +% definitions of the math structures (as I've attempted to do +% here), \fn{fleqn.clo} declares a dimen \cn{mathindent} that is +% much like my \cs{@mathmargin} and then redefines \cn\[, \cn\], +% \cn{equation}, and \cn{eqnarray}. This means that things could +% get rather messy in 2.09 compatibility mode, since \fn{fleqn.clo} +% might be loaded after \fn{amsmath.sty}, which could cause a real +% mess. +% +% [mjd,1999/07/07]: Let \cs{mathindent} = \cs{@mathmargin} as +% envisioned by DMJ. Compatibility-mode documents will all use the +% \pkg{amstex} package, not \pkg{amsmath}. There is a remote chance +% of a problem if someone makes an assignment to \cs{mathindent} in a +% way that implicitly assumes it is a dimen register (inasmuch as it +% has now become a skip register), and the string ``plus'' follows in +% the input stream, but if someone's document croaks in that way, I +% think they will just have to bite the bullet and fix it. The +% alternative is to penalize a lot of other users with a known +% handicap. +% +% \begin{macrocode} +\DeclareOption{?}{} +% \end{macrocode} +% +% \begin{macrocode} +\ExecuteOptions{nointlimits,sumlimits,namelimits,centertags} +% \end{macrocode} +% The \cs{par} after \cs{ProcessOptions} is to ensure the correct +% line number on screen if an error occurs during option processing; +% otherwise the lookahead for a \qc{\*} option would result in \tex/ +% showing the following line instead. +% \begin{macrocode} +\ProcessOptions\par +% \end{macrocode} +% +% \begin{macrocode} +\@ifpackagewith{amsmath}{?}{% + \typeout{^^J% +Documentation for the amsmath package is found in amsldoc.dvi^^J% +(or .pdf or .tex).^^J% +^^J% +See also http://www.ams.org/tex/amslatex.html.^^J% +^^J% +Note: Using the first edition of The LaTeX Companion (1994) without^^J% +errata as a guide for amsmath use is not recommended.^^J% + }% +}{% + \typeout{% +For additional information on amsmath, use the \lq ?\rq\space option.% + }% +} +% \end{macrocode} +% +% Processing to handle the \opt{cmex10} option is a little tricky +% because of different possible loading orders for \pkg{amsmath} and +% \pkg{amsfonts}. The package \pkg{amsmath} sets the \cs{cmex@opt} +% flag to 7 or 10, and the package \pkg{amsfonts} sets the flag to 1 +% or 0. +% \begin{macrocode} +\ifnum\cmex@opt=7 \relax + \DeclareFontShape{OMX}{cmex}{m}{n}{% + <-8>cmex7<8>cmex8<9>cmex9% + <10><10.95><12><14.4><17.28><20.74><24.88>cmex10% + }{}% + \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax +\else + \ifnum\cmex@opt=\z@ % need to override cmex7 fontdef from amsfonts +% \end{macrocode} +% Force reloading of the OMX/cmex font definition file. +% \begin{macrocode} + \begingroup + \fontencoding{OMX}\fontfamily{cmex}% + \expandafter\let\csname OMX+cmex\endcsname\relax + \try@load@fontshape + \endgroup +% \end{macrocode} +% The \fn{cmex10} font gets special preload handling in the building +% of the \latex/ format file, need an extra bit here to work around +% that. +% \begin{macrocode} + \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax + \def\cmex@opt{10}% + \fi +\fi +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Call some other packages} +% +% The \pkg{amstext} package provides the \cn{text} command. The +% \pkg{amsbsy} package provides \cn{boldsymbol} and \cn{pmb}. (Since +% 1997 it is usually better to use the \pkg{bm} package instead; but +% I think we have to keep \pkg{amsbsy} here for backward +% compatibility [mjd,1999/11/19].) The \pkg{amsopn} package provides +% \cn{DeclareMathOperator}. +% \begin{macrocode} +\RequirePackage{amstext}[1995/01/25] +\RequirePackage{amsbsy}[1995/01/20] +\RequirePackage{amsopn}[1995/01/20] +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Miscellaneous} +% +% \begin{macro}{\@amsmath@err} +% Defining this error function saves main mem. +% \begin{macrocode} +\def\@amsmath@err{\PackageError{amsmath}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AmS} +% The \cs{AmS} prefix can be used to construct the combination +% |\AmS-\LaTeX|. +% \begin{macrocode} +\providecommand{\AmS}{{\protect\AmSfont + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +% \end{macrocode} +% In \cn{AmSfont} we call cmsy directly in lieu of trying to access +% it through the math fonts setup (e.g. |\the\textfont2|) because +% math fonts can't be relied on to be properly set up if we are not +% inside a math formula. This means that if this command is used in a +% document where CM fonts are not wanted, then a font substitution +% will need to be declared, e.g.: +% \begin{verbatim} +% \DeclareFontShape{OMS}{cmsy}{m}{n}{ <-> sub * xxx/m/n }{} +% \end{verbatim} +% where |xxx| is some alternate font family. +% Taking the first letter of \cs{f@series} will produce |b| or |m| +% for the most common values (|b,bx,m|). It may produce nonsense for +% more unusual values of \cs{f@series}, so for safety's sake we have +% an additional \cs{if} test. We want to avoid setting the series to +% |bx| because in a standard \latex/ installation the combination +% |cmsy/bx/n| does not have a font definition, and the user +% would get a font substitution warning on screen. +% \begin{macrocode} +\newcommand{\AmSfont}{% + \usefont{OMS}{cmsy}{\if\@xp\@car\f@series\@nil bb\else m\fi}{n}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@mathmeasure} +% The function |\@mathmeasure| takes three arguments; the third arg +% is typeset as a math formula in an hbox, using arg |#2| as the +% mathstyle, and the result is left in the box named by the first +% arg. It is assumed that we are already in math mode, so we can turn +% off |\everymath| (in particular, |\check@mathfonts|). +% \begin{macrocode} +\def\@mathmeasure#1#2#3{\setbox#1\hbox{\frozen@everymath\@emptytoks + \m@th$#2#3$}} +% \end{macrocode} +% \end{macro} +% +% The \cs{inf@bad} constant is for testing overfull boxes. +% \begin{macrocode} +\@ifundefined{inf@bad}{% + \newcount\inf@bad \inf@bad=1000000 \relax +}{} +% \end{macrocode} +% +%\subsection{Math spacing commands} +% +% Here we fill in some gaps in the set of spacing commands, and make them +% all work equally well in or out of math. +% We want all these commands to be robust but declaring them all with +% \cs{DeclareRobustCommand} uses up an control sequence name per +% command; to avoid this, we define a common command \cs{tmspace} +% (text-or-math space) which carries the robustness burden for all of +% them. The standard \cs{relax} before the \cs{ifmmode} is not +% necessary because of the \cs{protect} added by +% \cs{DeclareRobustCommand}. +% \begin{macrocode} +\DeclareRobustCommand{\tmspace}[3]{% + \ifmmode\mskip#1#2\else\kern#1#3\fi\relax} +\renewcommand{\,}{\tmspace+\thinmuskip{.1667em}} +\let\thinspace\, +\renewcommand{\!}{\tmspace-\thinmuskip{.1667em}} +\let\negthinspace\! +\renewcommand{\:}{\tmspace+\medmuskip{.2222em}} +\let\medspace\: +\newcommand{\negmedspace}{\tmspace-\medmuskip{.2222em}} +\renewcommand{\;}{\tmspace+\thickmuskip{.2777em}} +\let\thickspace\; +\newcommand{\negthickspace}{\tmspace-\thickmuskip{.2777em}} +% \end{macrocode} +% +% \begin{macro}{\mspace} +% And while we're at it, why don't we provide an equivalent of +% \cn{hspace} for math mode use. This allows use of |mu| units in +% (for example) constructing compound math symbols. +% \begin{macrocode} +\newcommand{\mspace}[1]{\mskip#1\relax} +% \end{macrocode} +% \end{macro} +% +% \subsection{Vertical bar symbols} +% Add left/right specific versions of \cn{vert}, \cn{Vert}. Don't +% assume the delimiter codes are the CM defaults. +% \begin{macrocode} +\def\@tempa#1#2\@nil{% + \ifx\delimiter#1\@tempcnta#2\relax\else\@tempcnta\z@\fi +} +\@xp\@tempa\vert\@empty\@nil +\ifnum\@tempcnta>\z@ + \advance\@tempcnta "4000000 + \xdef\lvert{\delimiter\number\@tempcnta\space } + \advance\@tempcnta "1000000 + \xdef\rvert{\delimiter\number\@tempcnta\space } +\else + \ifx\@@undefined\lvert + % Fall back to cmex encoding since we don't know what else to do. + \DeclareMathDelimiter{\lvert} + {\mathopen}{symbols}{"6A}{largesymbols}{"0C} + \DeclareMathDelimiter{\rvert} + {\mathclose}{symbols}{"6A}{largesymbols}{"0C} + \fi +\fi +\@xp\@tempa\Vert\@empty\@nil +\ifnum\@tempcnta>\z@ + \advance\@tempcnta "4000000 + \xdef\lVert{\delimiter\number\@tempcnta\space } + \advance\@tempcnta "1000000 + \xdef\rVert{\delimiter\number\@tempcnta\space } +\else + \ifx\@@undefined\lVert + \DeclareMathDelimiter{\lVert} + {\mathopen}{symbols}{"6B}{largesymbols}{"0D} + \DeclareMathDelimiter{\rVert} + {\mathclose}{symbols}{"6B}{largesymbols}{"0D} + \fi +\fi +% \end{macrocode} +% +% \subsection{Fractions} +% Bury the generalized fraction primitives \cs{over}, \cs{atop}, +% etc., because of their bizarre syntax, which is decidedly out of +% place in a \latex/ document. +% \begin{macrocode} +\@saveprimitive\over\@@over +\@saveprimitive\atop\@@atop +\@saveprimitive\above\@@above +\@saveprimitive\overwithdelims\@@overwithdelims +\@saveprimitive\atopwithdelims\@@atopwithdelims +\@saveprimitive\abovewithdelims\@@abovewithdelims +% \end{macrocode} +% +% If someone insists on using \cs{over}, give a warning the first +% time and then resurrect the old definition. Laissez-faire policy. +% \begin{macrocode} +\DeclareRobustCommand{\primfrac}[1]{% + \PackageWarning{amsmath}{% +Foreign command \@backslashchar#1;\MessageBreak +\protect\frac\space or \protect\genfrac\space should be used instead% +\MessageBreak + } + \global\@xp\let\csname#1\@xp\endcsname\csname @@#1\endcsname + \csname#1\endcsname +} +\renewcommand{\over}{\primfrac{over}} +\renewcommand{\atop}{\primfrac{atop}} +\renewcommand{\above}{\primfrac{above}} +\renewcommand{\overwithdelims}{\primfrac{overwithdelims}} +\renewcommand{\atopwithdelims}{\primfrac{atopwithdelims}} +\renewcommand{\abovewithdelims}{\primfrac{abovewithdelims}} +% \end{macrocode} +% +% \cn{frac} calls \cn{@@over} directly instead of via \cn{genfrac}, for +% better speed because it is so common. \cn{tfrac} and \cn{dfrac} are +% abbreviations for some commonly needed mathstyle overrides. To +% conserve csnames we avoid making \cn{dfrac} and \cn{tfrac} robust +% (\cn{genfrac} is itself robust). +% \begin{macrocode} +\DeclareRobustCommand{\frac}[2]{{\begingroup#1\endgroup\@@over#2}} +\newcommand{\dfrac}{\genfrac{}{}{}0} +\newcommand{\tfrac}{\genfrac{}{}{}1} +% \end{macrocode} +% The \cn{binom} command for binomial notation works like \cn{frac} +% and has similar variants. Note that we do not use \cs{z@} in +% \cn{dbinom} and \cn{tbinom} because they are not top-level robust +% like \cn{binom}, and so the \cs{z@} with the potentially +% problematic \qc{\@} character would become visible when writing one +% of those commands to a \fn{.toc} file. +% \begin{macrocode} +\DeclareRobustCommand{\binom}{\genfrac()\z@{}} +\newcommand{\dbinom}{\genfrac(){0pt}0} +\newcommand{\tbinom}{\genfrac(){0pt}1} +% \end{macrocode} +% +% \begin{macro}{\genfrac} +% This command provides access to \tex/'s generalized fraction +% primitives. Args: \arg{1} left delim, \arg{2} right delim, \arg{3} +% line thickness, \arg{4} mathstyle override, \arg{5} numerator, +% \arg{6} denominator. But we only read the first four args at first, +% in order to give us a moment to select the proper generalized +% fraction primitive. Any of those four args could be empty, and when +% empty the obvious defaults are selected (no delimiters, default +% line thickness (normally .4pt), and no mathstyle override). +% \begin{macrocode} +\DeclareRobustCommand{\genfrac}[4]{% + \def\@tempa{#1#2}% + \edef\@tempb{\@nx\@genfrac\@mathstyle{#4}% + \csname @@\ifx @#3@over\else above\fi + \ifx\@tempa\@empty \else withdelims\fi\endcsname} + \@tempb{#1#2#3}} +% \end{macrocode} +% \cs{@genfrac} takes the preceding arguments and reads the +% numerator and denominator. Note that there's no convenient way to +% make the numerator and denominator \emph{contents} +% displaystyle, through this interface. +% +% Args: \arg{1} mathstyle, \arg{2} fraction primitive, +% \arg{3} delimiters and rule thickness, +% \arg{4} numerator, \arg{5} denominator. +% \begin{macrocode} +\def\@genfrac#1#2#3#4#5{{#1{\begingroup#4\endgroup#2#3\relax#5}}} +% \end{macrocode} +% \end{macro} +% +% Empty mathstyle arg: no change; 0 = displaystyle, 1 = textstyle, 2 +% = scriptstyle, 3 = scriptscriptstyle. +% \begin{macrocode} +\def\@mathstyle#1{% + \ifx\@empty#1\@empty\relax + \else\ifcase#1\displaystyle % case 0 + \or\textstyle\or\scriptstyle\else\scriptscriptstyle\fi\fi} +% \end{macrocode} +% +% \subsection{Sums and Integrals} +% Default value for sum limits is \cs{displaylimits}, see option +% `nosumlimits'. +% +% We redefine all the cumulative operator symbols to use +% \cs{slimits@} so that switching between \cs{displaylimits} and +% \cs{nolimits} can be controlled by package options. Also add +% \cs{DOTSB} for the benefit of the dots lookahead. But we'd better +% make sure \cn{coprod} and the others are simple mathchars; if not, +% the attempted changes will probably fail miserably. +% +% \begin{macrocode} +\begingroup +\edef\@tempa{\string\mathchar"} +\def\@tempb#1"#2\@nil{#1"} +\edef\@tempc{\expandafter\@tempb\meaning\coprod "\@nil} +\ifx\@tempa\@tempc + \global\let\coprod@\coprod + \gdef\coprod{\DOTSB\coprod@\slimits@} + \global\let\bigvee@\bigvee + \gdef\bigvee{\DOTSB\bigvee@\slimits@} + \global\let\bigwedge@\bigwedge + \gdef\bigwedge{\DOTSB\bigwedge@\slimits@} + \global\let\biguplus@\biguplus + \gdef\biguplus{\DOTSB\biguplus@\slimits@} + \global\let\bigcap@\bigcap + \gdef\bigcap{\DOTSB\bigcap@\slimits@} + \global\let\bigcup@\bigcup + \gdef\bigcup{\DOTSB\bigcup@\slimits@} + \global\let\prod@\prod + \gdef\prod{\DOTSB\prod@\slimits@} + \global\let\sum@\sum + \gdef\sum{\DOTSB\sum@\slimits@} + \global\let\bigotimes@\bigotimes + \gdef\bigotimes{\DOTSB\bigotimes@\slimits@} + \global\let\bigoplus@\bigoplus + \gdef\bigoplus{\DOTSB\bigoplus@\slimits@} + \global\let\bigodot@\bigodot + \gdef\bigodot{\DOTSB\bigodot@\slimits@} + \global\let\bigsqcup@\bigsqcup + \gdef\bigsqcup{\DOTSB\bigsqcup@\slimits@} +\fi +\endgroup +% \end{macrocode} +% +% \subsection{Roots and radicals} +% +% This root stuff needs syntax work and implementation work. Surely +% something more compact can be done?? [mjd, 1994/09/05] +% \begin{macrocode} +\newcommand{\leftroot}{\@amsmath@err{\Invalid@@\leftroot}\@eha} +\newcommand{\uproot}{\@amsmath@err{\Invalid@@\uproot}\@eha} +\newcount\uproot@ +\newcount\leftroot@ +\renewcommand{\root}{\relaxnext@ + \DN@{\ifx\@let@token\uproot\let\next@\nextii@\else + \ifx\@let@token\leftroot\let\next@\nextiii@\else + \let\next@\plainroot@\fi\fi\next@}% + \def\nextii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}% + \def\nextiv@{\ifx\@let@token\@sptoken\DN@. {\FN@\nextv@}\else + \DN@.{\FN@\nextv@}\fi\next@.}% + \def\nextv@{\ifx\@let@token\leftroot\let\next@\nextvi@\else + \let\next@\plainroot@\fi\next@}% + \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}% + \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}% + \def\nextvii@{\ifx\@let@token\@sptoken + \DN@. {\FN@\nextviii@}\else + \DN@.{\FN@\nextviii@}\fi\next@.}% + \def\nextviii@{\ifx\@let@token\uproot\let\next@\nextix@\else + \let\next@\plainroot@\fi\next@}% + \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}% + \bgroup\uproot@\z@\leftroot@\z@\FN@\next@} +\def\plainroot@#1\of#2{\setbox\rootbox\hbox{% + $\m@th\scriptscriptstyle{#1}$}% + \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}} + {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup} +% \end{macrocode} +% +% \changes{v2.0}{1999/06/17}{Normalize @@sqrt to sqrtsign} + +% Name change from \cs{@@sqrt} to \cs{sqrtsign} happened in the +% 1995/12/01 release of \latex/. If we were to assume that +% \cs{sqrtsign} is defined then someone with the 1995/06/01 release +% of \latex/ would have trouble using this package. +% \begin{macrocode} +\@ifundefined{sqrtsign}{\let\sqrtsign\@@sqrt}{} +\def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrtsign{#2}$}% + \dimen@\ht\z@\advance\dimen@-\dp\z@ + \setbox\@ne\hbox{$\m@th#1\mskip\uproot@ mu$}% + \advance\dimen@ by1.667\wd\@ne + \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox + \mkern-10mu\mkern\leftroot@ mu\boxz@} +% \end{macrocode} +% +% \subsection{Et cetera} +% +% \changes{v2.0}{1999/06/18}{Leave Greek cap letters unaltered} +% +% Specific names for the variant italic cap Greek letters are not +% defined by \latex/. If no preceding package defined these, we will +% define them now. +% \begin{macrocode} +\@ifundefined{varGamma}{% + \DeclareMathSymbol{\varGamma}{\mathord}{letters}{"00} + \DeclareMathSymbol{\varDelta}{\mathord}{letters}{"01} + \DeclareMathSymbol{\varTheta}{\mathord}{letters}{"02} + \DeclareMathSymbol{\varLambda}{\mathord}{letters}{"03} + \DeclareMathSymbol{\varXi}{\mathord}{letters}{"04} + \DeclareMathSymbol{\varPi}{\mathord}{letters}{"05} + \DeclareMathSymbol{\varSigma}{\mathord}{letters}{"06} + \DeclareMathSymbol{\varUpsilon}{\mathord}{letters}{"07} + \DeclareMathSymbol{\varPhi}{\mathord}{letters}{"08} + \DeclareMathSymbol{\varPsi}{\mathord}{letters}{"09} + \DeclareMathSymbol{\varOmega}{\mathord}{letters}{"0A} +}{} +% \end{macrocode} +% +% \amstex/ redefines \cn{overline} as shown here, for reasons that +% are probably less important in \latex/: Make it read its argument +% as a macro argument rather than a ``math field'' (\emph{The +% \tex/book}, Chapter 26), to avoid problems when something that is +% apparently a single symbol is actually a non-simple macro (e.g., +% \cn{dag}) \emph{and} is given as a single-token argument without +% enclosing braces. +% \begin{macrocode} +\@saveprimitive\overline\@@overline +\DeclareRobustCommand{\overline}[1]{\@@overline{#1}} +% \end{macrocode} +% +% The \cs{boxed} command is specifically intended to put a box around +% an equation or piece of an equation. (Not including the equation +% number.) This isn't trivial for end-users to do it properly +% with \cs{fbox} so we provide a command for them. +% \begin{macrocode} +\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand{\implies}{\DOTSB\;\Longrightarrow\;} +\newcommand{\impliedby}{\DOTSB\;\Longleftarrow\;} +% \end{macrocode} +% +% \begin{macrocode} +\def\And{\DOTSB\;\mathchar"3026 \;} +% \end{macrocode} +% +% The command \cn{nobreakdash} is designed only for use before a +% hyphen or dash (|-|, |--|, or |---|). +% Setting the hyphen in a box and then unboxing it means that the +% normal penalty will not be added after it---and if the penalty is +% not there a break will not be taken (unless an explicit penalty +% or glue follows, thus the final \verb=\nobreak=). +% \begin{macrocode} +\newcommand{\nobreakdash}{\leavevmode + \toks@\@emptytoks \def\@tempa##1{\toks@\@xp{\the\toks@-}\FN@\next@}% + \DN@{\ifx\@let@token-\@xp\@tempa + \else\setboxz@h{\the\toks@\nobreak}\unhbox\z@\fi}% + \FN@\next@ +} +% \end{macrocode} +% +% \cs{colon} is for a colon in math that resembles a text colon: +% small space on the left, larger space on the right. The \qc{\:} +% character by itself is treated as a \cs{mathrel} i.e. large, equal +% spacing on both sides. +% \begin{macrocode} +\renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript + \mkern-\thinmuskip{:}\mskip6muplus1mu\relax} +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Ellipsis dots} +% +% We can't use \cs{newif} for \cs{ifgtest@} because we want +% to include \cs{global} in the definitions of +% \cs{gtest@true} and \cs{gtest@false}. +% \begin{macrocode} +\let\ifgtest@\iffalse % initial value +\def\gtest@true{\global\let\ifgtest@\iftrue} +\def\gtest@false{\global\let\ifgtest@\iffalse} +\let\DOTSI\relax +\let\DOTSB\relax +\let\DOTSX\relax +{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h + \uppercase{% + \gdef\math@#1#2#3#4#5#6\math@{\gtest@false\ifx 7#1\ifx 8#2% + \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\gtest@true + \fi\fi\fi\fi\fi}}} +{\uccode`7=`c \uccode`8=`h \uccode`9=`\" + \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\gtest@false + \ifx 7#1\ifx 8#2\ifx 9#5\gtest@true\xdef\meaning@{9#6}\fi\fi\fi}}} +\newcount\classnum@ +\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096 + \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or + \gdef\thedots@{\dotsb@}\fi} +{\uccode`4=`b \uccode`5=`i \uccode`6=`n + \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@ + \def\nextii@##1\mathbin@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\mathbin@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +{\uccode`4=`r \uccode`5=`e \uccode`6=`l + \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@ + \def\nextii@##1\mathrel@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\mathrel@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +{\uccode`5=`m \uccode`6=`a \uccode`7=`c + \uppercase{\gdef\macro@#1#2#3#4\macro@{\gtest@false + \ifx 5#1\ifx 6#2\ifx 7#3\gtest@true + \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}} +\def\macro@@#1->#2\macro@@{#2} +\newcount\DOTSCASE@ +{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S + \uppercase{\gdef\DOTS@#1#2#3#4#5{\gtest@false\DN@##1\DOTS@{}% + \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@ + \fi\fi\fi\fi\fi + \next@}}} +{\uccode`3=`B \uccode`4=`I \uccode`5=`X + \uppercase{\gdef\DOTS@@#1{\relaxnext@ + \def\nextii@##1\DOTS@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \DN@{\FN@\nextii@}% + \ifx 3#1\global\DOTSCASE@\z@\else + \ifx 4#1\global\DOTSCASE@\@ne\else + \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}% + \fi\fi\fi\next@}}} +{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t + \uppercase{\gdef\not@#1#2#3#4{\relaxnext@ + \def\nextii@##1\not@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\not@{}% + \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi + \fi\next@}}} +\def\keybin@{\gtest@true + \ifx\@let@token+\else\ifx\@let@token=\else + \ifx\@let@token<\else\ifx\@let@token>\else + \ifx\@let@token-\else\ifx\@let@token*\else\ifx\@let@token:\else + \gtest@false\fi\fi\fi\fi\fi\fi\fi} +% \end{macrocode} +% Patch to ensure \cs{@ldots} is defined. (Name changed to +% \cn{mathellipsis} in Dec 94 release of \latex/.) +% \begin{macrocode} +\@ifundefined{@ldots}{\def\@ldots{\mathellipsis}}{} +% \end{macrocode} +% Reiterate the standard definition of \cs{ldots} to keep it from +% being clobbered by the redefinition of \cs{dots}. +% \begin{macrocode} +\DeclareRobustCommand{\ldots}{% + \ifmmode \mathellipsis \else \textellipsis \fi +} +\DeclareRobustCommand{\dots}{% + \ifmmode \@xp\mdots@\else \@xp\textellipsis \fi +} +\def\tdots@{\leavevmode\unskip\relaxnext@ + \DN@{$\m@th\@ldots\, + \ifx\@let@token,\,$\else\ifx\@let@token.\,$\else + \ifx\@let@token;\,$\else\ifx\@let@token:\,$\else + \ifx\@let@token?\,$\else\ifx\@let@token!\,$\else + $ \fi\fi\fi\fi\fi\fi}% + \ \FN@\next@} +\def\mdots@{\FN@\mdots@@} +\def\mdots@@{\gdef\thedots@{\dotso@}% + \ifx\@let@token\boldsymbol \gdef\thedots@\boldsymbol{\boldsymboldots@}% + \else\ifx,\@let@token \gdef\thedots@{\dotsc}% + \else\ifx\not\@let@token \gdef\thedots@{\dotsb@}% + \else\keybin@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \else\xdef\meaning@{\meaning\@let@token..........}% + \xdef\meaning@@{\meaning@}% + \@xp\math@\meaning@\math@ + \ifgtest@ + \@xp\mathch@\meaning@\mathch@ + \ifgtest@\@xp\getmathch@\meaning@\getmathch@\fi + \else\@xp\macro@\meaning@@\macro@ + \ifgtest@ + \@xp\not@\meaning@\not@\ifgtest@\gdef\thedots@{\dotsb@}% + \else\@xp\DOTS@\meaning@\DOTS@ + \ifgtest@ + \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}% + \or\gdef\thedots@{\dotsi}\else\fi + \else\@xp\math@\meaning@\math@ + \ifgtest@\@xp\mathbin@\meaning@\mathbin@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \else\@xp\mathrel@\meaning@\mathrel@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \thedots@} +% \end{macrocode} +% +% The \qc{\=} character is necessary in the two \cs{let} assignments +% in \cs{boldsymboldots@}, because the symbol we are making +% bold might be an \qc{\=} sign. +% \begin{macrocode} +\def\boldsymboldots@#1{% + \bold@true\let\@let@token=#1\let\delayed@=#1\mdots@@ + \boldsymbol#1\bold@false} +% \end{macrocode} +% +% The definition of \cs{@cdots} is merely the \fn{plain.tex} +% definition of \cs{cdots}. +% \begin{macrocode} +\def\@cdots{\mathinner{\cdotp\cdotp\cdotp}} +\newcommand{\dotsi}{\!\@cdots} +\let\dotsb@\@cdots +% \end{macrocode} +% +% If any new right delimiters are defined, they would need to be +% added to the definition of \cs{rightdelim@} in order for \cn{dots} +% to work properly in all cases. +% \begin{macrocode} +\def\rightdelim@{\gtest@true + \ifx\@let@token)\else + \ifx\@let@token]\else + \ifx\@let@token\rbrack\else + \ifx\@let@token\}\else + \ifx\@let@token\rbrace\else + \ifx\@let@token\rangle\else + \ifx\@let@token\rceil\else + \ifx\@let@token\rfloor\else + \ifx\@let@token\rgroup\else + \ifx\@let@token\rmoustache\else + \ifx\@let@token\right\else + \ifx\@let@token\bigr\else + \ifx\@let@token\biggr\else + \ifx\@let@token\Bigr\else + \ifx\@let@token\Biggr\else\gtest@false + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\extra@{% + \rightdelim@\ifgtest@ + \else\ifx\@let@token$\gtest@true + \else\xdef\meaning@{\meaning\@let@token..........}% + \@xp\macro@\meaning@\macro@\ifgtest@ + \@xp\DOTS@\meaning@\DOTS@ + \ifgtest@ + \ifnum\DOTSCASE@=\tw@\gtest@true\else\gtest@false + \fi\fi\fi\fi\fi} +\newif\ifbold@ +\def\dotso@{\relaxnext@ + \ifbold@ + \let\@let@token\delayed@ + \def\nextii@{\extra@\@ldots\ifgtest@\,\fi}% + \else + \def\nextii@{\DN@{\extra@\@ldots\ifgtest@\,\fi}\FN@\next@}% + \fi + \nextii@} +% \end{macrocode} +% Why not save some tokens? (space vs. time). +% \begin{macrocode} +\def\extrap@#1{% + \DN@{#1\,}% + \ifx\@let@token,\else + \ifx\@let@token;\else + \ifx\@let@token.\else\extra@ + \ifgtest@\else + \let\next@#1\fi\fi\fi\fi\next@} +% \end{macrocode} +% +% The \cn{cdots} command. +% \begin{macrocode} +\DeclareRobustCommand{\cdots}{\DN@{\extrap@\@cdots}\FN@\next@} +\let\dotsb\cdots +\let\dotsm\cdots +\DeclareRobustCommand{\dotso}{\relax + \ifmmode \DN@{\extrap@\@ldots}% + \else \let\next@\tdots@\fi + \FN@\next@} +\DeclareRobustCommand{\dotsc}{% + \DN@{\ifx\@let@token;\@ldots\,% + \else \ifx\@let@token.\@ldots\,% + \else \extra@\@ldots \ifgtest@\,\fi + \fi\fi}% + \FN@\next@} +\renewcommand{\longrightarrow}{% + \DOTSB\protect\relbar\protect\joinrel\rightarrow} +\renewcommand{\Longrightarrow}{% + \DOTSB\protect\Relbar\protect\joinrel\Rightarrow} +\renewcommand{\longleftarrow}{% + \DOTSB\leftarrow\protect\joinrel\protect\relbar} +\renewcommand{\Longleftarrow}{% + \DOTSB\Leftarrow\protect\joinrel\protect\Relbar} +\renewcommand{\longleftrightarrow}{\DOTSB\leftarrow\joinrel\rightarrow} +\renewcommand{\Longleftrightarrow}{\DOTSB\Leftarrow\joinrel\Rightarrow} +\renewcommand{\mapsto}{\DOTSB\mapstochar\rightarrow} +\renewcommand{\longmapsto}{\DOTSB\mapstochar\longrightarrow} +\renewcommand{\hookrightarrow}{\DOTSB\lhook\joinrel\rightarrow} +\renewcommand{\hookleftarrow}{\DOTSB\leftarrow\joinrel\rhook} +\renewcommand{\iff}{\DOTSB\;\Longleftrightarrow\;} +% \end{macrocode} +% The \cn{doteq} command formerly used \cs{buildrel}; we avoid that +% because it requires `\cn{over}' as part of its syntax. Use 0pt +% instead of \cs{z@} for robustitude. +% \begin{macrocode} +\renewcommand{\doteq}{% + \DOTSB\mathrel{\mathop{\kern0pt =}\limits^{\textstyle.}}} +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Integral signs} +% +% The straightforward \cs{ifinner} test to see if the current math +% context is non-display, fails if, for instance, we are typesetting +% a multiline display within an \cs{halign}, with the pieces going +% into constructions like +% \begin{verbatim} +% $\displaystyle...$ +% \end{verbatim} +% So we need a better test to find out if we are `in a display'. We +% therefore create \cs{if@display}. +% +% \begin{macrocode} +\newif\if@display +\everydisplay\@xp{\the\everydisplay \@displaytrue} +% \end{macrocode} +% +% Default value for integral limits is \cs{nolimits}, see the +% definition of the `nointlimits' option. +% \begin{macrocode} +\renewcommand{\int}{\DOTSI\intop\ilimits@} +\renewcommand{\oint}{\DOTSI\ointop\ilimits@} +\def\intkern@{\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}} +\def\intdots@{\mathchoice{\@cdots}% + {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}% + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}% + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}} +% +\newcommand{\iint}{\DOTSI\protect\MultiIntegral{2}} +\newcommand{\iiint}{\DOTSI\protect\MultiIntegral{3}} +\newcommand{\iiiint}{\DOTSI\protect\MultiIntegral{4}} +\newcommand{\idotsint}{\DOTSI\protect\MultiIntegral{0}} +% \end{macrocode} +% +% If the \cs{limits} option is applied, use \cs{mathop} and fudge +% the left-hand space a bit to make the subscript visually centered. +% +% \verb'#1' is the multiplicity. +% \begin{macrocode} +\newcommand{\MultiIntegral}[1]{% + \edef\ints@c{\noexpand\intop + \ifnum#1=\z@\noexpand\intdots@\else\noexpand\intkern@\fi + \ifnum#1>\tw@\noexpand\intop\noexpand\intkern@\fi + \ifnum#1>\thr@@\noexpand\intop\noexpand\intkern@\fi + \noexpand\intop + \noexpand\ilimits@ + }% + \futurelet\@let@token\ints@a +} +% \end{macrocode} +% +% \begin{macrocode} +\def\ints@a{% + \ifx\limits\@let@token \ints@b + \else \ifx\displaylimits\@let@token \ints@b + \else\ifx\ilimits@\displaylimits \ints@b + \fi\fi\fi + \ints@c +} +% \end{macrocode} +% +% \begin{macrocode} +\def\ints@b{% + \mkern-7mu\mathchoice{\mkern-2mu}{}{}{}% + \mathop\bgroup + \mkern7mu\mathchoice{\mkern2mu}{}{}{}% + \let\ilimits@\egroup +}% +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Size dependent definitions} +% +% We now define all stuff which has to change whenever a new math +% size is to be activated. \latex/ provides a hook called +% |\every@math@size| to support such a need. All assignments in the +% |\every@math@size| hook that need to take outside effect should be +% global. +% +% \subsection{Struts for math} +% +% The various kinds of struts could use some analysis and perhaps +% consolidation. +% +% For example perhaps the \cn{bBigg} delimiters could use +% \begin{verbatim} +% 1.2\ht\strutbox (1.8, 2.4, 3.0) +% \end{verbatim} +% instead of +% \begin{verbatim} +% 1.0\big@size (1.5, 2.0, 2.5) +% \end{verbatim} +% since \cs{strut} is reset with every size change [mjd, 1994/10/07]. +% But this change would introduce the possibility of changed line +% and page breaks in existing documents, so would need to be +% handled with care. +% +% \begin{macro}{\Mathstrut@} +% \begin{macro}{\Mathstrutbox@} +% \begin{macro}{\resetMathstrut@} +% Here comes the code for Spivak's |\Mathstrut@|. +% \begin{macrocode} +\newbox\Mathstrutbox@ +\setbox\Mathstrutbox@=\hbox{} +\def\Mathstrut@{\copy\Mathstrutbox@} +% \end{macrocode} +% The setting of the height and depth of the |\Mathstrutbox@| is done +% in the |\every@math@size| hook since it depends on the height of a +% paren. As \cs{every@math@size} is triggered by |$| after a font +% size change, we want to avoid using another math formula |$...$| to +% measure the math paren height; instead we go through the mathcode +% of the \qc{\(} character. We assume that the mathcode has a leading +% hex digit 4 indicating `open delimiter'; this allows us to make a +% relatively simple function to get the correct font and character +% position. +% \begin{macrocode} +\def\resetMathstrut@{% + \setbox\z@\hbox{% + \mathchardef\@tempa\mathcode`\(\relax + \def\@tempb##1"##2##3{\the\textfont"##3\char"}% + \expandafter\@tempb\meaning\@tempa \relax + }% +% \end{macrocode} +% These height and depth assignments are implicitly global. +% \begin{macrocode} + \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@ +} +\addto@hook\every@math@size{\resetMathstrut@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\strut@} +% \begin{macro}{\strutbox@} +% Next follows a special internal strut which is supposed to match +% the height and the depth of a normal |\strut| minus +% |\normallineskiplimit| according to M. Spivak. +% +% This should really go into the definition of \cs{size@update}, and +% then the box reset could be local; but \cs{size@update} doesn't +% have any hook and is handled in such a way that it cannot even be +% changed except by changing \cs{set@fontsize}. So instead we put +% \cs{reset@strutbox@} into \cs{every@math@size} and make it global. +% Then because of some complications in the way \cs{glb@settings} and +% \cs{check@mathfonts} work, we have to re-invoke it at the beginning +% of every environment that might use \cs{strut@}. Fortunately this +% can be achieved (more or less) through the \cs{spread@equation} +% hook. [mjd,2000/03/10] +% \begin{macrocode} +\newbox\strutbox@ +\def\strut@{\copy\strutbox@} +\def\reset@strutbox@{% + \global\setbox\strutbox@\hbox{% + \lower.5\normallineskiplimit + \vbox{\kern-\normallineskiplimit\copy\strutbox}}} +\addto@hook\every@math@size{\reset@strutbox@} +\AtBeginDocument{\reset@strutbox@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Big delimiters} +% +% We are now going to redefine the plain \tex/ commands \cn{big}, +% \cn{bigl}, etc., to produce different results in different sizes. +% Actually we only have to define \cn{big}, \cn{Big}, etc., since +% they are used to construct the directional versions \cn{bigl}, +% \cn{bigr}, and the rest. +% +% \begin{macro}{\big} +% \begin{macro}{\Big} +% \begin{macro}{\bigg} +% \begin{macro}{\Bigg} +% To save token space we put everything into the common macro +% |\bBigg@|. The macros are now simply a call to |\bBigg@| with a +% factor to determine the correct height of the delimiter as an +% argument. This code should better go into a future version of +% the \latex/ kernel; the macro |\n@space| is then superfluous (since +% it is only used once) and should be removed to avoid wasting hash +% table space unnecessarily. +% \begin{macrocode} +\renewcommand{\big}{\bBigg@\@ne} +\renewcommand{\Big}{\bBigg@{1.5}} +\renewcommand{\bigg}{\bBigg@\tw@} +\renewcommand{\Bigg}{\bBigg@{2.5}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bBigg@} +% Now we tackle the macro which has to do the real work. It +% actually has two arguments, the factor and the wanted delimiter. +% \begin{macrocode} +\def\bBigg@#1#2{% +% \end{macrocode} +% We start with an extra set of braces because we want +% constructions like |\def\bigl{\mathopen\big}| to work without the +% overhead of extra arguments. +% \begin{macrocode} + {\@mathmeasure\z@{\nulldelimiterspace\z@}% + {\left#2\vcenter to#1\big@size{}\right.}% + \box\z@}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\big@size} +% |\big@size| needs to be set to 1.2 times the height of a math +% paren. This height is already recorded in |\Mathstrutbox@|. +% \begin{macrocode} +\addto@hook\every@math@size{% + \global\big@size 1.2\ht\Mathstrutbox@ + \global\advance\big@size 1.2\dp\Mathstrutbox@ } +\newdimen\big@size +% \end{macrocode} +% \end{macro} +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Math accents} +% +% We want to change the leading digit of math accents to be +% \cs{accentclass@} so that it can vary according to certain internal +% purposes. +% \begin{macrocode} +\def\accentclass@{7} +\def\noaccents@{\def\accentclass@{0}} +% \end{macrocode} +% +% There are a few \meta{math alphabet}s in the standard fonts where +% we have to change the extra macros because the standard definitions +% don't account for these accent problems. The first is for the +% \cs{mathit} command. +% \begin{macrocode} +\DeclareFontEncoding{OML}{}{\noaccents@} +% \end{macrocode} +% The next one corrects the \cs{cal} alphabet. +% \begin{macrocode} +\DeclareFontEncoding{OMS}{}{\noaccents@} +% \end{macrocode} +% +% Triple and quadruple dot accents. +% \begin{macrocode} +\newcommand{\dddot}[1]{% + {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\normalfont ...}\vss}}}} +\newcommand{\ddddot}[1]{% + {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\normalfont....}\vss}}}} +% \end{macrocode} +% +% The following code deals with support for compound accents. +% By redefining \cs{set@mathaccent} we ensure that +% \cn{DeclareMathAccent} will define accent commands to run our +% \cs{mathaccentV} function instead of the primitive \cs{mathaccent}. +% \begin{macrocode} +\def\set@mathaccent#1#2#3#4{% + \xdef#2{\@nx\protect\@nx\mathaccentV + {\@xp\@gobble\string#2}\hexnumber@#1#4}% +} +% \end{macrocode} +% +% We redefine the standard math accent commands to +% call \cs{mathaccentV}, using the mathgroup/encoding-number +% information embedded in their previous definitions. If the +% definition of an accent command does not have the expected form, we +% leave the accent command alone, but give a warning. For widehat and +% widetilde, we need to avoid clobbering the definitions done by the +% \pkg{amsfonts} package. Arbitrating the contention between +% \pkg{amsmath} and \pkg{amsfonts} to allow doubling a widetilde +% accent looks tricky, so for the time being [mjd,1999/07/19] we just +% leave \cn{widehat} and \cn{widetilde} alone. As a result, if the +% \pkg{amsmath} package is loaded on top of a vanilla \latex/ +% documentclass, everything runs through with no warnings. If a +% Lucida Math or other math fonts package is loaded in addition to +% \pkg{amsmath}, there are greater difficulties, but those are +% addressed elsewhere. +% \begin{macrocode} +\def\@tempa#1{\@xp\@tempb\meaning#1\@nil#1} +\def\@tempb#1>#2#3 #4\@nil#5{% + \@xp\ifx\csname#3\endcsname\mathaccent + \@tempc#4?"7777\@nil#5% + \else + \PackageWarningNoLine{amsmath}{% + Unable to redefine math accent \string#5}% + \fi +} +\def\@tempc#1"#2#3#4#5#6\@nil#7{% + \chardef\@tempd="#3\relax\set@mathaccent\@tempd{#7}{#2}{#4#5}} +\@tempa{\hat} +\@tempa{\check} +\@tempa{\tilde} +\@tempa{\acute} +\@tempa{\grave} +\@tempa{\dot} +\@tempa{\ddot} +\@tempa{\breve} +\@tempa{\bar} +\@tempa{\vec} +\@ifundefined{mathring}{% + \DeclareMathAccent{\mathring}{\mathalpha}{operators}{"17} +}{% + \@tempa{\mathring} +} +%%\@tempa\widetilde +%%\@tempa\widehat +% \end{macrocode} +% +% Regression testing of amsmath 2.0 showed that in some documents +% there occurred fragments of the form +% \begin{verbatim} +% \hat\mathcal{G} +% \end{verbatim} +% This is not at all correct syntax for the argument of a \latex/ +% command but it produced the intended result anyway because of the +% internal syntax of the \cs{mathaccent} primitive. With +% \cs{mathaccentV}, it will yield an error message. We therefore do a +% special check for such syntax problems in order to make the error +% message more informative. +% \begin{macrocode} +\newcommand{\acc@check}{} +\newcommand{\acc@error}{} +\def\acc@check{\@ifnextchar\@empty\relax\acc@error} +% \end{macrocode} +% We put most of the tokens in a separate macro so they do not get +% scanned unless they are actually needed. +% \begin{macrocode} +\def\acc@error{% + \@amsmath@err{% + Improper argument for math accent:\MessageBreak + Extra braces must be added to prevent wrong output% + }\@ehc +} +% \end{macrocode} +% +% For \cs{mathaccentV} part of the processing is dependent on the +% depth of nesting of math accent commands. We introduce a dedicated +% counter for this instead of using chardef because we want to +% increment/decrement it during processing, and incrementing a +% chardef integer is more work. +% \begin{macrocode} +\newcount\macc@depth +% \end{macrocode} +% +% Provide this function in case it is not already available. +% \begin{macrocode} +\long\def\@gobblethree#1#2#3{} +% \end{macrocode} +% +% The \cs{mathaccentV} function first counts the number of nested +% math accents by setting the argument in a throw-away box. (This is +% not as risky as such an operation would normally be because the +% argument is generally either a simple math symbol or a nested math +% accent call with a simple math symbol at the bottom of the +% nesting.) +% +% There are two benefits from counting the nesting levels first +% before doing anything else: (1) we can fall back to a simple +% \cs{mathaccent} call if the nesting depth is 1, and (2) if the +% nesting depth is greater than 1, we would like to be able to tell +% when we have reached the lowest level, because at that point we +% want to save the argument for later use and place an accent on top +% of a phantom copy. +% +% When we have multiple accents, they will be placed on top of the +% invisible box, followed by some suitable kerns, then a visible copy +% of the nucleus. To see why, let us look at what goes wrong with a +% double application of the \cs{mathaccent} primitive. The standard +% definition of \cs{hat} is \verb'\mathaccent"705E', so +% \verb'\hat{\hat{F}}' expands to +%\begin{verbatim} +%\mathaccent"705E{\mathaccent"705E{F}} +%\end{verbatim} +% The result of this operation is +%\begin{verbatim} +%\vbox(12.11111+0.0)x7.81946 +%.\hbox(6.94444+0.0)x0.0, shifted 1.40973 +%..\OT1/cmr/m/n/10 ^ +%.\kern-4.30554 +%.\vbox(9.47221+0.0)x7.81946 +%..\hbox(6.94444+0.0)x0.0, shifted 2.24309 +%...\OT1/cmr/m/n/10 ^ +%..\kern-4.30554 +%..\hbox(6.83331+0.0)x7.81946 +%...\OML/cmm/m/it/10 F +%\end{verbatim} +% \tex/ starts by constructing a vbox with the hat character on top +% of the F. Then it puts another hat character on top of the vbox; +% but without skew information, because that is only applied by +% \cs{mathaccent} when the base object is a simple symbol. So the +% first accent is skewed to the correct position but all later +% accents are not. By the way, the actual width of the F in the above +% example is less than 7.81946; the box in which it is packed was +% automatically lengthened by the width of the F's italic correction +% (without actually putting in a kern for it). +% +% To get the second accent shifted farther to the right we +% artificially increase the width of the innermost box and add +% a compensating kern afterward. Furthermore, to get proper placement +% of a following subscript or superscript, we take the base symbol +% out, leaving a phantom in its place, and print it by itself +% following the kern. We then need to increase the kern amount to +% move the base character backward under the accents again. +% Here is what the results look like: +%\begin{verbatim} +%\vbox(12.11111+0.0)x9.48618 +%.\hbox(6.94444+0.0)x0.0, shifted 2.24309 +%..\OT1/cmr/m/n/10 ^ +%.\kern-4.30554 +%.\vbox(9.47221+0.0)x9.48618 +%..\hbox(6.94444+0.0)x0.0, shifted 2.24309 +%...\OT1/cmr/m/n/10 ^ +%..\kern-4.30554 +%..\hbox(6.83331+0.0)x9.48618 +%...\hbox(6.83331+0.0)x7.81946 +%...\kern 1.66672 +%\kern -9.48618 +%\OML/cmm/m/it/10 F +%\end{verbatim} +% +% Much of this implementation is based on code from the \pkg{accents} +% package of Javier Bezos. I added the test to revert to a simple +% \cs{mathaccent} when accents are not nested, and some other +% refinements to reduce the number of kerns used (to conserve box +% memory) and the number of cycles through \cs{mathchoice} (to make +% things run a little faster). It was all rather difficult and my +% first two attempts had serious bugs but I hope and believe that +% this version will do better. [mjd,2000/03/15] +% +% The \qq{V} in \cs{mathaccentV} is just an indication that it takes +% five arguments. It is important that the name includes +% \texttt{mathaccent}, otherwise \cs{DeclareMathAccent} will balk at +% redefining one of our accent commands, for example when an +% alternative math font package is loaded. +% \begin{macrocode} +\def\mathaccentV#1#2#3#4#5{% + \ifmmode + \gdef\macc@tmp{\macc@depth\@ne}% + \setbox\z@\hbox{% + \let\mathaccentV\macc@test + \let\use@mathgroup\@gobbletwo \let\select@group\@gobblethree + \frozen@everymath{}$#5$% + }% + \macc@tmp + \ifnum\macc@depth=\@ne + \global\let\macc@nucleus\@empty + \mathaccent"\accentclass@ + \else + \@xp\macc@nested + \fi + #2#3#4{#5}% + \macc@nucleus + \else + \@xp\nonmatherr@\csname#1\endcsname + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\macc@test#1#2#3#4{\xdef\macc@tmp{\macc@tmp\advance\macc@depth\@ne}} +% \end{macrocode} +% +% \begin{macrocode} +\def\macc@group{-1} +% \end{macrocode} +% +% \begin{macrocode} +\def\macc@nested#1#2#3#4{% + \begingroup + \let\math@bgroup\@empty \let\math@egroup\macc@set@skewchar + \mathsurround\z@ \frozen@everymath{\mathgroup\macc@group\relax}% + \macc@set@skewchar\relax + \let\mathaccentV\macc@nested@a + \macc@nested@a\relax#1#2#3{#4}% + \endgroup +} +% \end{macrocode} +% +% \begin{macrocode} +\let\macc@palette\mathpalette +% \end{macrocode} +% +% \begin{macrocode} +\def\macc@nested@a#1#2#3#4#5{% +% \end{macrocode} +% This test saves some work that would otherwise be always repeated +% fourfold thanks to \cs{mathchoice}. +% \begin{macrocode} + \ifnum\macc@group=\mathgroup + \else \macc@set@skewchar\relax \edef\macc@group{\the\mathgroup}% + \fi + \mathchardef\macc@code "\accentclass@ #2#3#4\relax + \macc@palette\macc@a{#5}% +} +% \end{macrocode} +% +% The reason that \cs{macc@set@skewchar} takes an argument is so that +% it can serve as a direct substitute for \cs{math@egroup}, in +% addition to being used separately. +% +% Setting a skewchar with this method works for symbols of variable +% mathgroup (class 7, letters and numbers) but not necessarily for +% special symbols like \cn{partial} or \cs{xi} whose mathgroup +% doesn't change; fortunately the most commonly used ones come from +% mathgroup one, which is the fall-back mathgroup for skewchar. +% \begin{macrocode} +\def\macc@set@skewchar#1{% + \begingroup + \ifnum\mathgroup=\m@ne \let\@tempa\@ne + \else + \ifnum\skewchar\textfont\mathgroup=\m@ne \let\@tempa\@ne + \else \let\@tempa\mathgroup + \fi + \fi + \count@=\skewchar\textfont\@tempa + \advance\count@"7100 + \edef\@tempa{\endgroup + \mathchardef\noexpand\macc@skewchar=\number\count@\relax}% + \@tempa + #1% +} +% \end{macrocode} +% +% Arg1 is math-style, arg2 is accent base object. We assume that math +% style doesn't change within the nested group of accents; this means +% we can set \cs{macc@style} only once and redefine \cs{macc@palette} +% to use it, in order to run \cs{mathchoice} only once instead of +% multiplying the calls exponentially as the nesting level increases. +% \begin{macrocode} +\def\macc@a#1#2{% + \begingroup + \let\macc@style#1\relax + \def\macc@palette##1{##1\macc@style}% + \advance\macc@depth\m@ne + \ifnum\macc@depth=\z@ + \gdef\macc@nucleus{#2}% +% \end{macrocode} +% Extra \cs{@empty} tokens are to prevent low-level \tex/ errors from +% the potential syntactic error that \cs{acc@check} checks for. +% \begin{macrocode} + \setbox\z@\hbox{$#1#2\@empty{}\macc@skewchar$}% + \setbox\tw@\hbox{$#1#2\@empty\macc@skewchar$}% + \dimen@\tw@\wd\tw@ \advance\dimen@-\tw@\wd\z@ + \xdef\macc@kerna{\the\dimen@\relax}% + \setbox4\hbox{$#1#2\acc@check\@empty$}% + \global\setbox\@ne\hbox to\wd4{}% + \ht\@ne\ht4 \dp\@ne\dp4 + \xdef\macc@kernb{\the\wd4\relax}% + \mathaccent\macc@code{\box\@ne\kern\macc@kerna}% + \else + \mathaccent\macc@code{\let\macc@adjust\@empty #1#2\@empty}% + \macc@adjust + \fi + \endgroup +} +% \end{macrocode} +% +% \begin{macrocode} +\def\macc@adjust{% + \dimen@\macc@kerna\advance\dimen@\macc@kernb + \kern-\dimen@ +} +% \end{macrocode} +% +% The commands \cs{Hat}, \cs{Tilde}, \ldots, are supported as +% synonyms of \cs{hat}, \cs{tilde}, \ldots, for backward +% compatibility. +% \begin{macrocode} +\def\Hat{\hat} +\def\Check{\check} +\def\Tilde{\tilde} +\def\Acute{\acute} +\def\Grave{\grave} +\def\Dot{\dot} +\def\Ddot{\ddot} +\def\Breve{\breve} +\def\Bar{\bar} +\def\Vec{\vec} +% \end{macrocode} +% +% This error message about math mode is used several times so we make +% an abbreviation for it. +% \begin{macrocode} +\def\nonmatherr@#1{\@amsmath@err{\protect + #1 allowed only in math mode}\@ehd} +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Mods, continued fractions, etc.} +% +% The commands \cn{bmod}, \cn{pmod}, \cn{pod}, \cn{mod} aren't +% currently robust. [mjd, 1994/09/05] +% \begin{macrocode} +\renewcommand{\bmod}{\nonscript\mskip-\medmuskip\mkern5mu\mathbin + {\operator@font mod}\penalty900 + \mkern5mu\nonscript\mskip-\medmuskip} +\newcommand{\pod}[1]{\allowbreak + \if@display\mkern18mu\else\mkern8mu\fi(#1)} +\renewcommand{\pmod}[1]{\pod{{\operator@font mod}\mkern6mu#1}} +\newcommand{\mod}[1]{\allowbreak\if@display\mkern18mu + \else\mkern12mu\fi{\operator@font mod}\,\,#1} +% \end{macrocode} +% +% Continued fractions. The optional arg l or r controls horizontal +% placement of the numerators. The |\kern-\nulldelimiterspace| +% is needed in the definition if we want the right-hand sides of the +% fraction rules to line up. The \cs{strut} keeps the numerator of +% a subsidiary cfrac from coming too close to the fraction rule above +% it. +% \begin{macrocode} +\newcommand{\cfrac}[3][c]{{\displaystyle\frac{% + \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}% + \kern-\nulldelimiterspace} +% \end{macrocode} +% +% \cn{overset} and \cn{underset} put symbols above, respectively +% below, a symbol that is not a \cs{mathop} and therefore does not +% naturally accept limits. \cs{binrel@@} uses information collected +% by \cs{binrel@} to make the resulting construction be of type +% mathrel or mathbin if the base symbol is either of those types. +% \begin{macrocode} +\newcommand{\overset}[2]{\binrel@{#2}% + \binrel@@{\mathop{\kern\z@#2}\limits^{#1}}} +% \end{macrocode} +% +% \begin{macrocode} +\newcommand{\underset}[2]{\binrel@{#2}% + \binrel@@{\mathop{\kern\z@#2}\limits_{#1}}} +% \end{macrocode} +% +% \cn{sideset} allows placing `adscript' symbols at the four +% corners of a \cs{mathop}, \emph{in addition to} limits. Left-side +% adscripts go into arg \arg{1}, in the form |_{...}^{...}|, and +% right-side adscripts go into arg \arg{2}. +% +% As currently written [mjd, 1995/01/21] this is pretty haphazard. +% In order to really make it work properly in full generality we'd +% have to read and measure the top and bottom limits and use +% mathchoice to always get the right mathstyle for each piece, +% etc., etc. +% \begin{macrocode} +\newcommand{\sideset}[3]{% + \@mathmeasure\z@\displaystyle{#3}% +% \end{macrocode} +% Use a global box assignment here since the depth override is +% implicitly global. Then move the constructed box to a local box +% register (2) to ensure it won't get destroyed during the next two +% mathmeasure statements. This precaution may be more extreme than +% necessary in practice. +% \begin{macrocode} + \global\setbox\@ne\vbox to\ht\z@{}\dp\@ne\dp\z@ + \setbox\tw@\box\@ne + \@mathmeasure4\displaystyle{\copy\tw@#1}% + \@mathmeasure6\displaystyle{#3\nolimits#2}% + \dimen@-\wd6 \advance\dimen@\wd4 \advance\dimen@\wd\z@ + \hbox to\dimen@{}\mathop{\kern-\dimen@\box4\box6}% +} +% \end{macrocode} +% +% \begin{macro}{\smash} +% We add to the \cn{smash} command an optional argument +% denoting the part of the formula to be smashed. +% \begin{macrocode} +\renewcommand{\smash}[1][tb]{% + \def\mb@t{\ht}\def\mb@b{\dp}\def\mb@tb{\ht\z@\z@\dp}% + \edef\finsm@sh{\csname mb@#1\endcsname\z@\z@ \box\z@}% + \ifmmode \@xp\mathpalette\@xp\mathsm@sh + \else \@xp\makesm@sh + \fi +} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Extensible arrows} +% +% The minus sign used in constructing these arrow fills is smashed so +% that superscripts above the arrows won't be too high. This +% primarily affects the \cn{xleftarrow} and \cn{xrightarrow} arrows. +% +% \begin{macrocode} +\mathchardef\std@minus\mathcode`\-\relax +\mathchardef\std@equal\mathcode`\=\relax +% \end{macrocode} +% In case some alternative math fonts are loaded later: +% \begin{macrocode} +\AtBeginDocument{% + \mathchardef\std@minus\mathcode`\-\relax + \mathchardef\std@equal\mathcode`\=\relax +} +% \end{macrocode} +% +% \begin{macrocode} +\def\relbar{\mathrel{\mathpalette\mathsm@sh\std@minus}} +\def\Relbar{\mathrel\std@equal} +% \end{macrocode} +% +% \begin{macrocode} +\def\arrowfill@#1#2#3#4{% + $\m@th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip + \relax#4#1\mkern-7mu% + \cleaders\hbox{$#4\mkern-2mu#2\mkern-2mu$}\hfill + \mkern-7mu#3$% +} +\def\leftarrowfill@{\arrowfill@\leftarrow\relbar\relbar} +\def\rightarrowfill@{\arrowfill@\relbar\relbar\rightarrow} +\def\leftrightarrowfill@{\arrowfill@\leftarrow\relbar\rightarrow} +\def\Leftarrowfill@{\arrowfill@\Leftarrow\Relbar\Relbar} +\def\Rightarrowfill@{\arrowfill@\Relbar\Relbar\Rightarrow} +\def\Leftrightarrowfill@{\arrowfill@\Leftarrow\Relbar\Rightarrow} +% \end{macrocode} +% +% \begin{macrocode} +\def\overarrow@#1#2#3{\vbox{\ialign{##\crcr#1#2\crcr + \noalign{\nointerlineskip}$\m@th\hfil#2#3\hfil$\crcr}}} +\renewcommand{\overrightarrow}{% + \mathpalette{\overarrow@\rightarrowfill@}} +\renewcommand{\overleftarrow}{% + \mathpalette{\overarrow@\leftarrowfill@}} +\newcommand{\overleftrightarrow}{% + \mathpalette{\overarrow@\leftrightarrowfill@}} +% \end{macrocode} +% +% \begin{macrocode} +\def\underarrow@#1#2#3{% + \vtop{\ialign{##\crcr$\m@th\hfil#2#3\hfil$\crcr + \noalign{\nointerlineskip\kern1.3\ex@}#1#2\crcr}}} +\newcommand{\underrightarrow}{% + \mathpalette{\underarrow@\rightarrowfill@}} +\newcommand{\underleftarrow}{% + \mathpalette{\underarrow@\leftarrowfill@}} +\newcommand{\underleftrightarrow}{% + \mathpalette{\underarrow@\leftrightarrowfill@}} +% \end{macrocode} +% +% \begin{macrocode} +%\newcommand{\xrightarrow}[2][]{\ext@arrow 0359\rightarrowfill@{#1}{#2}} +\def\ext@arrow#1#2#3#4#5#6#7{% + \mathrel{\mathop{% +% \end{macrocode} +% Measure the superscript and subscript. +% \begin{macrocode} + \setbox\z@\hbox{#5\displaystyle}% + \setbox\tw@\vbox{\m@th + \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% + \hbox{$\scriptstyle\mkern#3mu{#7}\mkern#4mu$}% + \copy\z@ + }% + \hbox to\wd\tw@{\unhbox\z@}}% +% \end{macrocode} +% We don't want to place an empty subscript since that will produce +% too much blank space below the arrow. +% \begin{macrocode} + \limits + \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi + #7\if0#2\else\mkern#2mu\fi}}% + \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi + #6\if0#2\else\mkern#2mu\fi}}}% +} +% \end{macrocode} +% +% Some extensible arrows to serve as mathrels and taking +% sub/superscripts. These commands are robust because they take an +% optional argument. +% \begin{macrocode} +\newcommand{\xrightarrow}[2][]{\ext@arrow 0359\rightarrowfill@{#1}{#2}} +\newcommand{\xleftarrow}[2][]{\ext@arrow 3095\leftarrowfill@{#1}{#2}} +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Array-related environments} +% \subsection{Remarks} +% +% Because these environments can be nested within the equation +% structures that allow \cn{tag}, there is some cross-influence in +% the internal workings of the \cn{\\} command. +% +% \subsection{The \cn{substack} command} +% +% The \cn{substack} command can be used to set subscripts +% and superscripts that consist of several lines. Usage: +% \begin{verbatim} +% X_{\substack{a=1\\b=2}} +% \end{verbatim} +% +% \changes{v2.0}{1999/06/17}{Removed environment definitions: Sb, Sp} +% +% \begin{environment}{subarray} +% The \env{subarray} environment makes a small-size array suitable +% for use in a subscript or superscript. At the moment the supported +% arguments are not the full possibilities of \env{array} but only +% |c| or |l| for centered or left-aligned. And only one column. +% \begin{macrocode} +\newenvironment{subarray}[1]{% +% \end{macrocode} +% Note: The predecessors of \env{subarray} (\env{Sb} and \env{Sp}, +% inherited from \amstex/) used \cs{vbox} instead of \cs{vcenter}. +% But when a multiline subscript is placed in \cs{limits} position +% \cs{vcenter} is no worse than \cs{vbox}, and when it is placed +% in the \cs{nolimits} position (e.g., for an integral), \cs{vcenter} +% provides clearly better positioning than \cs{vbox}. +% \begin{macrocode} + \vcenter\bgroup +% \end{macrocode} +% Use \cs{Let@} to set the proper meaning of the \cn{\\} and \cn{\\*} +% commands. And restore the meaning of \cs{math@cr@@@} to \cs{cr} +% (see above) in case \env{subarray} is used inside one of the more +% complicated alignment macros where the meaning of \cs{math@cr@@@} +% is different. Similarly, call \cs{default@tag} to ensure that a +% line break here doesn't get an equation number! +% \begin{macrocode} + \Let@ \restore@math@cr \default@tag +% \end{macrocode} +% Set the line spacing to be the same as \cs{atop} (when \cs{atop} +% occurs in \cs{textstyle} or smaller), cf \textit{The \tex/book}, +% Appendix G. +% \begin{macrocode} + \baselineskip\fontdimen10 \scriptfont\tw@ + \advance\baselineskip\fontdimen12 \scriptfont\tw@ + \lineskip\thr@@\fontdimen8 \scriptfont\thr@@ + \lineskiplimit\lineskip +% \end{macrocode} +% Start the \cs{vbox} \cs{halign} structure that encloses the +% contents. Notice that we never get \cs{scriptscriptstyle}. That +% would require a \cs{mathchoice} (ugh). +% \begin{macrocode} + \ialign\bgroup\ifx c#1\hfil\fi + $\m@th\scriptstyle##$\hfil\crcr +}{% + \crcr\egroup\egroup +} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\substack} +% The \cn{substack} command is just an abbreviation for the +% most common use of \env{subarray}. +% \begin{macrocode} +\newcommand{\substack}[1]{\subarray{c}#1\endsubarray} +% \end{macrocode} +% \end{macro} +% +% \subsection{Matrices} +% +% \begin{environment}{smallmatrix} +% \env{smallmatrix} is again an alignment, this time in a centered +% box. The opening incantations are basically the same as those in +% \cs{multilimits@}, followed by the alignment itself. A remark: +% the baselineskip (|9\ex@|) used in \amstex/ is too large for +% use in text with the usual baselineskip of $12$ or $13$ points; we +% change it here to |6\ex@| and also adjust the \cs{lineskip} +% and \cs{lineskiplimit} slightly to compensate. (MJD) +% \begin{macrocode} +\newenvironment{smallmatrix}{\null\,\vcenter\bgroup + \Let@\restore@math@cr\default@tag + \baselineskip6\ex@ \lineskip1.5\ex@ \lineskiplimit\lineskip + \ialign\bgroup\hfil$\m@th\scriptstyle##$\hfil&&\thickspace\hfil + $\m@th\scriptstyle##$\hfil\crcr +}{% + \crcr\egroup\egroup\,% +} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{matrix} +% The \env{matrix} environment is just an \env{array} that provides +% up to ten centered columns, so that users don't have to give the +% col-spec argument explicitly---unless they want some of the columns +% noncentered, that is. The maximum number of columns is actually not +% fixed at ten but given by the counter |MatrixCols|, and can +% therefore be increased by changing that counter. +% +% The extra space of \cn{arraycolsep} that \env{array} adds on each +% side is a waste so we remove it here (perhaps we should instead +% remove it from \env{array} in general, but that's a harder task). +% +% TODO: Think about re-implementing \cn{matrix} to get rid of the +% \cs{c@MatrixCols} limit and have hard-wired preamble that doesn't +% have to be rebuilt each time. +% +% We must use \cn{renewenvironment} for \env{matrix} and +% \env{pmatrix} because \latex/ doesn't kill the definitions found in +% \fn{plain.tex}, even though it probably should because of their +% foreign syntax. +% \begin{macrocode} +\renewenvironment{matrix}{% + \matrix@check\matrix\env@matrix +}{% + \endarray \hskip -\arraycolsep +} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\env@matrix} +% +% \begin{macrocode} +\def\env@matrix{\hskip -\arraycolsep + \let\@ifnextchar\new@ifnextchar + \array{*\c@MaxMatrixCols c}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\c@MaxMatrixCols} +% \begin{macrocode} +\newcount\c@MaxMatrixCols \c@MaxMatrixCols=10 +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\matrix@check} +% For various reasons, authors sometimes use the Plain \TeX{} form of +% \cn{matrix} or \cn{pmatrix} in \LaTeX{} documents. If they later +% add an invocation of the \pkg{amsmath} package to their document, +% the Plain \TeX{} syntax would lead to rather unintelligible error +% messages. The \cs{matrix@check} function does some checking to +% forestall that problem. +% \begin{macrocode} +\def\matrix@check#1{% + \@xp\ifx\csname\@currenvir\endcsname#1% + \else\matrix@error#1% +% \end{macrocode} +% This error recovery is not that good but is better than the +% infinite loop that can result from calling \cs{array} without a +% matching \cs{endarray}. (The array setup leaves \cs{par} empty.) +% \begin{macrocode} + \@xp\@gobble + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\matrix@error} +% +% \begin{macrocode} +\def\matrix@error#1{% + \@amsmath@err{% +Old form `\string#1' should be \string\begin{\@xp\@gobble\string#1}% + }{% +`\string#1{...}' is old Plain-TeX syntax whose use is +ill-advised in LaTeX.% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\renewenvironment{pmatrix}{% + \left(% + \matrix@check\pmatrix\env@matrix +}{ + \endmatrix\right)% +} +\newenvironment{bmatrix}{\left[\env@matrix}{\endmatrix\right]} +\newenvironment{Bmatrix}{% + \left\lbrace\env@matrix +}{% + \endmatrix\right\rbrace +} +\newenvironment{vmatrix}{\left\lvert\env@matrix}{\endmatrix\right\rvert} +\newenvironment{Vmatrix}{\left\lVert\env@matrix}{\endmatrix\right\rVert} +% \end{macrocode} +% +% \begin{macrocode} +\let\hdots\@ldots +% \end{macrocode} +% +% \begin{macrocode} +\newcommand{\hdotsfor}[1]{% + \ifx[#1\@xp\shdots@for\else\hdots@for\@ne{#1}\fi} +\newmuskip\dotsspace@ +\def\shdots@for#1]{\hdots@for{#1}} +\def\hdots@for#1#2{\multicolumn{#2}c% + {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@ + \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}% + \hfill + \mkern-#1\dotsspace@}% + } +% \end{macrocode} +% +% \begin{environment}{cases} +% The easiest way to produce the \env{cases} environment is to base +% it on the \env{array} environment. We must use +% \cn{renewenvironment} to override the definition of \cn{cases} that +% \latex/ (unwisely) leaves in place from \fn{plain.tex}. +% \begin{macrocode} +\renewenvironment{cases}{% + \matrix@check\cases\env@cases +}{% + \endarray\right.% +} +\def\env@cases{% + \let\@ifnextchar\new@ifnextchar + \left\lbrace + \def\arraystretch{1.2}% + \array{@{}l@{\quad}l@{}}% +} +% \end{macrocode} +% \end{environment} +% +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Equation sub-numbering} +% +% \begin{macrocode} +\newcounter{parentequation}% Counter for ``parent equation''. +% \end{macrocode} +% +% We can't assume \cs{ignorespacesafterend} is defined since it was +% not there in the earliest releases of \latex/ 2e. And we need to +% include the \cs{global} for the same reason. +% \begin{macrocode} +\@ifundefined{ignorespacesafterend}{% + \def\ignorespacesafterend{\global\@ignoretrue}% +}{} +% \end{macrocode} +% +% \begin{macrocode} +\newenvironment{subequations}{% +% \end{macrocode} +% Before sending down the `equation' counter to the subordinate +% level, add 1 using standard \cn{refstepcounter}. +% \begin{macrocode} + \refstepcounter{equation}% +% \end{macrocode} +% Define \cn{theparentequation} equivalent to current +% \cn{theequation}. \cn{edef} is necessary to expand the current +% value of the equation counter. This might in rare cases cause +% something to blow up, in which case the user needs to add +% \cn{protect}. +% \begin{macrocode} + \protected@edef\theparentequation{\theequation}% + \setcounter{parentequation}{\value{equation}}% +% \end{macrocode} +% And set the equation counter to 0, so that the normal incrementing +% processes in the various equation environments will produce the +% desired results. +% \begin{macrocode} + \setcounter{equation}{0}% + \def\theequation{\theparentequation\alph{equation}}% + \ignorespaces +}{% + \setcounter{equation}{\value{parentequation}}% + \ignorespacesafterend +} +% \end{macrocode} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Equation numbering} +% +% In the multiline equation environments provided here, the task +% of equation numbering is linked to the task of line breaking +% in the sense that it is the \cn{\\} command that marks where an +% equation number for the current line will be processed and added to +% the page. +% +% Provide a convenient way to specify that equations should be +% numbered within sections. +% \begin{macrocode} +\newcommand{\numberwithin}[3][\arabic]{% + \@ifundefined{c@#2}{\@nocounterr{#2}}{% + \@ifundefined{c@#3}{\@nocnterr{#3}}{% + \@addtoreset{#2}{#3}% + \@xp\xdef\csname the#2\endcsname{% + \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}}}}% +} +% \end{macrocode} +% +% To make references to equation numbers easier, we provide +% \cn{eqref}. We almost don't need \cn{textup}, except that +% \cs{tagform@} doesn't supply the italic correction. +% \begin{macrocode} +\newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}} +% \end{macrocode} +% +% \subsection{Preliminary macros} +% +% The following macros implement the \latex/ syntax for the +% \cn{\\} command, i.e. the possibility to add an asterisk to +% inhibit a page break, or an optional argument to denote additional +% vertical space. They are modelled more or less after the +% corresponding macros for \latex/'s \env{eqnarray} and \env{array} +% environments. +% +% [We can perhaps use the eqnarray mechanism if we change it so that +% it also uses \cs{openup}.] +% +% \begin{macro}{\dspbrk@lvl} +% We begin by defining the \cs{dspbrk@lvl} counter. This counter +% records the desirability of a break after the current row, as a +% number between $0$ and $4$. Its default value is $-1$ meaning that +% no explicit \cn{displaybreak} command was given, and the default +% \cs{interdisplaylinepenalty} is to be used. +% \begin{macrocode} +\newcount\dspbrk@lvl +\dspbrk@lvl=-1 +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\interdisplaylinepenalty} +% We set the \cs{interdisplaylinepenalty} to $10000$. +% \begin{macrocode} +\interdisplaylinepenalty\@M +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\allowdisplaybreaks} +% The \cn{allowdisplaybreaks} command. Since this is intended for use +% outside displayed formulas (typically in the preamble), it does not +% need to use \cs{new@ifnextchar}. +% \begin{macrocode} +\newcommand{\allowdisplaybreaks}[1][4]{% + \interdisplaylinepenalty\getdsp@pen{#1}\relax +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\getdsp@pen} +% Modelled after \latex/'s \cs{@getpen}. We use higher numbers +% than would normally be provided by \cs{@lowpenalty}, +% \cs{@medpenalty}, and \cs{@highpenalty}, since display +% breaks are almost always less desirable. +% \begin{macrocode} +\def\getdsp@pen#1{% + \ifcase #1\@M \or 9999 \or 6999 \or 2999 \or \z@\fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\displaybreak} +% \begin{macro}{\dspbrk@} +% \begin{macro}{\dspbrk@context} +% \begin{macro}{\nogood@displaybreak} +% For breaks in a certain row of a alignment. +% \begin{macrocode} +\newcommand{\displaybreak}{\new@ifnextchar[\dspbrk@{\dspbrk@[4]}} +\chardef\dspbrk@context=\sixt@@n +% \end{macrocode} +% +% \begin{macrocode} +\def\dspbrk@[#1]{% + \ifmeasuring@ + \else + \ifcase\dspbrk@context % case 0 --- OK + \global\dspbrk@lvl #1\relax + \or % case 1 --- inside a box + \nogood@displaybreak + \else % other cases --- outside of a display + \@amsmath@err{\Invalid@@\displaybreak}\@eha + \fi + \fi +} +% \end{macrocode} +% +% This is the value of \cn{displaybreak} when it occurs inside some +% structure where it will not work. +% \begin{macrocode} +\def\nogood@displaybreak{% + \@amsmath@err{\protect +\displaybreak\space cannot be applied here}% +{One of the enclosing environments creates an + unbreakable box\MessageBreak +(e.g., split, aligned, gathered, ...).}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\math@cr} +% The macro \cs{math@cr} ends a row inside one of the equation +% environments, i.e., this is the internal name of the \cn{\\} +% commands in these environments. As usual for this kind of macro +% inside of alignments we insert a special brace into \tex/'s input +% stream. The initial \cs{relax} is needed to trigger entry into the +% \textit{u} template of the current column if the author ended the +% current row with an empty column (i.e., the mathcr was immediately +% preceded by an ampersand). +% \begin{macrocode} +\def\math@cr{\relax\iffalse{\fi\ifnum0=`}\fi +% \end{macrocode} +% The first step is now to check whether an asterisk follows. +% \cs{@eqpen} is used to hold the penalty value to be put on +% the vertical list. +% Then we call up \cs{math@cr@} which performs the next step. +% If an asterisk is read page breaking is inhibited. +% \begin{macrocode} + \@ifstar{\global\@eqpen\@M\math@cr@}% +% \end{macrocode} +% Otherwise we have to check the \cs{dspbrk@lvl} value. +% \begin{macrocode} + {\global\@eqpen + \ifnum\dspbrk@lvl <\z@ \interdisplaylinepenalty + \else -\@getpen\dspbrk@lvl \fi + \math@cr@}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@cr@} +% The purpose of \cs{math@cr@} is to check whether an optional +% argument follows. If not it provides \cs{z@} as default +% value. +% \begin{macrocode} +\def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@cr@@} +% \cs{math@cr@@} closes the special brace opened in +% \cs{math@cr}, and calls \cs{math@cr@@@} which is supposed +% the `real' row ending command. The meaning of this macro depends +% on the environment in which it is used. +% \begin{macrocode} +\def\math@cr@@[#1]{\ifnum0=`{\fi \iffalse}\fi\math@cr@@@ +% \end{macrocode} +% Finally we put the additional space onto the vertical list. +% \begin{macrocode} + \noalign{\vskip#1\relax}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Let@} +% \cs{Let@} is called by all environments where \cn{\\} +% ends a row of an alignment. +% \begin{macrocode} +\def\Let@{\let\\\math@cr} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\restore@math@cr} +% We mentioned already that the exact meaning of \cs{math@cr@@@} +% depends on the current environment. Since it is often a simple +% \cs{cr} we provide \cs{restore@math@cr} to reset it. +% \begin{macrocode} +\def\restore@math@cr{\def\math@cr@@@{\cr}} +% \end{macrocode} +% This is also the default case. +% \begin{macrocode} +\restore@math@cr +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\intertext} +% \begin{macro}{\intertext@} +% The \cn{intertext} command is used for inserting text between the +% rows of an alignment. It might better be done as an environment, +% but the \cs{begingroup} from \cn{begin} would cause the +% \cs{noalign} to fail. +% \begin{macrocode} +\newcommand{\intertext}{\@amsmath@err{\Invalid@@\intertext}\@eha} +% \end{macrocode} +% \cs{intertext@} is called by all environments that allow the use of +% the \cn{intertext} command. +% \begin{macrocode} +\def\intertext@{% + \def\intertext##1{% +% \end{macrocode} +% If current mode is not vmode, the most likely reason is that the +% writer forgot the \cn{\\} that is supposed to precede +% \cn{intertext}. All right, then, let's try adding it our ownself. +% But, to be slightly careful: \cn{\\} does a futurelet, and it's +% slightly dangerous to allow a letted token to barge around loose in +% our internal code when it has been let to a conditional token +% like \cs{fi}. So let's interpose something in front of the \cs{fi} +% for the futurelet to take instead. (And careful again: it has to be +% something evanescent, not (e.g.) \cs{relax} which would cause the +% next halign cell to fire up and keep \cs{noalign} from working.) +% \begin{macrocode} + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\belowdisplayskip + \vbox{\normalbaselines +% \end{macrocode} +% We need to do something extra if the outside environment is a list +% environment. I don't see offhand an elegant way to test ``are we +% inside any list environment'' that is both easy and reliable (for +% example, checking for zero \cs{@totalleftmargin} wouldn't catch the +% case where \cs{@totalleftmargin} is zero but \cs{linewidth} is less +% than \cs{columnwidth}), so it seems to me checking \cs{linewidth} +% is the best practical solution. +% \begin{macrocode} + \ifdim\linewidth=\columnwidth + \else \parshape\@ne \@totalleftmargin \linewidth + \fi + \noindent##1\par}% + \penalty\predisplaypenalty\vskip\abovedisplayskip% + }% +}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{Implementing tags and labels} +% +% In this section we describe some of the macros needed to make the +% \cn{tag} command work in various places. We start by defining a +% help text to be used when a \cn{tag} command is used somewhere +% it should not appear. +% +% \begin{macro}{\tag@help} +% This is the default error help text provided when \cn{tag} +% generates an error message. +% Note that \cs{newhelp} generates a control sequence name +% from the string given as its argument so that a leading +% backslash is provided automatically. +% \begin{macrocode} +\newhelp\tag@help + {tag cannot be used at this point.\space + If you don't understand why^^Jyou should consult + the documentation.^^JBut don't worry: just continue, and I'll + forget what happened.} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\gobble@tag} +% This macro is to be used when \cn{tag} should silently +% skip its argument. +% It is made to handle the \qc{\*}-form of \cn{tag} as well. +% \begin{macrocode} +\def\gobble@tag{\@ifstar\@gobble\@gobble} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\invalid@tag} +% \cs{invalid@tag} is a macro that should be used whenever +% \cn{tag} appears in an illegal place. +% It sets up \cs{tag@help} (as defined above) as help message, +% prints its argument as error message, and skips \cn{tag}'s +% argument. +% \begin{macrocode} +\def\invalid@tag#1{\@amsmath@err{#1}{\the\tag@help}\gobble@tag} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dft@tag} +% \begin{macro}{\default@tag} +% \cs{dft@tag} provides a convenient way to disallow the +% use of \cn{tag} at certain points. +% One simply has to write +% \begin{verbatim} +%\let\tag\dft@tag +% \end{verbatim} +% and the \cn{tag} command will produce an error message, +% with a suitable error help text, and discard its argument. +% \begin{macrocode} +\def\dft@tag{\invalid@tag{\string\tag\space not allowed here}} +% \end{macrocode} +% Since this is used several times we provide an abbreviation for +% it. +% \begin{macrocode} +\def\default@tag{\let\tag\dft@tag} +% \end{macrocode} +% Since this is also the default, i.e.\ the \cn{tag} command +% should not be used except in special places, we issue a +% \cs{default@tag} command. +% \begin{macrocode} +\default@tag +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Now that we have taken care of the case that \cn{tag} is not +% allowed we will provide some macros to process tags appropriately. +% As the user documentation states, a \cn{tag} command (without +% the asterisk typesets its argument according to the document +% styles' conventions, whereas a \cn{tag*} command typesets its +% argument exactly as given. We define therefore the following +% interface: +% +% \begin{macro}{\maketag@@} +% \begin{macro}{\maketag@@@} +% \begin{macro}{\tagform@} +% \cn{tag} is supposed to call \cs{maketag@@} which checks +% whether an asterisk follows. If this is the case it calls up +% \cs{maketag@@@} which sets its argument `as is'. Otherwise +% \cs{tagform@} is called to do the job. (This macro is to be +% defined appropriately by the document style.) +% \begin{macrocode} +\def\maketag@@{\@ifstar\maketag@@@\tagform@} +% \end{macrocode} +% We define \cs{maketag@@@} to use the normal font of the document +% text (since this is the usual practice for numbering of document +% elements) and to put a box around the tag. Furthermore we use +% \cs{m@th} for exceptional cases where the tag involves a +% superscript or some such math. (Probably from an explicit use of +% \cs{tag*} rather than from the automatic numbering.) +% \begin{macrocode} +\def\maketag@@@#1{\hbox{\m@th\normalfont#1}} +% \end{macrocode} +% We use the following default definition for \cs{tagform@} +% that puts only parentheses around the tag. +% \begin{macrocode} +\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% We need to insinuate \cs{tagform@} into \cs{@eqnnum} in case +% \env{eqnarray} is used (probably in a document that was originally +% written without use of the \pkg{amsmath} package). +% \begin{macrocode} +\iftagsleft@ + \def\@eqnnum{\hbox to1sp{}\rlap{\normalfont\normalcolor + \hskip -\displaywidth\tagform@\theequation}} +\else + \def\@eqnnum{{\normalfont\normalcolor \tagform@\theequation}} +\fi +% \end{macrocode} +% +% \begin{macro}{\thetag} +% Sometimes one needs to set a literal tag according to the rules of +% the document style. To achieve this we provide the \cn{thetag} +% command. It typesets its argument by calling \cs{tagform@} on +% it. +% \begin{macrocode} +\newcommand{\thetag}{\leavevmode\tagform@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\df@tag} +% \begin{macro}{\make@df@tag} +% \begin{macro}{\make@df@tag@@} +% \begin{macro}{\make@df@tag@@@} +% Sometimes it is necessary for a \cn{tag} command to store a tag +% in a safe place and to process it later, e.g., for a tag in a row +% of an alignment where the tag can only be typeset when the +% \cn{\\} at the end of the row was seen. Such a tag is stored in +% the macro \cs{df@tag} (for `deferred tag'). For this purpose we +% provide the \cs{make@df@tag} macro. It is built very similar to +% the \cs{maketag@@} macro above. +% \begin{macrocode} +\let\df@tag\@empty +\def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@} +% \end{macrocode} +% \cs{make@df@tag} sets \cs{@currentlabel} and defines +% \cs{df@tag} appropriately. +% +% To simplify the task of tracking \cs{tag} and \cs{label} +% commands inside math display environments, we defer \cs{label} +% commands until the tag is typeset, similar to the way that +% \cs{tag}s themselves are deferred. This allows arbitrary +% placement of \cs{label} and \cs{tag} commands and also means we +% only increment the \cs{equation} counter when we really need to, +% thus avoiding the \cs{setb@ck} nonsense that used to be required. +% +% \begin{macrocode} +\def\make@df@tag@@#1{% + \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}} +% \end{macrocode} +% Autogenerated number: +% \begin{macrocode} +\def\make@df@tag@@@#1{\gdef\df@tag{\tagform@{#1}% + \toks@\@xp{\p@equation{#1}}\edef\@currentlabel{\the\toks@}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ltx@label} +% \begin{macro}{\label@in@display} +% \begin{macro}{\df@label} +% Next, we store the default definition of \cs{label} in +% \cs{ltx@label} and then define a new version of \cs{label} for use +% in math display environments. \cs{label@in@display} merely issues a +% warning message if there is already a pending label (which will be +% discarded) and then stores the label in \cs{df@label}. +% \begin{macrocode} +\let\ltx@label\label +% +\def\label@in@display{% + \ifx\df@label\@empty\else + \@amsmath@err{Multiple \string\label's: + label '\df@label' will be lost}\@eha + \fi + \gdef\df@label +} +% \end{macrocode} +% In case there is an enumerate inside a minipage inside an equation, +% we need to reset \cn{label} to its normal value: +% \begin{macrocode} +\toks@\@xp{\@arrayparboxrestore \let\label\ltx@label}% +\edef\@arrayboxrestore{\the\toks@} +% \end{macrocode} +% +% \begin{macrocode} +\let\df@label\@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\make@display@tag} +% Now we define a macro to process \cs{tag} and \cs{label} commands +% in various display environments. If the |@eqnsw| switch is set, +% then we should supply an equation number; otherwise, if the +% |@tag| switch is set, we should use the tag stored in +% \cs{df@tag}. Finally, we process any pending \cs{label}s. +% +% TODO: Arguably, \cs{make@display@tag} should issue a warning +% message if there is a \cs{label} but neither a tag nor an +% equation number. Also, it would probably be worthwhile to +% explore whether \cs{iftag@} could be done away with and replaced +% by checks to see if \cs{df@tag} is empty or not. +% \begin{macrocode} +\def\make@display@tag{% + \if@eqnsw \incr@eqnum \print@eqnum + \else \iftag@ \df@tag \global\let\df@tag\@empty \fi + \fi +% \end{macrocode} +% Need to check the \cs{ifmeasuring@} flag otherwise the \cs{write} +% node from \cn{label} might be discarded in a temp box and clearing +% \cs{df@label} will keep it from being reiterated on the real +% typesetting pass. +% \begin{macrocode} + \ifmeasuring@ + \else + \ifx\df@label\@empty + \else + \@xp\ltx@label\@xp{\df@label}% + \global\let\df@label\@empty + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% Now we define the special versions of \cn{tag} used within the +% \env{align} environments. +% +% \begin{macro}{\tag@in@align} +% The \cn{tag} command may only appear once in a row of +% an alignment. Therefore we first check the switch |tag@| +% that is set to false at the begin of every row. +% If this switch is true a \cn{tag} was already given in this +% row and we define \cs{next@} to expand to a call to +% \cs{invalid@tag}. +% \begin{macrocode} +\def\tag@in@align{% + \relax + \iftag@ + \DN@{\invalid@tag{Multiple \string\tag}}% + \else +% \end{macrocode} +% Otherwise we set the |tag@| switch. But there is more to +% be done: we must also prevent the automatic generation of a +% tag. Therefore we also reset the |@eqnsw|. +% \begin{macrocode} + \global\tag@true +% \end{macrocode} +% Changed to \cs{nonumber}, since that seems to be all that's +% required.---dmj, 1994/12/21 +% \begin{macrocode} + \nonumber +% \end{macrocode} +% Within a row of an \env{align} environment the \cn{tag} +% command must not typeset the tag immediately since its +% position can be determined only later. +% Therefore we use the \cs{make@df@tag} macro defined +% earlier. +% Finally we call \cs{next@} to process the argument +% that follows. +% \begin{macrocode} + \let\next@\make@df@tag + \fi + \next@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\raisetag} +% Usage: \cn{raisetag} \meta{dimen} +% +% This will modify the vertical placement of the tag of the current +% equation by \meta{dimen}. Note that according to the current uses +% of \cs{raise@tag} in e.g., \cs{place@tag@gather}, no adjustment +% occurs if the tag falls in its normal position; i.e., \cn{raisetag} +% has no effect unless the tag has already been shifted off-line. +% +% \begin{macrocode} +\newcommand{\raisetag}[1]{\skip@#1\relax + \xdef\raise@tag{\vskip\iftagsleft@\else-\fi\the\skip@\relax}% +} +% \end{macrocode} +% \cn{raise@tag} will be reemptied at the beginning of each equation, +% which might occur at a |\begin{xxx}| or \cn{\\}. +% \begin{macrocode} +\let\raise@tag\@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\notag} +% For consistency we provide \cn{notag}, equivalent to +% \cn{nonumber}. The alternative would have been to rename +% \cn{tag} as \cn{number} to go along with \cn{nonumber}, +% but of course \cs{number} is a \tex/ primitive that should not +% be redefined. +% \begin{macrocode} +\newcommand{\notag}{\nonumber} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\nonumber} +% Need to add some additional code to \cn{nonumber} to deal with some +% complications related to nested environments. +% \begin{macrocode} +\renewcommand{\nonumber}{% + \if@eqnsw + \ifx\incr@eqnum\@empty \addtocounter{equation}\m@ne \fi + \fi + \let\print@eqnum\@empty \let\incr@eqnum\@empty + \global\@eqnswfalse +} +% \end{macrocode} +% +% \begin{macrocode} +\def\print@eqnum{\tagform@\theequation} +\def\incr@eqnum{\refstepcounter{equation}\let\incr@eqnum\@empty} +% \end{macrocode} +% \end{macro} +% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section{Multiline equation environments} +% +% \subsection{Remarks} +% +% In late 1994 David M. Jones did a thorough overhaul of these +% environments so that the number placement and a few other aspects +% are substantially improved over the original versions that were +% ported essentially unchanged from \fn{amstex.tex} in 1989. Most of +% the commentary in this section is DMJ's, and comments of any +% significance that I added are marked by my initials and date +% [mjd, 1995/01/11]. +% +% \subsection{Preliminaries} +% +% \begin{macro}{\ifinalign@} +% \begin{macro}{\ifingather@} +% We define two switches that are set to true in certain +% alignments: |inalign@| and |ingather@| inside of +% the \env{align} and \env{gather} environments. +% These switches are needed to control certain actions that +% depend on the surrounding conditions, more specifically: +% on the setting already done by the surrounding environments. +% \begin{macrocode} +\newif\ifinalign@ +\newif\ifingather@ +% \end{macrocode} +% \begin{histnote} +% Removed the \cs{ifinany@} test [mjd,1999/06/28] since it was mainly +% used for the purpose now handled by \cs{spread@equation}. +% \changes{v1.2g}{1999/06/28}{Removed ifinany@} +% \end{histnote} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@arrayparboxrestore} +% Here we must reset a few additional parameters. +% \begin{macrocode} +\@xp\def\@xp\@arrayparboxrestore\@xp{\@arrayparboxrestore + \ingather@false\inalign@false \default@tag + \let\spread@equation\@spread@equation + \let\reset@equation\@empty + \def\print@eqnum{\tagform@\theequation}% + \def\incr@eqnum{\refstepcounter{equation}\let\incr@eqnum\@empty}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\iftag@} +% The switch |tag@| is set to false at the beginning of every +% row and set to true by a \cn{tag} command. +% This allows us to check whether there is more than one tag on +% a row. +% \begin{macrocode} +\newif\iftag@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifst@rred} +% The switch |st@rred| is set to true by all starred +% environments +% and set to false by the unstarred versions. +% \begin{macrocode} +\newif\ifst@rred +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifmeasuring@} +% All display environments get typeset twice---once during a +% ``measuring'' phase and then again during a ``production'' phase; +% \cs{ifmeasuring@} will be used to determine which case we're in, +% so we can take appropriate action. +% +% \begin{macrocode} +\newif\ifmeasuring@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifshifttag@} +% \cs{ifshifttag@} is used by \env{gather} to communicate between +% \cs{calc@shift@gather} and \cs{place@tag@gather} whether an +% equation tag should be shifted to a separate line. It's also +% used by \env{multline}. +% \begin{macrocode} +\newif\ifshifttag@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\row@} +% \begin{macrocode} +\newcount\row@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\column@} +% The counter \cs{column@} is used by the alignment macros to +% keep track of the current column. +% +% \begin{macrocode} +\newcount\column@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\column@plus} +% \cs{\column@plus} is a useful abbreviation. +% \begin{macrocode} +\def\column@plus{% + \global\advance\column@\@ne +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maxfields@} +% \begin{macrocode} +\newcount\maxfields@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\add@amp} +% \begin{macro}{\add@amps} +% \begin{macrocode} +\def\add@amp#1{\if m#1&\@xp\add@amp\fi} +\def\add@amps#1{% + \begingroup + \count@#1\advance\count@-\column@ + \edef\@tempa{\endgroup + \@xp\add@amp\romannumeral\number\count@ 000q}% + \@tempa +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\andhelp@} +% The help text stored in \cs{andhelp@} is used for errors +% generated by too many \qc{\&} characters in a row. +% \begin{macrocode} +\newhelp\andhelp@ +{An extra & here is so disastrous that you should probably exit^^J +and fix things up.} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\eqnshift@} +% \cs{eqnshift@} is used by \env{align} and \env{gather} as the +% indentation of the lines of the environment from the left margin. +% \begin{macrocode} +\newdimen\eqnshift@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\alignsep@} +% \begin{macrocode} +\newdimen\alignsep@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tagshift@} +% \begin{macrocode} +\newdimen\tagshift@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mintagsep} +% \cs{mintagsep} is the minimum allowable separation between an +% equation and its tag. We set it to half a quad in +% \cs{textfont}2, which is \tex/'s built-in value. +% \begin{macrocode} +\newcommand{\mintagsep}{.5\fontdimen6\textfont\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\minalignsep} +% This should probably be a skip register [mjd,1999/06/18] +% \begin{macrocode} +\newcommand{\minalignsep}{10pt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tagwidth@} +% \begin{macrocode} +\newdimen\tagwidth@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\totwidth@} +% \begin{macrocode} +\newdimen\totwidth@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lineht@} +% The dimen register \cs{lineht@} is used to keep track of the +% height (or depth, if tags are on the right) of a row in an +% alignment. +% \begin{macrocode} +\newdimen\lineht@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tag@width} +% \begin{macro}{\savetaglength@} +% \begin{macro}{\shift@tag} +% \begin{macro}{\tag@shifts} +% \begin{macrocode} +\def\tag@width#1{% + \ifcase\@xp#1\tag@lengths\fi +} + +\def\savetaglength@{% + \begingroup + \let\or\relax + \xdef\tag@lengths{\tag@lengths\or \the\wdz@}% + \endgroup +} + +\def\shift@tag#1{% + \ifcase\@xp#1\tag@shifts\fi\relax +} + +\let\tag@shifts\@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\saveshift@} +% \begin{macrocode} +\def\saveshift@#1{% + \begingroup + \let\or\relax + \xdef\tag@shifts{\or#1\tag@shifts}% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\spread@equation} +% This does the line-spacing adjustment that is normally wanted for +% displayed equations. We also call \cs{reset@strutbox@} here because +% otherwise a preceding font size change might leave \cs{strutbox@} +% with wrong contents. This is a less-than-ideal solution but +% probably good enough for now, until the situation can be +% overhauled. +% \begin{macrocode} +\def\spread@equation{\reset@strutbox@ + \openup\jot \let\spread@equation\@empty} +\let\@spread@equation\spread@equation +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\displ@y} +% \begin{macro}{\displ@y@} +% \begin{macro}{\@display@init} +% \cs{displ@y} is from \fn{plain.tex}, with +% \cs{interdisplaylinepenalty} changed to \cs{@eqpen}. Also we +% transplanted most of its internal organs to \cs{@display@init} to +% support \cs{displ@y@} and other possibilities. Don't try to make +% sense of these naming conventions! They are a narrowly calculated +% mishmash of Knuth/Spivak/Lamport/Mittelbach precedents. The reason +% for not cleaning them up and forcing all names to a consistent +% scheme is that then in principle we'd have to do it everywhere else +% too. And we programmers are paranoid about the side effects of name +% changes. +% \begin{macrocode} +\def\displ@y{\@display@init{}} +\def\@display@init#1{% + \global\dt@ptrue \spread@equation + \everycr{% + \noalign{% + #1% + \ifdt@p + \global\dt@pfalse + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \else + \penalty\@eqpen \global\dspbrk@lvl\m@ne + \fi + }% + }% +} +% \end{macrocode} +% \cs{displ@y@} is nearly the same; it additionally sets the |tag@| +% switch and the \cs{column@} and \cs{dspbrk@lvl} counters to their +% default values. The argument is normally a bit of code to empty out +% \cs{raise@tag}, but in \env{multline} we don't want that to happen +% in \cs{everycr}. +% \begin{macrocode} +\def\displ@y@{\@display@init{% + \global\column@\z@ \global\dspbrk@lvl\m@ne + \global\tag@false \global\let\raise@tag\@empty +}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\black@} +% This macro is made to produce an overfull box message and +% possibly (depending on the value of \cs{overfullrule}) +% a rule in the margin if the total width of an alignment +% is larger than the value of \cs{displaywidth}. +% \begin{macrocode} +\def\black@#1{% + \noalign{% + \ifdim#1>\displaywidth + \dimen@\prevdepth + \nointerlineskip + \vskip-\ht\strutbox@ + \vskip-\dp\strutbox@ + \vbox{\noindent\hbox to#1{\strut@\hfill}}% + \prevdepth\dimen@ + \fi + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\savecounters@} +% \begin{macro}{\restorecounters@} +% These are used during the measuring phase of the various display +% math environments to save and restore the values of all \latex/ +% counters. We make these local to a group, so nested environments +% works. +% +% Changed \cn{stepcounter} to |\csname c@...\endcsname| to avoid +% overhead of ifundefined test [mjd, 1995/01/20]. +% \begin{macrocode} +\def\savecounters@{% + \begingroup + \def\@elt##1{% + \global\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \xdef\@gtempa{% + \cl@@ckpt + \let\@nx\restorecounters@\@nx\@empty + }% + \endgroup + \let\restorecounters@\@gtempa +} +% +\let\restorecounters@\@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\savealignstate@} +% \begin{macro}{\restorealignstate@} +% These are used to save the values of various parameters that are +% shared by \env{align} and \env{gather} when the former is used +% inside the latter. +% \begin{macrocode} +\def\savealignstate@{% + \begingroup + \let\or\relax + \xdef\@gtempa{% + \global\totwidth@\the\totwidth@ + \global\row@\the\row@ + \gdef\@nx\tag@lengths{\tag@lengths}% + \let\@nx\restorealignstate@\@nx\@empty + }% + \endgroup + \let\restorealignstate@\@gtempa +} + +\let\restorealignstate@\@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\savecolumn@} +% \begin{macro}{\restorecolumn@} +% +% \begin{macrocode} +\def\savecolumn@{% + \edef\restorecolumn@{% + \global\column@\number\column@ + \let\@nx\restorecolumn@\@nx\@empty + }% +} +\let\restorecolumn@\@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Scanning the environment's body} +% +% Several of the math alignment macros must scan their body twice: +% once to determine how wide the columns are and then to actually +% typeset them. This means that we must collect all text in this body +% before calling the environment macros. +% +% \begin{macro}{\@envbody} +% We start by defining a token register to contain the body. +% \begin{macrocode} +\newtoks\@envbody +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addto@envbody} +% Then we define a macro to add something (i.e.\ its argument) to the +% token register \cs{@envbody}. +% \begin{macrocode} +\def\addto@envbody#1{\global\@envbody\@xp{\the\@envbody#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\collect@body} +% The macro \cs{collect@body} starts the scan for the |\end{...}| +% command of the current environment. It takes a macro name as +% argument. This macro is supposed to take the whole body of the +% environment as its argument. For example, |\begin{align}| would +% call |\collect@body\@align| if |@align#1{...}| is the macro that +% sets the alignment with body \arg{1}. +% +% \begin{macrocode} +\def\collect@body#1{% + \@envbody{\@xp#1\@xp{\the\@envbody}}% + \edef\process@envbody{\the\@envbody\@nx\end{\@currenvir}}% + \@envbody\@emptytoks \def\begin@stack{b}% +% \end{macrocode} +% +% If we simply called \cs{collect@@body} directly, +% the error message for a \cn{par} token (usually from a blank line) +% would be +% \begin{verbatim} +% ! Paragraph ended before \collect@@body was complete. +% \end{verbatim} +% But we use a little finesse to get a more intelligible error +% message: +% \begin{verbatim} +% ! Paragraph ended before \multline* was complete. +% \end{verbatim} +% In order to avoid using up csnames unnecessarily we use the actual +% environment name as the name of the temporary function that is +% \cs{let} to \cs{collect@@body}; but then in order to preserve the +% theoretical possibility of nesting for environments that use +% \cs{collect@body} (not currently required by any \pkg{amsmath} +% environment [mjd,1999/06/23]), we do the \cs{let} inside a group. +% \begin{macrocode} + \begingroup + \@xp\let\csname\@currenvir\endcsname\collect@@body +% \end{macrocode} +% This small twist eliminates the need for \cs{expandafter}'s in +% \cs{collect@@body}. +% \begin{macrocode} + \edef\process@envbody{\@xp\@nx\csname\@currenvir\endcsname}% + \process@envbody +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\push@begins} +% When adding a piece of the current environment's contents to +% \cs{@envbody}, we scan it to check for additional \cn{begin} +% tokens, and add a `b' to the stack for any that we find. +% \begin{macrocode} +\def\push@begins#1\begin#2{% + \ifx\end#2\else b\@xp\push@begins\fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\collect@@body} +% \cs{collect@@body} takes two arguments: the first will consist of +% all text up to the next \cn{end} command, the second will be the +% \cn{end} command's argument. If there are any extra \cn{begin} +% commands in the body text, a marker is pushed onto a stack by the +% \cs{push@begins} function. Empty state for this stack means that we +% have reached the \cn{end} that matches our original \cn{begin}. +% Otherwise we need to include the \cn{end} and its argument in the +% material that we are adding to our environment body accumulator. +% +% \begin{histnote} +% In a former implementation, the error messages resulting from a +% typo in the environment name were unsatisfactory, because it was +% matching of the environment name that was used to determine the end +% of our environment body, instead of counting begin-end pairs. +% Thanks to Lars Hellstr\"{o}m for a suggestion that led to this +% improvement. [mjd,1999/06/23] +% \end{histnote} +% \begin{macrocode} +\def\collect@@body#1\end#2{% + \edef\begin@stack{\push@begins#1\begin\end \@xp\@gobble\begin@stack}% + \ifx\@empty\begin@stack + \endgroup + \@checkend{#2}% + \addto@envbody{#1}% + \else + \addto@envbody{#1\end{#2}}% + \fi + \process@envbody % A little tricky! Note the grouping +} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Simple aligning environments} +% +% \begin{macro}{\math@cr@@@aligned} +% From tabskip we get an extra space of minalignsep after every +% second column; but when this falls at the right edge of the whole +% aligned structure, we need to cancel that space. +% \begin{macrocode} +\def\math@cr@@@aligned{% + \ifodd\column@ \let\next@\@empty + \else \def\next@{&\kern-\alignsep@}% + \fi + \next@ \cr +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\start@aligned} +% The \env{aligned} and \env{alignedat} environments are identical +% except that the latter takes a mandatory argument to specify the +% number of align structures, while the former allows any number of +% align structures automatically (the use of \env{alignedat} is +% deprecated). So, they will be defined in terms of +% \cs{start@aligned}, which will take two arguments. The first +% argument specifies the placement of the environments; it is +% either |c|, |t|, or |b|. The second is the number of align +% structures; a value of~$-1$ means that an arbitrary number are +% allowed. +% \begin{macrocode} +\newcommand{\start@aligned}[2]{% + \RIfM@\else + \nonmatherr@{\begin{\@currenvir}}% + \fi + \savecolumn@ % Assumption: called inside a group +% \end{macrocode} +% The \cs{null} here is to keep the \cs{,} glue from causing the +% invocation of the clause in \tex/'s built-in tag placement +% algorithm that can cause an equation to be shifted all the way over +% to the margin. +% \begin{macrocode} + \null\,% + \if #1t\vtop \else \if#1b \vbox \else \vcenter \fi \fi \bgroup + \maxfields@#2\relax + \ifnum\maxfields@>\m@ne + \multiply\maxfields@\tw@ +% \end{macrocode} +% Introduced new \cs{math@cr@@@} so we can provide standard error +% message for too many \qc{\&}'s in \env{alignedat}. +% \begin{macrocode} + \let\math@cr@@@\math@cr@@@alignedat + \alignsep@\z@skip + \else + \let\math@cr@@@\math@cr@@@aligned + \alignsep@\minalignsep + \fi +% \end{macrocode} +% Reset the meaning of \cn{\\}. +% \begin{macrocode} + \Let@ \chardef\dspbrk@context\@ne +% \end{macrocode} +% Restore the default definition of \cn{tag} (error message), in +% case \env{aligned} is used inside, e.g., a \env{gather} +% environment that accepts \cn{tag}. +% \begin{macrocode} + \default@tag + \spread@equation % no-op if already called +% \end{macrocode} +% Finally we start the alignment itself. For \env{aligned} we add +% \cs{minalignsep} after every second column to mimic the +% behavior of \env{align}. For \env{alignedat} the user has to +% specify interalign space explicitly. +% \begin{macrocode} + \global\column@\z@ + \ialign\bgroup + &\column@plus + \hfil + \strut@ + $\m@th\displaystyle{##}$% + \tabskip\z@skip + &\column@plus + $\m@th\displaystyle{{}##}$% + \hfil + \tabskip\alignsep@ + \crcr +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@cr@@@aligned} +% \cs{math@cr@@@aligned} checks to make sure the user hasn't put in +% too many \qc{\&}s in \env{alignedat}. Since \env{alignedat} +% doesn't use \cs{displ@y@}, we also reset \cs{column@} here. Note +% than in \env{aligned}, \cs{column@} will increase without bound, +% since it never gets reset, but this is harmless. +% \begin{macrocode} +\def\math@cr@@@alignedat{% + \ifnum\column@>\maxfields@ + \begingroup + \measuring@false + \@amsmath@err{Extra & on this line}% + {\the\andhelp@}% "An extra & here is disastrous" + \endgroup + \fi + \global\column@\z@ + \cr +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\alignsafe@testopt} +% Testing for an optional argument can be really, really tricky in +% certain complicated contexts. This we discovered by getting some +% bug reports for uses of \env{aligned}. So here is a safer +% form of \latex/'s \cs{@testopt} function. +% \begin{macrocode} +\def\alignsafe@testopt#1#2{% + \relax\iffalse{\fi\ifnum`}=0\fi + \@ifnextchar[% + {\let\@let@token\relax \ifnum`{=\z@\fi\iffalse}\fi#1}% + {\let\@let@token\relax \ifnum`{=\z@\fi\iffalse}\fi#1[#2]}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{aligned} +% The \env{aligned} environment takes an optional argument that +% indicates its vertical position in relation to surrounding +% material: |t|, |c|, or |b| for top, center, or bottom. +% \begin{macrocode} +\newenvironment{aligned}{% + \let\@testopt\alignsafe@testopt + \aligned@a +}{% + \crcr\egroup + \restorecolumn@ + \egroup +} +\newcommand{\aligned@a}[1][c]{\start@aligned{#1}\m@ne} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{alignedat} +% To get a top or bottom positioned \env{alignedat} structure, you +% would write something like +% \begin{verbatim} +% \begin{alignedat}[t]{3} +% \end{verbatim} +% +% \begin{macrocode} +\newenvironment{alignedat}{% + \let\@testopt\alignsafe@testopt + \alignedat@a +}{% + \endaligned +} +\newcommand{\alignedat@a}[1][c]{\start@aligned{#1}} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{gathered} +% The \env{gathered} environment is for several lines that are +% centered independently. +% \begin{macrocode} +\newenvironment{gathered}[1][c]{% + \RIfM@\else + \nonmatherr@{\begin{gathered}}% + \fi + \null\,% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi \bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \spread@equation + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle##$\hfil + \crcr +}{% + \endaligned +} +% \end{macrocode} +% \end{environment} +% +% +% \subsection{The \env{gather} environment} +% +% \begin{macro}{\start@gather} +% \begin{macrocode} +\def\start@gather#1{% + \RIfM@ + \nomath@env + \DN@{\@namedef{end\@currenvir}{}\@gobble}% + \else + $$% + #1% + \ifst@rred \else \global\@eqnswtrue \fi + \let\next@\gather@ + \fi + \collect@body\next@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{gather} +% \begin{environment}{gather*} +% \begin{macrocode} +\newenvironment{gather}{% + \start@gather\st@rredfalse +}{% + \math@cr \black@\totwidth@ \egroup + $$\ignorespacesafterend +} + +\newenvironment{gather*}{% + \start@gather\st@rredtrue +}{% + \endgather +} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \begin{macro}{\gather@} +% \begin{macrocode} +\def\gather@#1{% + \ingather@true \let\split\insplit@ + \let\tag\tag@in@align \let\label\label@in@display + \chardef\dspbrk@context\z@ + \intertext@ \displ@y@ \Let@ + \let\math@cr@@@\math@cr@@@gather + \gmeasure@{#1}% + \global\shifttag@false + \tabskip\z@skip + \global\row@\@ne + \halign to\displaywidth\bgroup + \strut@ + \setboxz@h{$\m@th\displaystyle{##}$}% + \calc@shift@gather + \set@gather@field + \tabskip\@centering + &\setboxz@h{\strut@{##}}% + \place@tag@gather + \tabskip \iftagsleft@ \gdisplaywidth@ \else \z@skip \span\fi + \crcr + #1% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\gmeasure@} +% \begin{macrocode} +\def\gmeasure@#1{% + \begingroup + \measuring@true + \totwidth@\z@ + \global\let\tag@lengths\@empty + \savecounters@ + \setbox\@ne\vbox{% + \everycr{\noalign{\global\tag@false + \global\let\raise@tag\@empty \global\column@\z@}}% + \let\label\@gobble + \halign{% + \setboxz@h{$\m@th\displaystyle{##}$}% + \ifdim\wdz@>\totwidth@ + \global\totwidth@\wdz@ + \fi + &\setboxz@h{\strut@{##}}% + \savetaglength@ + \crcr + #1% + \math@cr@@@ + }% + }% + \restorecounters@ + \if@fleqn + \global\advance\totwidth@\@mathmargin + \fi + \iftagsleft@ + \ifdim\totwidth@>\displaywidth + \global\let\gdisplaywidth@\totwidth@ + \else + \global\let\gdisplaywidth@\displaywidth + \fi + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@cr@@@gather} +% Modified \cs{math@cr@@@gather} so that it always puts in the +% final field, which needs to be done under the new method for +% determining tag placement. This is probably more efficient +% anyway. +% +% \begin{macrocode} +\def\math@cr@@@gather{% + \ifst@rred\nonumber\fi + &\relax + \make@display@tag + \ifst@rred\else\global\@eqnswtrue\fi +% \end{macrocode} +% We advance \cs{row@} here, rather than at the beginning of the +% preamble, because otherwise the \env{split} environment will +% cause \cs{row@} to be advanced twice instead of once. +% \begin{macrocode} + \global\advance\row@\@ne + \cr +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\calc@shift@gather} +% \cs{calc@shift@gather} has must make two decisions: (1) whether the +% equation tag for the current line should be put on a separate +% line and (2) what the distance between the equation and the +% equation tag should be. We implement \tex/'s built-in +% tag-placement as well as possible, with one improvement: the +% minimum separation between tag and equation is now a +% user-settable parameter. +% +% [1995/01/17] Added a check to make sure that the width of the tag +% on the current line is $>0$ before testing to see if tagwidth + +% linewidth + mintagsep $>$ displaywidth. Since an imbedded align +% shows up as line with width \cn{displaywidth}, and even lines +% without a tag get processed as if an empty tag were present, the +% result was that the empty tag assigned to the line containing the +% align was being shifted downwards, creating extra space after the +% align. +% \begin{macrocode} +\def\calc@shift@gather{% + \dimen@\mintagsep\relax + \tagwidth@\tag@width\row@\relax +% \end{macrocode} +% If we're in \opt{fleqn} mode, there is no flexibility about +% placement of the equation, so all we can do is see if there's +% room for the tag in the given margin. +% \begin{macrocode} + \if@fleqn + \global\eqnshift@\@mathmargin + \ifdim\tagwidth@>\z@ + \advance\dimen@\tagwidth@ + \iftagsleft@ + \ifdim\dimen@>\@mathmargin + \global\shifttag@true + \fi + \else + \advance\dimen@\@mathmargin + \advance\dimen@\wdz@ + \ifdim\dimen@>\displaywidth + \global\shifttag@true + \fi + \fi + \fi + \else + \global\eqnshift@\displaywidth + \global\advance\eqnshift@-\wdz@ + \ifdim\tagwidth@>\z@ + \multiply\dimen@\tw@ + \advance\dimen@\wdz@ + \advance\dimen@\tagwidth@ + \ifdim\dimen@>\displaywidth + \global\shifttag@true + \else + \ifdim\eqnshift@<4\tagwidth@ + \global\advance\eqnshift@-\tagwidth@ + \fi + \fi + \fi + \global\divide\eqnshift@\tw@ + \iftagsleft@ + \global\eqnshift@-\eqnshift@ + \global\advance\eqnshift@\displaywidth + \global\advance\eqnshift@-\wdz@ + \fi + \ifdim\eqnshift@<\z@ + \global\eqnshift@\z@ + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\place@tag@gather} +% \begin{macro}{\set@gather@field} +% \begin{macrocode} +\def\place@tag@gather{% + \iftagsleft@ + \kern-\gdisplaywidth@ + \ifshifttag@ + \rlap{\vbox{% + \normalbaselines + \boxz@ + \vbox to\lineht@{}% + \raise@tag + }}% + \global\shifttag@false + \else + \rlap{\boxz@}% + \fi + \else + \ifdim\totwidth@>\displaywidth + \dimen@\totwidth@ + \advance\dimen@-\displaywidth + \kern-\dimen@ + \fi + \ifshifttag@ + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \boxz@ + }}% + \global\shifttag@false + \else + \llap{\boxz@}% + \fi + \fi +} +% +\def\set@gather@field{% + \iftagsleft@ + \global\lineht@\ht\z@ + \else + \global\lineht@\dp\z@ + \fi + \kern\eqnshift@ + \boxz@ + \hfil +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{The \env{align} family of environments} +% +% The \env{align}, \env{flalign}, \env{alignat}, \env{xalignat}, +% and \env{xxalignat} environments are virtually +% identical, and thus will share much code. We'll refer to the +% environments generically as ``\env{align}'' and will +% distinguish between them explicitly +% only when necessary. +% +% \begin{macro}{\ifxxat@} +% \begin{macro}{\ifcheckat@} +% \begin{macro}{\xatlevel@} +% The \cs{xatlevel@} macro will be used, informally speaking, to +% distinguish between the \env{alignat} and \env{xalignat}, and +% \env{xxalignat} environments. +% +% \begin{macrocode} +\newif\ifxxat@ + +\newif\ifcheckat@ + +\let\xatlevel@\@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\start@align} +% \cs{start@align} will be called by all of the \env{align}-like +% environments. The first argument will be the \cs{xatlevel@}, +% i.e., 0, 1, or~2; the second argument will be either +% \cs{st@rredtrue} or \cs{st@rredfalse}. The third argument will +% be the number of aligned +% structures in the environment (either as supplied by the user, or +% $-1$ to indicate that checking shouldn't be done). After +% performing the appropriate error detection and initialization, +% \cs{start@align} calls \cs{align@}. +% +% Note that the \cs{equation} counter is no longer stepped at the +% beginning of these environments. +% +% TODO: Implement \cs{shoveleft} and \cs{shoveright} for +% \env{align}. +% \begin{macrocode} +\def\start@align#1#2#3{% + \let\xatlevel@#1% always \z@, \@ne, or \tw@ + \maxfields@#3\relax + \ifnum\maxfields@>\m@ne + \checkat@true + \ifnum\xatlevel@=\tw@ + \xxat@true + \fi + \multiply\maxfields@\tw@ + \else + \checkat@false + \fi + \ifingather@ + \iffalse{\fi\ifnum0=`}\fi + \DN@{\vcenter\bgroup\savealignstate@\align@#2}% + \else + \ifmmode + \if@display + \DN@{\align@recover}% + \else + \nomath@env + \DN@{\@namedef{end\@currenvir}{}\@gobble}% + \fi + \else + $$% + \let\split\insplit@ + \DN@{\align@#2}% + \fi + \fi + \collect@body\next@ +} +% \end{macrocode} +% +% With version 1.2 of \pkg{amsmath}, it was possible to use +% \env{align*} and relatives in certain wrong contexts without +% getting an error, e.g. +% \begin{verbatim} +% \begin{equation*} +% \begin{align*} +% ... +% \end{align*} +% \end{equation*} +% \end{verbatim} +% +% For backward compatibility we therefore give only a warning for +% this condition instead of a full error, and try to recover using +% the \env{aligned} environment. The alignment of the material may be +% adversely affected but it will at least remain readable. +% \begin{macrocode} +\def\align@recover#1#2#3{% + \endgroup + \@amsmath@err{% +Erroneous nesting of equation structures;\MessageBreak +trying to recover with `aligned'% + }\@ehc + \begin{aligned}\relax#1\end{aligned}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{align} +% \begin{environment}{align*} +% \begin{environment}{flalign} +% \begin{environment}{flalign*} +% \begin{environment}{alignat} +% \begin{environment}{alignat*} +% \begin{environment}{xalignat} +% \begin{environment}{xalignat*} +% \begin{environment}{xxalignat} +% The definitions of the various \env{align} environments are quite +% straight-forward. +% +% \begin{macrocode} +\newenvironment{alignat}{% + \start@align\z@\st@rredfalse +}{% + \endalign +} +\newenvironment{alignat*}{% + \start@align\z@\st@rredtrue +}{% + \endalign +} +\newenvironment{xalignat}{% + \start@align\@ne\st@rredfalse +}{% + \endalign +} +\newenvironment{xalignat*}{% + \start@align\@ne\st@rredtrue +}{% + \endalign +} +\newenvironment{xxalignat}{% + \start@align\tw@\st@rredtrue +}{% + \endalign +} +\newenvironment{align}{% + \start@align\@ne\st@rredfalse\m@ne +}{% + \math@cr \black@\totwidth@ + \egroup + \ifingather@ + \restorealignstate@ + \egroup + \nonumber + \ifnum0=`{\fi\iffalse}\fi + \else + $$% + \fi + \ignorespacesafterend +} +\newenvironment{align*}{% + \start@align\@ne\st@rredtrue\m@ne +}{% + \endalign +} +\newenvironment{flalign}{% + \start@align\tw@\st@rredfalse\m@ne +}{% + \endalign +} +\newenvironment{flalign*}{% + \start@align\tw@\st@rredtrue\m@ne +}{% + \endalign +} +% \end{macrocode} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% \end{environment} +% +% +% \begin{macro}{\align@} +% TODO: Some of these sets of initializations show up in multiple +% places. It might be worth making an abbreviation for them. +% +% \begin{macrocode} +\def\align@#1#2{% + \inalign@true \intertext@ \Let@ \chardef\dspbrk@context\z@ + \ifingather@\else\displ@y@\fi + \let\math@cr@@@\math@cr@@@align + \ifxxat@\else \let\tag\tag@in@align \fi + \let\label\label@in@display + #1% set st@r + \ifst@rred\else \global\@eqnswtrue \fi + \measure@{#2}% + \global\row@\z@ + \tabskip\eqnshift@ + \halign\bgroup + \span\align@preamble\crcr + #2% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@cr@@@align} +% \begin{macrocode} +\def\math@cr@@@align{% + \ifst@rred\nonumber\fi + \if@eqnsw \global\tag@true \fi + \global\advance\row@\@ne + \add@amps\maxfields@ + \omit + \kern-\alignsep@ + \iftag@ + \setboxz@h{\@lign\strut@{\make@display@tag}}% + \place@tag + \fi + \ifst@rred\else\global\@eqnswtrue\fi + \global\lineht@\z@ + \cr +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\math@cr@@@align@measure} +% \begin{macrocode} +\def\math@cr@@@align@measure{% + &\omit + \global\advance\row@\@ne + \ifst@rred\nonumber\fi + \if@eqnsw \global\tag@true \fi + \ifnum\column@>\maxfields@ + \ifcheckat@ + \begingroup + \measuring@false + \@amsmath@err{Extra & on this line}% + {\the\andhelp@}% "An extra & here is disastrous" + \endgroup + \else + \global\maxfields@\column@ + \fi + \fi + \setboxz@h{\@lign\strut@{% + \if@eqnsw + \stepcounter{equation}% + \tagform@\theequation + \else + \iftag@\df@tag\fi + \fi + }}% + \savetaglength@ + \ifst@rred\else\global\@eqnswtrue\fi + \cr +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\field@lengths} +% \begin{macro}{\savefieldlength@} +% \begin{macro}{\fieldlengths@} +% \begin{macrocode} +\let\field@lengths\@empty + +\def\savefieldlength@{% + \begingroup + \let\or\relax + \xdef\field@lengths{% + \field@lengths + \ifnum\column@=0 + \or + \else + ,% + \fi + \the\wdz@ + }% + \endgroup +} + +\def\fieldlengths@#1{% + \ifcase\@xp#1\field@lengths\fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\maxcolumn@widths} +% \cs{maxcolumn@widths} will be used to hold the widths of the +% fields of the \env{alignat} environment. The widths will be +% separated by the token \cn{or}, making it easy to extract a given +% width using \cn{ifcase}. +% \begin{macrocode} +\let\maxcolumn@widths\@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maxcol@width} +% \cs{maxcol@width} $n$ = maximum width of $n$th column of the current +% \env{alignat} (i.e., the $n$th field of \cs{maxcolumn@widths}.) +% It expands to a \<dimen>, so it can be used as the right-hand +% side of a \<variable assignment> or \<arithmetic> statement. +% It's argument can be any \<number>, \<integer variable> or macro +% that expands to one of these. [Check to make sure this is true.] +% +% This is subtler than it looks. +% \begin{macrocode} +\def\maxcol@width#1{% + \ifcase\@xp#1\maxcolumn@widths\fi\relax +} +% \end{macrocode} +% \end{macro} +% +% Now comes the real fun. A typical \env{align} environments looks +% something like this, where the vertical bars mark the edges of +% the fields of the underlying \cs{halign}: +% \[ +% \makeatletter\tabskip\@centering\offinterlineskip +% \halign to\displaywidth{%^^A +% &$\strut$\vrule\hfil$\m@th\displaystyle{\@lign#}$\vrule +% \tabskip1pt&\vrule$\m@th\displaystyle{\@lign#}$\hfil\vrule +% \tabskip\@centering\cr +% \omit\small\hfil 1\hfil &\omit\small\hfil 2 &\omit\small\hfil +% 3\hfil &\omit\small\hfil 4\hfil & \omit\small\hfil 5\hfil +% &\omit\small\hfil 6\hfil\cr +% \noalign{\vskip8pt\relax} +% V_i + q_i v_j & =v_i , & X_i & = x_i - q_i x_j, +% & U_i & = u_i,\qquad +% \hbox{for $i\ne j$;} %&\omit\hfill \llap{(3)} +% \cr +% V_j & = v_j, & X_j & = x_j, +% & U_j & = u_j + \sum_{i\ne j} q_i u_i. %&\omit\hfill \llap{(4)} +% \cr} +% \] +% Note that each align structure consists of two fields, with no +% space between them (a small space has been added here to +% highlight the boundaries). Furthermore, the text inside the +% odd-numbered fields is flushright, while the text inside the +% even-numbered fields is flushleft. The equation tags (shown on +% the right here) can be on either the right or the left. If there +% is not room (in a sense to be defined shortly) for the tag on the +% same line as the equation, the tag will be shifted to a separate +% line. +% +% Each environment also has a certain number of ``flexible +% spaces,'' meaning spaces whose width we are allowed to adjust to +% take up the amount of ``free space'' in the line, meaning the +% space not taken up by the equation tag and the fields of the +% underlying \cs{halign}. +% +% The flexible spaces come in two flavors: interalign spaces and +% margin spaces. If there are $n$ align structures ($n=3$ in the +% illustration above), there are $n-1$ interalign spaces, unless we +% are in an \env{alignat} environment, in which case there are no +% flexible interalign spaces. +% +% The number of margin spaces is a little more complicated: +% Normally, there are two, but if we're in \opt{fleqn} mode, there +% is only one. Furthermore, if we're in an \env{xxalignat} or +% \env{flalign} environment (corresponding to $\cs{xatlevel@} = 2$, +% then there are no flexible margin spaces. +% +% Calculating the interalign and margin spaces is done in two +% stages. +% +% First, the total amount of free space is divided uniformly among +% all the flexible spaces, without regard for the lengths of the tags +% on the various lines. For the non-\opt{fleqn} case, this +% corresponds to centering the align structures between the margins. +% Note that in \opt{fleqn} mode, the right margin is still allowed to +% be larger than \cs{@mathmargin}. This introduces an element of +% asymmetry into the appearance of the environment, but it has the +% advantage of leaving more space for equation tags in the right +% margin. If the right margin were constrained to be equal to the +% left margin in this case, tags would need to be shifted to a +% separate line more often than would be desirable. +% +% Ordinarily, all flexible spaces will be given the same width. +% However, this is not invariably true, since the interalign spaces +% are constrained to be at least \cs{minalignsep} wide, while---in +% the absence of equation tags, at least---the margin spaces are +% allowed to shrink to zero. As we shall see in a minute, if there +% are tags in the environment, then the margins are also bounded +% below by \cs{mintagsep}. +% +% Next, we examine each line of the environment that has a tag to +% see if there is a gap of at least \cs{mintagsep} between the +% equation and its tag. If there isn't, we attempt to center the +% equation between the tag and the opposite margin, leaving a gap +% of at least \cs{mintagsep} on either side, in order to preserve +% some symmetry, i.e., we want the equation to \emph{look} like +% it's centered between the margin and the tag, so we don't want +% the margin space to be less than the gap between the tag and the +% equation. (Arguably, it would be better to allow the margin +% space to shrink to zero in this case in order to avoid shifting +% the tag to a separate line at any cost, but that would require +% all of our calculations to be a little more complicated and hence +% a little slower.) Finally, if no values of the interalign spaces +% and the margins (with the constraints outlined above) will +% produce an acceptable distance between the equation and its tag, +% then the tag will be shifted to a separate line. +% +% \begin{macro}{\measure@} +% \cs{measure@} collects the various bits of information that we'll +% need to perform the calculations outlined above, namely, the +% number of align structures in the environment, the natural +% lengths of the fields on each row, the maximum widths of each +% column, and the widths of the equation tags on each line. It +% also calculates the number of flexible interalign and margin +% spaces and computes the initial values of the parameters +% \cs{eqnshift@} and \cs{alignsep@}, which correspond to the widths +% of the margins and the interalign spaces, respectively. +% \begin{macrocode} +\def\measure@#1{% + \begingroup + \measuring@true + \global\eqnshift@\z@ + \global\alignsep@\z@ + \global\let\tag@lengths\@empty + \global\let\field@lengths\@empty + \savecounters@ + \global\setbox0\vbox{% + \let\math@cr@@@\math@cr@@@align@measure + \everycr{\noalign{\global\tag@false + \global\let\raise@tag\@empty \global\column@\z@}}% + \let\label\@gobble + \global\row@\z@ + \tabskip\z@ + \halign{\span\align@preamble\crcr + #1% + \math@cr@@@ + \global\column@\z@ + \add@amps\maxfields@\cr + }% + }% + \restorecounters@ +% \end{macrocode} +% It's convenient to have \cs{maxfields@} rounded up to the nearest +% even number, so that \cs{maxfields@} is precisely twice the +% number of align structures. +% \begin{macrocode} + \ifodd\maxfields@ + \global\advance\maxfields@\@ne + \fi +% \end{macrocode} +% It doesn't make sense to have a single align structure in either +% \env{flalign} or \env{xxalignat}. So, we check for that case now +% and, if necessary, switch to an \env{align} or \env{alignat}. +% Arguably, we should issue a warning message, but why bother? +% \begin{macrocode} + \ifnum\xatlevel@=\tw@ + \ifnum\maxfields@<\thr@@ + \let\xatlevel@\z@ + \fi + \fi +% \end{macrocode} +% |\box0| now contains the lines of the \cs{halign}. After the +% following maneuver, |\box1| will contain the last line of the +% \cs{halign}, which is what we're interested in. (Incidentally, +% the penalty we're removing is the \cs{@eqpen} inserted by +% \cs{math@cr}. Normally, this is \cs{interdisplaylinepenalty}, +% unless the user has overridden that with a \cs{displaybreak} +% command.) +% \begin{macrocode} + \setbox\z@\vbox{% + \unvbox\z@ \unpenalty \global\setbox\@ne\lastbox + }% +% \end{macrocode} +% |\box1| begins with \cs{tabskip} glue and contains alternating +% \cs{hbox}es (the fields whose widths we're trying to get) and +% \cs{tabskip} glue [need better diagram]: +% \begin{verbatim} +% \hbox{\tabskip\hbox\tabskip...\hbox\tabskip}\end{verbatim} +% In fact, all the \cs{tabskip} glue will be 0pt, because all the +% \cs{tabskip}s in an \env{alignat} environment have a natural +% width of 0pt, and the \cs{halign} has been set in its natural +% width. +% +% One nice result of this is that we can read \cs{totwidth@} off +% immediately, since it is just the width of |\box1|, plus +% \cs{@mathmargin} if we're in \opt{fleqn} mode. (Actually, we +% also have to take \cs{minalignsep} into account, but we'll do +% that later): +% \begin{macrocode} + \global\totwidth@\wd\@ne + \if@fleqn \global\advance\totwidth@\@mathmargin \fi +% \end{macrocode} +% Now we initialize \cs{align@lengths} and start peeling the boxes +% off, one by one, and adding their widths to \cs{align@lengths}. +% We stop when we run out of boxes, i.e., when \cs{lastbox} returns +% a void box. We're going to build a list using \cs{or} as a +% delimiter, so we want to disable it temporarily. +% \begin{macrocode} + \global\let\maxcolumn@widths\@empty + \begingroup + \let\or\relax + \loop + \global\setbox\@ne\hbox{% + \unhbox\@ne \unskip \global\setbox\thr@@\lastbox + }% + \ifhbox\thr@@ + \xdef\maxcolumn@widths{ \or \the\wd\thr@@ \maxcolumn@widths}% + \repeat + \endgroup +% \end{macrocode} +% Now we calculate the number of flexible spaces and the initial +% values of \cs{eqnshift@} and \cs{alignsep@}. +% We start by calculating $\cs{displaywidth}-\cs{totwidth@}$, +% which gives us the total amount of ``free space'' in a row. +% \begin{macrocode} + \dimen@\displaywidth + \advance\dimen@-\totwidth@ +% \end{macrocode} +% Next we calculate the number of columns of flexible spaces in the +% display, which depends on whether we're in \opt{fleqn} mode and +% in which particular environment we are in. +% +% We use \cs{@tempcnta} to store the total number of flexible spaces +% in the align and \cs{@tempcntb} for the number of interalign +% spaces. +% \begin{macrocode} + \ifcase\xatlevel@ +% \end{macrocode} +% In \env{alignat}, the interalign spaces are under user control, +% not ours. So, we set \cs{alignsep@} and \cs{minalignsep} both +% equal to 0pt. Later, when calculating a new value for +% \cs{alignsep@}, we will only save the new value if it is less +% than the current value of \cs{alignsep@} (i.e., \cs{alignsep@} +% will never increase). Since the values we calculate will never +% be negative, this will ensure that \cs{alignsep@} remains zero in +% \env{alignat}. +% \begin{macrocode} + \global\alignsep@\z@ + \let\minalignsep\z@ + \@tempcntb\z@ +% \end{macrocode} +% In \opt{fleqn} mode, the left margin---and hence the right margin +% in this case---is fixed. Otherwise, we divide the free space +% equally between the two margins. +% \begin{macrocode} + \if@fleqn + \@tempcnta\@ne + \global\eqnshift@\@mathmargin + \else + \@tempcnta\tw@ + \global\eqnshift@\dimen@ + \global\divide\eqnshift@\@tempcnta + \fi + \or +% \end{macrocode} +% In an \env{align} or \env{xalignat} environment with $n$ aligned +% structures, there are $n-1$ interalign spaces and either 1 or~2 +% flexible margins, depending on whether we're in \opt{fleqn} mode +% or not. +% \begin{macrocode} + \@tempcntb\maxfields@ + \divide\@tempcntb\tw@ + \@tempcnta\@tempcntb + \advance\@tempcntb\m@ne +% \end{macrocode} +% If we are in \opt{fleqn} mode, we fix the left margin and divide +% the free space equally among the interalign spaces and the right +% margin. +% \begin{macrocode} + \if@fleqn + \global\eqnshift@\@mathmargin + \global\alignsep@\dimen@ + \global\divide\alignsep@\@tempcnta + \else +% \end{macrocode} +% Otherwise, we divide the free space equally among the interalign +% spaces and both margins. +% \begin{macrocode} + \global\advance\@tempcnta\@ne + \global\eqnshift@\dimen@ + \global\divide\eqnshift@\@tempcnta + \global\alignsep@\eqnshift@ + \fi + \or +% \end{macrocode} +% Finally, if we're in an \env{flalign} or \env{xxalignat} +% environment, there are no flexible margins and $n-1$ flexible +% interalign spaces. +% \begin{macrocode} + \@tempcntb\maxfields@ + \divide\@tempcntb\tw@ + \global\advance\@tempcntb\m@ne + \global\@tempcnta\@tempcntb + \global\eqnshift@\z@ + \global\alignsep@\dimen@ +% \end{macrocode} +% If we're in \opt{fleqn} mode, we need to add back the +% \cs{@mathmargin} that was removed when \cs{dimen@} was originally +% calculated above. +% \begin{macrocode} + \if@fleqn + \global\advance\alignsep@\@mathmargin\relax + \fi + \global\divide\alignsep@\@tempcntb + \fi +% \end{macrocode} +% Now we make sure \cs{alignsep@} isn't too small. +% \begin{macrocode} + \ifdim\alignsep@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \ifdim\eqnshift@>\z@ + \if@fleqn\else + \global\eqnshift@\displaywidth + \global\advance\eqnshift@-\totwidth@ + \global\advance\eqnshift@-\@tempcntb\alignsep@ + \global\divide\eqnshift@\tw@ + \fi + \fi + \fi + \ifdim\eqnshift@<\z@ + \global\eqnshift@\z@ + \fi + \calc@shift@align +% \end{macrocode} +% Next, we calculate the value of \cs{tagshift@}. This is the glue +% that will be inserted in front of the equation tag to make sure +% it lines up flush against the appropriate margin. +% \begin{macrocode} + \global\tagshift@\totwidth@ + \global\advance\tagshift@\@tempcntb\alignsep@ + \if@fleqn + \ifnum\xatlevel@=\tw@ + \global\advance\tagshift@-\@mathmargin\relax + \fi + \else + \global\advance\tagshift@\eqnshift@ + \fi + \iftagsleft@ \else + \global\advance\tagshift@-\displaywidth + \fi +% \end{macrocode} +% Finally, we increase \cs{totwidth@} by an appropriate multiple of +% \cs{minalignsep}. If the result is greater than +% \cs{displaywidth}, it means that at least one line in the +% \env{align} is overfull and we will issue an appropriate warning +% message (via \cs{bl@ck}) at the end of the environment. +% \begin{macrocode} + \dimen@\minalignsep\relax + \global\advance\totwidth@\@tempcntb\dimen@ + \ifdim\totwidth@>\displaywidth + \global\let\displaywidth@\totwidth@ + \else + \global\let\displaywidth@\displaywidth + \fi + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% The code for calculating the appropriate placement of equation +% tags in the \env{align} environments is quite complicated and +% varies wildly depending on the settings of the |tagsleft@| and +% |@fleqn| switches. To minimize memory and hash space usage, we +% only define the variant appropriate for the current setting of +% those switches. +% +% It would be worthwhile to examine this code more closely someday +% and see if it could be optimized any. +% +% \paragraph{Tag placement when \cs{tagsleft@true}, +% \cs{@fleqntrue}.} +% +% We begin with the version of \cs{calc@shift@align} appropriate +% for flush-left equations with tags on the left. +% +% \begin{macro}{\calc@shift@align} +% This is the simplest case. Since the left margin is fixed, in +% general the only thing to do is check whether there is room for +% the tag in the left margin. The only exception is that if +% $\cs{eqnshift@} = 0\,\mathrm{pt}$---meaning that we're in a +% \env{flalign} environment and this is the first line with a tag +% that we've encountered---then we set $\cs{eqnshift@} = +% \cs{@mathmargin}$ and recalculate \cs{alignsep@}. This is done +% by \cs{x@calc@shift@lf}. +% \begin{macrocode} +\iftagsleft@\if@fleqn + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup +% \end{macrocode} +% \cs{@tempdima} is initialized to $\cs{@mathmargin} - +% \cs{mintagsep}$, which yields the maximum size of a tag that will +% not be shifted to another line. +% \begin{macrocode} + \@tempdima\@mathmargin\relax + \advance\@tempdima-\mintagsep\relax +% \end{macrocode} +% Now we examine each row in turn. If the width of the tag on the +% line is non-positive---meaning either that there is no tag or +% else that the user has forced it to have zero width---we mark the +% tag to remain unshifted. Otherwise, we call \cs{x@calc@shift@lf} +% to determine whether any adjustments need to be made to +% \cs{eqnshift@} and \cs{alignsep@}. Note the difference in +% treatment of zero-width tags between this code and \tex/'s +% built-in algorithm: here, a width of zero prohibits the tag from +% being shifted, while in \tex/'s built-in algorithm, a width of +% zero forces the tag to be shifted. +% \begin{macrocode} + \loop + \ifnum\row@>0 + \ifdim\tag@width\row@>\z@ + \x@calc@shift@lf + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\x@calc@shift@lf} +% As mentioned above, \cs{x@calc@shift@lf} first checks to see if +% the current left margin is set to 0 and, if so, resets it to +% \cs{@mathmargin} and recalculates \cs{alignsep@}. Next, it +% checks whether the length of the current tag exceeds the +% previously calculated limit and, if so, marks the tag to be +% shifted to a separate line. +% \begin{macrocode} + \def\x@calc@shift@lf{% + \ifdim\eqnshift@=\z@ + \global\eqnshift@\@mathmargin\relax + \alignsep@\displaywidth + \advance\alignsep@-\totwidth@ + \global\divide\alignsep@\@tempcntb + \ifdim\alignsep@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \fi + \fi + \ifdim\tag@width\row@>\@tempdima + \saveshift@1% + \else + \saveshift@0% + \fi + } +\fi\fi +% \end{macrocode} +% \end{macro} +% +% \paragraph{Tag placement when \cs{tagsleft@false}, +% \cs{@fleqntrue}.} +% +% Next we consider the case when equations are flush-left, but tags +% are on the right. This case is somewhat more complicated than +% the previous one, since we can adjust the right margin by varying +% the inter-align separatin. Thus, when a tag is found to be too +% close to its equation, we first attempt to decrease +% \cs{alignsep@} enough to move the equation off to an acceptable +% distance. Only if that would require a value of \cs{alignsep@} +% less than \cs{minalignsep} do we move the tag to a separate line. +% +% \begin{macro}{\calc@shift@align} +% This version of \cs{calc@shift@align} differs from the previous +% version only in calling \cs{x@calc@shift@rf} rather than +% \cs{x@calc@shift@lf}. +% \begin{macrocode} +\iftagsleft@\else\if@fleqn + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup + \loop + \ifnum\row@>0 + \ifdim\tag@width\row@>\z@ + \x@calc@shift@rf + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\x@calc@shift@rf} +% To start, we need to know two quantities: the number of align +% structures in the current row and the ``effective length'' of the +% row, defined as the distance from the left margin to the +% right edge of the text assuming that \cs{eqnshift@} and +% \cs{alignsep@} are both~0. To get the number of align +% structures, we first count the number of columns by counting the +% number of entries in the \cs{fieldlengths@} for the current row. +% The effective length is calcuated by \cs{x@rcalc@width} and put +% in the temporary register \cs{@tempdimc}, using \cs{@tempdimb} as +% an auxiliary variable. +% \begin{macrocode} + \def\x@calc@shift@rf{% + \column@\z@ + \@tempdimb\z@ + \@tempdimc\z@ + \edef\@tempb{\fieldlengths@\row@}% + \@for\@tempa:=\@tempb\do{% + \advance\column@\@ne + \x@rcalc@width + }% + \begingroup +% \end{macrocode} +% If there are $n$ columns in the current row, then there are +% $\lfloor (n+1)/2 \rfloor$ align structures and $\lfloor (n-1)/2 +% \rfloor$ interalign spaces. +% \begin{macrocode} + \advance\column@\m@ne + \divide\column@\tw@ +% \end{macrocode} +% If this is smaller than the maximum number of interalign spaces +% in the environment, then we need to reduce \cs{@tempcnta} (the +% total number of flexible spaces in the current line) by +% $\cs{@tempcntb} - \cs{column@}$ and reset \cs{@tempcntb} to +% \cs{column@}. +% \begin{macrocode} + \ifnum\@tempcntb>\column@ + \advance\@tempcnta-\@tempcntb + \advance\@tempcnta\column@ + \@tempcntb\column@ + \fi +% \end{macrocode} +% Next, we add the width of the tag and the (fixed) left margin to +% the effective length calculated above. This can be used to +% calculate how much ``free space'' there is in the current line +% and thus how much leeway we have to increase the amount of space +% between the tag and the equation. +% \begin{macrocode} + \tagwidth@\tag@width\row@\relax + \@tempdima\eqnshift@ + \advance\@tempdima\@tempdimc\relax + \advance\@tempdima\tagwidth@ +% \end{macrocode} +% The first thing to check is whether the tag should be shifted to +% a separate line. To do this, we add the minimum interalign +% separation and the \cs{mintagsep} to the value of \cs{@tempdima} +% just calculated. This yields the minimum acceptable length of +% the current line. If that is greater than \cs{displaywidth}, we +% mark the tag to be calculated. Otherwise, we mark the tag to be +% kept on the same line and then check to see if the \cs{alignsep@} +% needs to be reduced to make room for the tag. +% \begin{macrocode} + \dimen@\minalignsep\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\mintagsep\relax + \advance\dimen@\@tempdima + \ifdim\dimen@>\displaywidth + \saveshift@1% + \else + \saveshift@0% +% \end{macrocode} +% Now we perform essentially the same calculation, but using the +% current value of \cs{alignsep@} instead of \cs{minalignsep}. +% This gives the current length of the line. If this is greater +% than \cs{displaywidth}, we recalculate \cs{alignsep@} to make +% room for the tag. +% \begin{macrocode} + \dimen@\alignsep@\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\@tempdima + \advance\dimen@\tagwidth@ + \ifdim\dimen@>\displaywidth + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \ifnum\xatlevel@=\tw@ + \advance\dimen@-\mintagsep\relax + \fi + \divide\dimen@\@tempcnta + \ifdim\dimen@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \else + \global\alignsep@\dimen@ + \fi + \fi + \fi + \endgroup + } +\fi\fi +% \end{macrocode} +% \end{macro} +% +% \paragraph{Tag placement when \cs{tagsleft@false}, +% \cs{@fleqnfalse}.} +% +% This is similar to the previous case, except for the added +% complication that both \cs{alignsep@} and \cs{eqnshift@} can +% vary, which makes the computations correspondingly more +% complicated. +% +% \begin{macro}{\calc@shift@align} +% \begin{macrocode} +\iftagsleft@\else\if@fleqn\else + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup + \loop + \ifnum\row@>0 + \ifdim\tag@width\row@>\z@ + \x@calc@shift@rc + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\x@calc@shift@rc} +% \begin{macrocode} + \def\x@calc@shift@rc{% + \column@\z@ + \@tempdimb\z@ + \@tempdimc\z@ + \edef\@tempb{\fieldlengths@\row@}% + \@for\@tempa:=\@tempb\do{% + \advance\column@\@ne + \x@rcalc@width + }% + \begingroup + \advance\column@\m@ne + \divide\column@\tw@ + \ifnum\@tempcntb>\column@ + \advance\@tempcnta-\@tempcntb + \advance\@tempcnta\column@ + \@tempcntb\column@ + \fi + \tagwidth@\tag@width\row@\relax + \@tempdima\@tempdimc + \advance\@tempdima\tagwidth@ + \dimen@\minalignsep\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\mintagsep\relax + \ifnum\xatlevel@=\tw@ \else + \advance\dimen@\mintagsep\relax + \fi + \advance\dimen@\@tempdima + \ifdim\dimen@>\displaywidth + \saveshift@1% + \else + \saveshift@0% + \dimen@\eqnshift@ + \advance\dimen@\@tempdima + \advance\dimen@\@tempcntb\alignsep@ + \advance\dimen@\tagwidth@ + \ifdim\dimen@>\displaywidth + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \ifnum\xatlevel@=\tw@ + \advance\dimen@-\mintagsep\relax + \fi + \divide\dimen@\@tempcnta + \ifdim\dimen@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \eqnshift@\displaywidth + \advance\eqnshift@-\@tempdima + \advance\eqnshift@-\@tempcntb\alignsep@ + \global\divide\eqnshift@\tw@ + \else + \ifdim\dimen@<\eqnshift@ + \ifdim\dimen@<\z@ + \global\eqnshift@\z@ + \else + \global\eqnshift@\dimen@ + \fi + \fi + \ifdim\dimen@<\alignsep@ + \global\alignsep@\dimen@ + \fi + \fi + \fi + \fi + \endgroup + } +\fi\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\x@rcalc@width} +% \begin{macrocode} +\iftagsleft@\else + \def\x@rcalc@width{% + \ifdim\@tempa > \z@ + \advance\@tempdimc\@tempdimb + \ifodd\column@ + \advance\@tempdimc\maxcol@width\column@ + \@tempdimb\z@ + \else + \advance\@tempdimc\@tempa\relax + \@tempdimb\maxcol@width\column@ + \advance\@tempdimb-\@tempa\relax + \fi + \else + \advance\@tempdimb\maxcol@width\column@\relax + \fi + } +\fi +% \end{macrocode} +% \end{macro} +% +% \paragraph{Tag placement when \cs{tagsleft@true}, +% \cs{@fleqnfalse}.} +% +% \begin{macro}{\calc@shift@align} +% \begin{macrocode} +\iftagsleft@\if@fleqn\else + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup + \loop + \ifnum\row@>\z@ + \ifdim\tag@width\row@>\z@ + \x@calc@shift@lc + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\x@calc@shift@lc} +% \begin{macrocode} + \def\x@calc@shift@lc{% + \column@\z@ +% \end{macrocode} +% \cs{@tempdima} will (eventually) be set to the effective width of +% the current row, defined as the distance from the leftmost point +% of the current line to the end of the last field of the +% \cs{halign}, ignoring any intervening \cs{tabskip}s, plus the +% width of the current tag. That is, it will be the width of the +% first non-empty field plus the sum of the maximum widths of all +% following fields, plus the tag width. +% +% \cs{@tempdimb} will be the ``indentation'' of leftmost end of +% text, ignoring the \cs{tabskip} glue, i.e., it will be the sum of +% the maximum widths of any fields to the left of the first +% non-empty field, plus whatever empty space there is at the +% beginning of the first non-empty field. +% \begin{macrocode} + \@tempdima\z@ % ``width of equation'' + \@tempdimb\z@ % ``indent of equation'' + \edef\@tempb{\fieldlengths@\row@}% + \@for\@tempa:=\@tempb\do{% + \advance\column@\@ne + \x@lcalc@width + }% + \begingroup + \tagwidth@\tag@width\row@\relax +% \end{macrocode} +% \cs{@tempdima} is now easy to calculate, since it is just +% $\cs{totwidth@} - \cs{@tempdimb} + \cs{tagwidth@}$. +% \begin{macrocode} + \@tempdima\totwidth@ + \advance\@tempdima-\@tempdimb + \advance\@tempdima\tagwidth@ +% \end{macrocode} +% Next, we check to see whether there is room for both the equation +% and the tag on the same line, by calculating the minimum +% acceptable length of the current row and comparing that to +% \cs{displaywidth}. Note that here we use \cs{@tempcntb}, i.e., +% the number of interalign spaces after the first non-empty align +% structure. +% \begin{macrocode} + \dimen@\minalignsep\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\mintagsep\relax + \ifnum\xatlevel@=\tw@ \else + \advance\dimen@\mintagsep\relax + \fi + \advance\dimen@\@tempdima +% \end{macrocode} +% If the minimum acceptable width of the current line is greater +% than \cs{displaywidth}, we mark the current tag to be shifted to +% a separate line. +% \begin{macrocode} + \ifdim\dimen@>\displaywidth + \saveshift@1% + \else +% \end{macrocode} +% Otherwise, the tag can stay on the same line as the equation, but +% we need to check whether it is too close to the equation. So, we +% calculate the distance between the left margin and the left side +% of the equation, using the current values of \cs{eqnshift@} and +% \cs{alignsep@}. Note that we use \cs{count@} here, not +% \cs{@tempcntb}, as above. +% \begin{macrocode} + \saveshift@0% + \dimen@\alignsep@ + \multiply\dimen@\count@ + \advance\dimen@\eqnshift@ + \advance\dimen@\@tempdimb +% \end{macrocode} +% If the left margin is less than twice the tag width, we calculate +% new values of \cs{eqnshift@} and \cs{alignsep@} to move the +% equation further away from the tag. In particular, we center the +% current line between its tag and the right margin. Note that +% although we later will need to transform \cs{dimen@} into a value +% suitable for use as \cs{eqnshift@}, for the time being it is more +% useful to think of it as the space separating the tag from the +% equation. +% \begin{macrocode} + \ifdim\dimen@<2\tagwidth@ + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \ifnum\xatlevel@=\tw@ + \advance\dimen@-\mintagsep\relax + \fi +% \end{macrocode} +% In certain circumstances we will get a divide-by-zero error here +% unless we guard against it. Use of \cs{@tempcnta} is complicated, +% sometimes it is assigned globally, sometimes locally. Need to sort +% it out one of these days [mjd,2000/06/02]. +% \begin{macrocode} + \ifnum\@tempcnta>\z@ + \divide\dimen@\@tempcnta + \else \dimen@\z@ + \fi +% \end{macrocode} +% As usual, we check to make sure we don't set \cs{alignsep@} +% smaller than \cs{minalignsep} and, in any case, that we don't +% replace \cs{alignsep@} by a larger value. +% \begin{macrocode} + \ifdim\dimen@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \advance\dimen@-\@tempcntb\alignsep@ + \global\divide\dimen@\tw@ + \else + \ifdim\dimen@<\alignsep@ + \global\alignsep@\dimen@ + \fi + \fi +% \end{macrocode} +% Next, we calculate an appropriate value of \cs{eqnshift@}, +% assuming that \cs{dimen@} is the desired separation between the +% tag and equation of the current line. This means that we first +% need to adjust \cs{dimen@} if we're in an \env{flalign} +% environment. +% \begin{macrocode} + \ifnum\xatlevel@=\tw@ + \dimen@\mintagsep\relax + \fi +% \end{macrocode} +% Now we calculate the value of \cs{eqnshift@} needed to produce a +% separation of \cs{dimen@} between the equation tag and the +% beginning of the equation. To do this, we need the following +% equation to hold: +% \[ +% \cs{eqnshift@} + n\cs{alignsep@} + \cs{@tempdimb} +% = \cs{tagwidth@} + \cs{dimen@} +% \] +% where $n = \cs{count@}$ is the number of interalign spaces before +% the first non-empty field of the current line. +% \begin{macrocode} + \advance\dimen@\tagwidth@ + \advance\dimen@-\@tempdimb + \advance\dimen@-\count@\alignsep@ +% \end{macrocode} +% The value of \cs{eqnshift@} just calculated is the minimum +% acceptable value; thus, we save it only if it is larger than the +% current value. +% \begin{macrocode} + \ifdim\dimen@>\eqnshift@ + \global\eqnshift@\dimen@ + \fi + \fi + \fi + \endgroup + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\x@lcalc@width} +% This macro calculates the ``indentation'' of the current row, as +% defined above under the description of \cs{x@calc@shift@lc}. +% This macro is called for each field of the current line, with +% \cs{@tempa} set to the width of the current field. Ideally, the +% loop enclosing \cs{x@lcalc@width} would terminate as soon as +% \cs{@tempa} is non-zero, but that would be a bit tricky to +% arrange. Instead, we use \cs{@tempdima} as a flag to signal when +% we've encountered the first non-empty field. +% +% \begin{macrocode} + \def\x@lcalc@width{% + \ifdim\@tempdima = \z@ +% \end{macrocode} +% If the current field is empty (i.e., $\cs{@tempa} = +% \mathrm{0\,pt}$, then we increment \cs{@tempdimb} by the width of +% the current field). Otherwise, we set $\cs{@tempdima} = +% \mathrm{1\,pt}$ as a signal value and increment \cs{@tempdimb} by +% the width of whatever empty space there might be at the left of +% the current field. +% \begin{macrocode} + \ifdim\@tempa > \z@ + \@tempdima\p@ + \ifodd\column@ + \advance\@tempdimb \maxcol@width\column@ + \advance\@tempdimb-\@tempa + \fi +% \end{macrocode} +% In addition, we need to adjust the values of \cs{@tempcnta} and +% \cs{@tempcntb} to account for any empty align structures that +% might occur at the beginning of the current line. More +% specifically, we first set \cs{count@} equal to the number of +% interalign spaces preceding the current field (namely, $\lfloor +% (\cs{\column@}-1)/2 \rfloor$), and then subtract \cs{count@} from +% both \cs{@tempcnta} and \cs{@tempcntb}. The rationale is that +% for the purposes of adjusting the spacing between the tag and the +% equation, the only flexible interalign spaces are those after +% the first non-empty align structure, so we need to treat those +% different from the ones before the first non-empty align +% structure. +% \begin{macrocode} + \count@\column@ + \advance\count@\m@ne + \divide\count@\tw@ + \advance\@tempcnta-\count@ + \advance\@tempcntb-\count@ + \else + \advance\@tempdimb \maxcol@width\column@\relax + \fi + \fi + } +\fi\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\place@tag} +% \cs{place@tag} takes care of the placment of tags in the +% \env{align} environments. +% \begin{macrocode} +\def\place@tag{% + \iftagsleft@ + \kern-\tagshift@ + \if1\shift@tag\row@\relax + \rlap{\vbox{% + \normalbaselines + \boxz@ + \vbox to\lineht@{}% + \raise@tag + }}% + \else + \rlap{\boxz@}% + \fi + \kern\displaywidth@ + \else + \kern-\tagshift@ + \if1\shift@tag\row@\relax +% \end{macrocode} +% Added depth to correct vertical spacing of shifted +% equation tags.---dmj, 1994/12/29 +% \begin{macrocode} + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \boxz@ + }}% + \else + \llap{\boxz@}% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\align@preamble} +% \begin{macrocode} +\def\align@preamble{% + &\hfil + \strut@ + \setboxz@h{\@lign$\m@th\displaystyle{##}$}% + \ifmeasuring@\savefieldlength@\fi + \set@field + \tabskip\z@skip + &\setboxz@h{\@lign$\m@th\displaystyle{{}##}$}% + \ifmeasuring@\savefieldlength@\fi + \set@field + \hfil + \tabskip\alignsep@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\set@field} +% \cs{set@field} increments the column counter, tracks the value of +% \cs{lineht@} and finally inserts the box containing the contents +% of the current field. +% \begin{macrocode} +\def\set@field{% + \column@plus + \iftagsleft@ + \ifdim\ht\z@>\lineht@ + \global\lineht@\ht\z@ + \fi + \else + \ifdim\dp\z@>\lineht@ + \global\lineht@\dp\z@ + \fi + \fi + \boxz@ +} +% \end{macrocode} +% \end{macro} +% +% +% \subsection {The \env{split} environment} +% +% \begin{macro}{\split@err} +% A special error function for \env{split} to conserve main mem (at a +% cost of string pool/hash size. +% \begin{macrocode} +\edef\split@err#1{% + \@nx\@amsmath@err{% + \string\begin{split} won't work here% + }{% + \@xp\@nx\csname + Did you forget a preceding \string\begin{equation}?^^J% + If not, perhaps the `aligned' environment is what + you want.\endcsname}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{split} +% If the \env{split} environment occurs inside \env{align} or +% \env{gather}, it can make use of the enclosing halign; if it is +% called inside a simple equation, we add an implicit `gather' +% container. +% +% \begin{macrocode} +\newenvironment{split}{% + \if@display + \ifinner + \@xp\@xp\@xp\split@aligned + \else + \ifst@rred \else \global\@eqnswtrue \fi + \fi + \else \let\endsplit\@empty \@xp\collect@body\@xp\split@err + \fi + \collect@body\gather@split +}{% + \crcr + \egroup + \egroup + \iftagsleft@ \@xp\lendsplit@ \else \@xp\rendsplit@ \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\let\split@tag\relax % init +% \end{macrocode} +% +% \begin{macrocode} +\def\gather@split#1#2#3{% + \@xp\endgroup \reset@equation % math@cr will handle equation numbering + \iftag@ + \toks@\@xp{\df@tag}% + \edef\split@tag{% + \gdef\@nx\df@tag{\the\toks@}% + \global\@nx\tag@true \@nx\nonumber + }% + \else \let\split@tag\@empty + \fi + \spread@equation +% \end{macrocode} +% The extra vcenter wrapper here is not really a good thing but +% without it there are compatibility problems with old documents that +% throw in some extra material between \verb'\begin{equation}' and +% \verb'\begin{split}' (for example, \verb'\hspace{-1pc}' or +% \verb'\left\{'). [mjd,1999/09/20] +% \begin{macrocode} + \vcenter\bgroup + \gather@{\split@tag \begin{split}#1\end{split}}% + \def\endmathdisplay@a{% + \math@cr \black@ \totwidth@ \egroup + \egroup + }% +} +% \end{macrocode} +% +% \end{environment} +% +% \begin{macro}{\insplit@} +% \begin{macrocode} +\def\insplit@{% + \global\setbox\z@\vbox\bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \default@tag % disallow use of \tag here + \ialign\bgroup + \hfil + \strut@ + $\m@th\displaystyle{##}$% + &$\m@th\displaystyle{{}##}$% + \hfill % Why not \hfil?---dmj, 1994/12/28 + \crcr +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rendsplit@} +% Moved the box maneuvers inside the \cs{ifinalign@}, since that is +% the only place they are needed.---dmj, 1994/12/28 +% +% TODO: Explore interaction of tag-placement algorithm with +% \env{split}. Is there any way for \env{split} to pass the +% relevant information out to the enclosing \env{gather} or +% \env{align}? +% \begin{macrocode} +\def\rendsplit@{% + \ifinalign@ +% \end{macrocode} +% Changed |\box9| into a \cs{vtop} here for better spacing. +% \begin{macrocode} + \global\setbox9 \vtop{% + \unvcopy\z@ + \global\setbox8 \lastbox + \unskip + }% + \setbox\@ne\hbox{% + \unhcopy8 + \unskip + \global\setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \ifctagsplit@ + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}% + }% + \else + \global\setbox7 \hbox{\unhbox\tw@\unskip}% +% \end{macrocode} +% Added \cs{add@amps} to make sure we put the last line of the +% \env{split} into the proper column of an \env{align} environment +% with multiple align structures.---dmj, 1994/12/28 +% +% Special care has to be taken in this case because the \env{split} +% turns into two lines of the \env{align} instead of just one. So, +% we have to make sure that the first line produced by the +% \env{split} doesn't upset our bookkeeping, hence we call +% \cs{savetaglength@} to insert 0\,pt as the tag for this +% pseudo-line, and we advance the \cs{row@} counter and reset +% \cs{lineht@} afterwards. It would be nice if we could just +% replace the \cs{crcr} by \cs{math@cr@@@}, but that would cause +% problems with the tag processing. +% \begin{macrocode} + \gdef\split@{% + \global\@tempcnta\column@ + &\setboxz@h{}% + \savetaglength@ + \global\advance\row@\@ne + \vbox{\moveleft\wd\thr@@\box9}% + \crcr + \noalign{\global\lineht@\z@}% + \add@amps\@tempcnta + \box\thr@@ + &\box7 + }% + \fi + \else + \ifctagsplit@ + \gdef\split@{\vcenter{\boxz@}}% + \else +% \end{macrocode} +% Changed to just \cs{boxz@}, otherwise last line gets centered +% rather than aligned properly with respect to the rest of the +% lines. But this means that we can't see inside of the last line +% to decide whether the tag needs to be moved. Will have to think +% about this.---dmj, 1994/12/28 +% \begin{macrocode} + \gdef\split@{% + \boxz@ +% \box9 +% \crcr +% \hbox{\box\thr@@\box7}% + }% + \fi + \fi + \aftergroup\split@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lendsplit@} +% \begin{macrocode} +\def\lendsplit@{% + \global\setbox9\vtop{\unvcopy\z@}% + \ifinalign@ +% \end{macrocode} +% Moved following two boxes inside the \cs{ifinalign@}, since they +% are only used in that case. In fact, if we just kept track of +% the width of the first column, we could dispense with this +% entirely. Surely that would be more efficient than all these box +% copies.---dmj, 1994/12/28 +% \begin{macrocode} + \setbox\@ne\vbox{% + \unvcopy\z@ + \global\setbox8\lastbox + }% + \setbox\@ne\hbox{% + \unhcopy8% + \unskip + \setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \ifctagsplit@ + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vcenter{\vbox{\moveleft\wd\thr@@\box9}}% + }% + \else + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vbox{\moveleft\wd\thr@@\box9}% + }% + \fi + \else + \ifctagsplit@ + \gdef\split@{\vcenter{\box9}}% + \else + \gdef\split@{\box9}% + \fi + \fi + \aftergroup\split@ +} +% \end{macrocode} +% \end{macro} +% +% With \pkg{amsmath} 1.2 it was possible to put things like +% \verb'\left\{' between \verb'\begin{equation}' and +% \verb'\begin{split}' without getting any error message. For +% backward compatibility we try to avoid a fatal error in this case +% and instead attempt recovery with \env{aligned}. +% \begin{macrocode} +\def\split@aligned#1#2{% + \iffalse{\fi\ifnum0=`}\fi + \collect@body\split@al@a} +% \end{macrocode} +% +% \begin{macrocode} +\def\split@al@a#1#2#3{% + \split@warning + \endgroup +% \end{macrocode} +% If the \opt{fleqn} and \opt{tbtags} options are both in effect then +% we will need to add an optional argument on the \env{aligned} +% environment. +% \begin{macrocode} + \toks@{\begin{aligned}}% + \if@fleqn \split@al@tagcheck \fi +% \end{macrocode} +% The \cs{relax} here is to prevent \cs{@let@token} from being left +% equal to an ampersand if that happens to be the first thing in the body. +% \begin{macrocode} + \the\toks@\relax#1\end{aligned}% + \ifnum0=`{\fi\iffalse}\fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\split@al@tagcheck{% + \ifctagsplit@ + \else + \iftagsleft@ \toks@\@xp{\the\toks@ [t]}% + \else \toks@\@xp{\the\toks@ [b]}% + \fi + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\split@warning{% + \PackageWarning{amsmath}{% +Cannot use `split' here;\MessageBreak trying to recover with `aligned'}% +} +% \end{macrocode} +% +% \subsection{The \env{multline} environment} +% +% In the original \amstex/, \cn{multlinegap} is a macro with an +% argument that resets an internal dimension (one with an \qc{\@} +% character in its name). Here, to save control sequence names, we +% define \cn{multlinegap} to be the dimension itself and the +% documentation instructs users to use \cn{setlength} if they +% need to change it. +% \begin{macro}{\multlinegap} +% \begin{macro}{\multlinetaggap} +% Changed \cs{multlinegap} and \cs{multlinetaggap} to skip +% registers. Also changed name to \cs{multlinetaggap} from +% \cs{multlinetaggap@}. +% \begin{macrocode} +\newskip\multlinegap +\multlinegap10pt +\newskip\multlinetaggap +\multlinetaggap10pt +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\start@multline} +% \begin{macrocode} +\def\start@multline#1{% + \RIfM@ + \nomath@env + \DN@{\@namedef{end\@currenvir}{}\@gobble}% + \else + $$% + #1% + \ifst@rred + \nonumber + \else + \global\@eqnswtrue + \fi + \let\next@\multline@ + \fi + \collect@body\next@ +} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{multline} +% \begin{environment}{multline*} +% \begin{macrocode} +\newenvironment{multline}{% + \start@multline\st@rredfalse +}{% + \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi + \ignorespacesafterend +} +% \end{macrocode} +% +% \begin{macrocode} +\newenvironment{multline*}{\start@multline\st@rredtrue}{\endmultline} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \begin{macro}{\multline@} +% \begin{macrocode} +\def\multline@#1{% + \Let@ +% \end{macrocode} +% +% For multline neither \cs{displ@y} no \cs{displ@y@} is quite right; +% we want to advance the row number and (I suppose?) the +% display-pagebreak level, but we only want to do tag-related stuff +% once before the first line, not repeat it for every line. (Recall +% that the arg of \cs{@display@init} goes into \cs{everycr}.) +% \begin{macrocode} + \@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}% + \chardef\dspbrk@context\z@ + \restore@math@cr +% \end{macrocode} +% The \env{multline} environment is somewhat unusual, in that +% \cs{tag} and \cs{label} are enabled only during the measuring +% phase and disabled during the production phase. +% Here we disable \cs{tag} and \cs{label}; \cs{mmeasure@} will +% re-enable them temporarily. +% \begin{macrocode} + \let\tag\tag@in@align + \global\tag@false \global\let\raise@tag\@empty + \mmeasure@{#1}% + \let\tag\gobble@tag \let\label\@gobble + \tabskip \if@fleqn \@mathmargin \else \z@skip \fi + \totwidth@\displaywidth + \if@fleqn + \advance\totwidth@-\@mathmargin + \fi + \halign\bgroup + \hbox to\totwidth@{% +% \end{macrocode} +% In order to get the spacing of the last line right in fleqn +% mode, we need to play a little game here. Normally the +% stretchability of the \cs{hskip} here will be suppressed by the +% \cs{hfil} at the end of the template, except inside the last line, +% when that \cs{hfil} will be removed by the \cs{hfilneg} in +% \cs{lendmultline@}. +% \begin{macrocode} + \if@fleqn + \hskip \@centering \relax + \else + \hfil + \fi + \strut@ + $\m@th\displaystyle{}##\endmultline@math + \hfil + }% + \crcr +% \end{macrocode} +% In \opt{fleqn} mode, it's the \cs{tabskip} of \cs{@mathmargin} +% that needs to be removed in the first line, not the \cs{hfil} at +% the beginning of the template. +% \begin{macrocode} + \if@fleqn + \hskip-\@mathmargin + \def\multline@indent{\hskip\@mathmargin}% put it back + \else + \hfilneg + \def\multline@indent{\hskip\multlinegap}% + \fi + \iftagsleft@ + \iftag@ + \begingroup + \ifshifttag@ + \rlap{\vbox{% + \normalbaselines + \hbox{% + \strut@ + \make@display@tag + }% + \vbox to\lineht@{}% + \raise@tag + }}% +% \end{macrocode} +% If the equation tag doesn't fit on the same line with the first +% line of the display, we'll indent the first line by +% \cn{multlinegap}. This is a change from \pkg{amstex}, where the +% first line would have been flush against the left margin in this +% case. A corresponding change will be made in \cs{rendmultline@}. +% \begin{macrocode} + \multline@indent + \else + \setbox\z@\hbox{\make@display@tag}% + \dimen@\@mathmargin \advance\dimen@-\wd\z@ + \ifdim\dimen@<\multlinetaggap + \dimen@\multlinetaggap + \fi + \box\z@ \hskip\dimen@\relax + \fi + \endgroup + \else + \multline@indent + \fi + \else + \multline@indent + \fi + #1% +} +% \end{macrocode} +% +% An extra level of indirection for the closing \verb'$' in multline +% allows us to avoid getting an extra thinmuskip from a final +% mathpunct in the equation contents, when equation numbers are on +% the right. If we did not use this workaround, the sequence of +% elements for a final comma would be, e.g., +% \begin{verbatim} +% ... ,<hskip><box containing equation number> +% \end{verbatim} +% which is equivalent to a sequence \verb'<mathpunct><mathord>' as +% far as the automatic math spacing is concerned. +% \begin{macrocode} +\def\endmultline@math{$} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lendmultline@} +% Bug fix: changed \cs{crcr} to \cs{math@cr} so that \cs{@eqpen} +% gets reset properly if \cs{displaybreak} is used on the +% penultimate line of an \env{align}. +% \begin{macrocode} +\def\lendmultline@{% + \hfilneg + \hskip\multlinegap + \math@cr + \egroup + $$% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\rendmultline@} +% \begin{macrocode} +\def\rendmultline@{% + \iftag@ + $\let\endmultline@math\relax + \ifshifttag@ + \hskip\multlinegap +% \end{macrocode} +% Added depth to correct vertical spacing of shifted equation +% tags.---dmj, 1994/12/29 +% \begin{macrocode} + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \hbox{\strut@\make@display@tag}% + }}% + \else + \hskip\multlinetaggap + \make@display@tag + \fi + \else + \hskip\multlinegap + \fi + \hfilneg +% \end{macrocode} +% Use \cs{math@cr} rather than just \cs{crcr} so that \cs{@eqpen} +% gets reset properly if \cs{displaybreak} is used. +% \begin{macrocode} + \math@cr + \egroup$$% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mmeasure@} +% \begin{macrocode} +\def\mmeasure@#1{% + \begingroup + \measuring@true +% \end{macrocode} +% We use \cs{begin/endgroup} rather than |{}| in this definition of +% \cn{label} because the latter would create an extra (wasteful of +% main mem) null box in the current math list. [mjd, 1995/01/17] +% \begin{macrocode} + \def\label##1{% + \begingroup\measuring@false\label@in@display{##1}\endgroup}% + \def\math@cr@@@{\cr}% + \let\shoveleft\@iden \let\shoveright\@iden + \savecounters@ + \global\row@\z@ + \setbox\@ne\vbox{% + \global\let\df@tag\@empty + \halign{% + \setboxz@h{\@lign$\m@th\displaystyle{}##$}% + \iftagsleft@ + \ifnum\row@=\@ne + \global\totwidth@\wdz@ + \global\lineht@\ht\z@ + \fi + \else + \global\totwidth@\wdz@ + \global\lineht@\dp\z@ + \fi + \crcr + #1% + \crcr + }% + }% + \ifx\df@tag\@empty\else\global\tag@true\fi + \if@eqnsw\global\tag@true\fi + \iftag@ + \setboxz@h{% + \if@eqnsw + \stepcounter{equation}% + \tagform@\theequation + \else + \df@tag + \fi + }% + \global\tagwidth@\wdz@ + \dimen@\totwidth@ + \advance\dimen@\tagwidth@ + \advance\dimen@\multlinetaggap + \iftagsleft@\else + \if@fleqn + \advance\dimen@\@mathmargin + \fi + \fi + \ifdim\dimen@>\displaywidth + \global\shifttag@true + \else + \global\shifttag@false + \fi + \fi + \restorecounters@ + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\shoveleft} +% \begin{macro}{\shoveright} +% \cs{shoveleft} and \cs{shoveright} need to do slightly different +% things depending on whether tags are on the left or the right and +% whether we're in \opt{fleqn} mode. For compactness of code, we +% make the appropriate decisions at ``compile'' time rather than at +% load time. +% +% TODO: Investigate making \cs{shoveright} behave ``properly''(?) if +% used on the first line of a \env{multline} and make \cs{shoveleft} +% behave properly if used on the last line of a \env{multline}. But +% in his \fn{amstex.doc} Spivak indicates those commands should never +% be used on a first or last line. Perhaps better to leave the +% question open unless/until real-life examples turn up. +% \begin{macrocode} +\iftagsleft@ + \def\shoveright#1{% + #1% + \hfilneg + \hskip\multlinegap + } +\else + \def\shoveright#1{% + #1% + \hfilneg + \iftag@ + \ifshifttag@ + \hskip\multlinegap + \else + \hskip\tagwidth@ + \hskip\multlinetaggap + \fi + \else + \hskip\multlinegap + \fi + } +\fi + +\if@fleqn + \def\shoveleft#1{#1}% +\else + \iftagsleft@ + \def\shoveleft#1{% + \setboxz@h{$\m@th\displaystyle{}#1$}% + \setbox\@ne\hbox{$\m@th\displaystyle#1$}% + \hfilneg + \iftag@ + \ifshifttag@ + \hskip\multlinegap + \else + \hskip\tagwidth@ + \hskip\multlinetaggap + \fi + \else + \hskip\multlinegap + \fi + \hskip.5\wd\@ne + \hskip-.5\wdz@ + #1% + } + \else + \def\shoveleft#1{% + \setboxz@h{$\m@th\displaystyle{}#1$}% + \setbox\@ne\hbox{$\m@th\displaystyle#1$}% + \hfilneg + \hskip\multlinegap + \hskip.5\wd\@ne + \hskip-.5\wdz@ + #1% + } + \fi +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{The \env{equation} environment} +% +% Rewritten from the ground up for version 2.0 to fix no-shrink and +% no-shortskips bugs [mjd,2000/01/06]. +% +% Standard \latex/ provides three environments for one-line equations: +% \cn{[}\cn{]}, \env{equation}, and \env{displaymath}. We add +% \env{equation*} as a synonym for \env{displaymath}. +% \begin{macrocode} +\@saveprimitive\leqno\@@leqno +\@saveprimitive\eqno\@@eqno +\def\eqno{\@@eqno\let\eqno\relax\let\leqno\relax} +\def\leqno{\@@leqno\let\leqno\relax\let\eqno\relax} +% +\let\veqno=\@@eqno +\iftagsleft@ \let\veqno=\@@leqno \fi +% \end{macrocode} +% +% Support for the \pkg{showkeys} package: provide no-op definitions +% for a couple of SK functions, if they are not already defined. Then +% we can just call them directly in our code without any extra fuss. +% If the \pkg{showkeys} package is loaded later, our trivial +% definitions will get overridden and everything works fine. +% \begin{macrocode} +\@ifundefined{SK@@label}{% + \let\SK@@label\relax \let\SK@equationtrue\relax +}{} +% \end{macrocode} +% +% \begin{macrocode} +\let\reset@equation\@empty +% \end{macrocode} +% +% Cf \cs{tag@in@align}. This is a bit of a mess though. Could use +% some work. [mjd,1999/12/21] +% \begin{macrocode} +\let\alt@tag\@empty +\def\tag@in@display#1#{\relax\tag@in@display@a{#1}} +\def\tag@in@display@a#1#2{% + \iftag@ + \invalid@tag{Multiple \string\tag}\relax + \else + \global\tag@true \nonumber \reset@equation \st@rredtrue + \if *\string#1% + \gdef\alt@tag{\def\SK@tagform@{#2\@gobble}% + \ifx\SK@@label\relax \let\tagform@\SK@tagform@ \fi + }% + \make@df@tag@@{#2}% + \else + \make@df@tag@@@{#2}% + \fi + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\let\restore@hfuzz\@empty +% \end{macrocode} +% +% \begin{macrocode} +\def\mathdisplay#1{% + \ifmmode \@badmath + \else + $$\def\@currenvir{#1}% +% \end{macrocode} +% Allow use of \cn{displaybreak}. +% \begin{macrocode} + \let\dspbrk@context\z@ +% \end{macrocode} +% Although in some cases simpler label handling would seem to be +% sufficient, always using \cs{label@in@display} makes it easier to +% support the \pkg{showkeys} package. +% \begin{macrocode} + \let\tag\tag@in@display \let\label\label@in@display \SK@equationtrue + \global\let\df@label\@empty \global\let\df@tag\@empty + \global\tag@false + \let\mathdisplay@push\mathdisplay@@push + \let\mathdisplay@pop\mathdisplay@@pop + \if@fleqn +% \end{macrocode} +% Turn off overfull box messages temporarily\mdash otherwise there +% would be unwanted extra ones emitted during our measuring +% operations. +% \begin{macrocode} + \edef\restore@hfuzz{\hfuzz\the\hfuzz\relax}% + \hfuzz\maxdimen +% \end{macrocode} +% Initially set the equation body in a box of displaywidth. Then if +% the box is not overfull, as we find by checking \cs{badness}, we +% have acquired useful information for the subsequent processing. +% \begin{macrocode} + \setbox\z@\hbox to\displaywidth\bgroup + \let\split@warning\relax \restore@hfuzz + \everymath\@emptytoks \m@th $\displaystyle + \fi + \fi +} +% \end{macrocode} +% +% Arg 1 is not currently used. I thought it might come in handy for +% error messages. +% \begin{macrocode} +\def\endmathdisplay#1{% + \ifmmode \else \@badmath \fi + \endmathdisplay@a + $$% +% \end{macrocode} +% I guess the following code means this structure is non-reentrant. +% But there is plenty of scope for tricky bugs here; suppressing them +% by brute force at least makes it possible to get things working +% correctly for normal use. [mjd,2000/01/06] +% \begin{macrocode} + \global\let\df@label\@empty \global\let\df@tag\@empty + \global\tag@false \global\let\alt@tag\@empty + \global\@eqnswfalse +} +% \end{macrocode} +% +% \begin{macrocode} +\def\endmathdisplay@a{% + \if@eqnsw \gdef\df@tag{\tagform@\theequation}\fi + \if@fleqn \@xp\endmathdisplay@fleqn + \else \ifx\df@tag\@empty \else \veqno \alt@tag \df@tag \fi + \ifx\df@label\@empty \else \@xp\ltx@label\@xp{\df@label}\fi + \fi + \ifnum\dspbrk@lvl>\m@ne + \postdisplaypenalty -\@getpen\dspbrk@lvl + \global\dspbrk@lvl\m@ne + \fi +} +% \end{macrocode} +% +% A boolean variable: Was that last box overfull or not? A value of 0 +% means yes, it was overfull. +% \begin{macrocode} +\let\too@wide\@ne +% \end{macrocode} +% +% Special handling is needed for flush-left equations. We need to +% measure the equation body (found in box 0 after we close it with +% the \cs{egroup}). Then after a fairly normal test to see if it fits +% within the available space, we need to consider overlapping into +% the displayindent area if displayindent is nonzero (as in an +% indented list). If there is an equation number we may have to shift +% it by hand to a separate line when there is not enough room; +% we can no longer take advantage of the automatic shifting provided +% by the \cn{leqno}, \cn{eqno} primitives. +% +% We initially add \cs{@mathmargin} glue at the end of box 0 to get +% an accurate overfull test. If \cs{@mathmargin} contains any shrink +% then we cannot reliably tell whether the box will be overfull or +% not simply by doing hand calculations from the actual width of the +% equation body. We have to actually set the box and find out what +% happens. +% +% On the other hand if we put the \cs{@mathmargin} glue at the +% beginning of the box it's awkward to remove it afterwards. So we +% first put it in at the end and later we will move it to the +% beginning as needed. +% +% \begin{macrocode} +\def\endmathdisplay@fleqn{% + $\hfil\hskip\@mathmargin\egroup +% \end{macrocode} +% We need to save the information about whether box 0 was overfull in +% a variable, otherwise it will disappear in the next setbox +% operation. And we couldn't set the equation number box earlier than +% now, because the body of the equation might have contained a +% \cs{tag} command (well, it could have been done, but this way +% we can reuse the tag-handling code from elsewhere). +% \begin{macrocode} + \ifnum\badness<\inf@bad \let\too@wide\@ne \else \let\too@wide\z@ \fi + \ifx\@empty\df@tag + \else + \setbox4\hbox{\df@tag + \ifx\df@label\@empty \else \@xp\ltx@label\@xp{\df@label}\fi + }% + \fi + \csname emdf@% + \ifx\df@tag\@empty U\else \iftagsleft@ L\else R\fi\fi + \endcsname +} +% \end{macrocode} +% +% For an unnumbered flush-left equation we hope first that the +% the contents fit within displaywidth. If not we need to fall back +% on a more complicated reboxing operation. +% \begin{macrocode} +\def\emdf@U{% + \restore@hfuzz + \ifodd\too@wide % not too wide: just need to swap the glue around + \hbox to\displaywidth{\hskip\@mathmargin\unhbox\z@\unskip}% + \else % M+B > displaywidth + \emdf@Ua + \fi +} +% \end{macrocode} +% +% Some notation: $M$ \cs{@mathmargin}, $B$ the width of the equation +% body, $I$ \cs{displayindent}, $D$ \cs{displaywidth}, $N$ the width +% of the equation number (aka the tag), $S$ \cs{mintagsep}, $C$ +% \cs{columnwidth}. If $M+B > \mbox{displaywidth}$, and if we assume +% $M$ contains shrink, then the only solution left is to encroach +% into the displayindent space. +% \begin{macrocode} +\def\emdf@Ua{% + \hbox to\columnwidth{% + \ifdim\displayindent>\z@ + \hskip\displayindent minus\displayindent + \fi + \hskip\@mathmargin \unhbox\z@ \unskip + }% + \displayindent\z@ \displaywidth\columnwidth +} +% \end{macrocode} +% +% Find out first if the tag fits in ideal position. If so we can just +% plunk down box 2. Otherwise we need to do something more complicated. +% \begin{macrocode} +\def\emdf@R{% + \setbox\tw@\hbox to\displaywidth{% + \hskip\@mathmargin \unhcopy\z@\unskip\hfil\hskip\mintagsep\copy4 + }% + \restore@hfuzz + \ifnum\badness<\inf@bad \box\tw@ \else \emdf@Ra \fi +} +% \end{macrocode} +% +% We shift the equation number to line 2 if it does not fit within +% \cs{displaywidth}. Note that we do not first attempt to let the +% equation body shift leftward into the \cs{displayindent} space. If +% that is desired it will have to be done by hand by adding negative +% space at the beginning of the equation body. I don't expect this to +% arise very often in practice since most of the time +% \cs{displayindent} is zero anyway. +% \begin{macrocode} +\def\emdf@Ra{% + \skip@\displayindent minus\displayindent + \displayindent\z@ \displaywidth\columnwidth + \spread@equation \everycr{}\tabskip\z@skip + \halign{\hbox to\displaywidth{##}\cr + \relax + \ifdim\skip@>\z@ \hskip\skip@ \fi + \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr + \noalign{\raise@tag}% + \hfil\box4 \cr}% +} +% \end{macrocode} +% +% Find out first if the tag fits in ideal position. If so we can just +% plunk down box 2. Otherwise we need to do something more +% complicated. +% \begin{macrocode} +\def\emdf@L{% +% \end{macrocode} +% Calculate the difference between $M$ and $N+S$. If the latter is +% greater, we don't want to add any extra glue between the number and +% the equation body. Otherwise the amount that we want to add is +% \verb'x minus x' where $x=M-(N+S)$. I.e., the distribution of +% spaces across the line is $N,S,x minus x,B,hfil$. +% \begin{macrocode} + \@tempdima\@mathmargin + \advance\@tempdima-\wd4 \advance\@tempdima-\mintagsep + \skip@\@tempdima minus\@tempdima + \setbox\tw@\hbox to\displaywidth{% + \copy4\hskip\mintagsep + \ifdim\skip@>\z@ \hskip\skip@\fi + \unhcopy\z@\unskip + }% + \restore@hfuzz + \ifnum\badness<\inf@bad \box\tw@ \else \emdf@La \fi +} +% \end{macrocode} +% +% If the equation body and equation number will not fit on the same +% line, we put the number on line 1 and the body on line 2, with the +% body positioned as for an unnumbered equation. +% \begin{macrocode} +\def\emdf@La{% + \spread@equation \everycr{}\tabskip\z@skip + \halign{\hbox to\displaywidth{##}\cr + \box4 \hfil \cr + \noalign{\raise@tag}% + \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr}% +} +% \end{macrocode} +% +% If someone has \verb'\[ \]' nested inside a minipage environment +% nested inside a numbered equation, the mathdisplay variables that +% are global will get out of whack unless we take extra care. So we +% make a stack and push all the variables before entering mathdisplay +% and pop them afterwards. But we can save a little work by not doing +% this at the top level, only at inner levels. +% \begin{macrocode} +\newtoks\mathdisplay@stack +\let\mathdisplay@push\@empty +\def\mathdisplay@@push{% + \begingroup + \toks@\@xp{\df@label}\@temptokena\@xp{\df@tag}% + \toks8\@xp{\alt@tag}% + \edef\@tempa{% + \global\if@eqnsw\@nx\@eqnswtrue\else\@nx\@eqnswfalse\fi + \global\iftag@\@nx\tag@false\else\@nx\tag@true\fi + \gdef\@nx\df@label{\the\toks@}\gdef\@nx\df@tag{\the\@temptokena}% + \gdef\@nx\alt@tag{\the\toks8}% + \global\mathdisplay@stack{\the\mathdisplay@stack}% + }% + \global\mathdisplay@stack\@xp{\@tempa} + \endgroup +} +% \end{macrocode} +% +% \begin{macrocode} +\let\mathdisplay@pop\@empty +\def\mathdisplay@@pop{\the\mathdisplay@stack} +% \end{macrocode} +% +% \begin{macrocode} +\renewenvironment{equation}{% + \incr@eqnum + \mathdisplay@push + \st@rredfalse \global\@eqnswtrue + \mathdisplay{equation}% +}{% + \endmathdisplay{equation}% + \mathdisplay@pop + \ignorespacesafterend +} +% \end{macrocode} +% +% \begin{macrocode} +\newenvironment{equation*}{% + \mathdisplay@push + \st@rredtrue \global\@eqnswfalse + \mathdisplay{equation*}% +}{% + \endmathdisplay{equation*}% + \mathdisplay@pop + \ignorespacesafterend +} +% \end{macrocode} +% +% Note: \latex/ defines the \env{displaymath} environment in +% terms of \cn{[} and \cn{]}. +% \begin{macrocode} +\DeclareRobustCommand{\[}{\begin{equation*}} +\DeclareRobustCommand{\]}{\end{equation*}} +% \end{macrocode} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \section{Credits} +% +% Much of the code for the \pkg{amsmath} package had its orgin in +% \fn{amstex.tex}, written by Michael Spivak. The initial work of +% porting \fn{amstex.tex} to \fn{amstex.sty} was done in 1988--1989 +% by Frank Mittelbach and Rainer Sch\"opf. In 1994 David M. Jones +% added the support for the \opt{fleqn} option and did extensive +% improvements to the \env{align[at]} family of environments and to +% the equation number handling in general. Michael Downes at the AMS +% served as coordinator for the efforts of Mittelbach, Sch\"opf, and +% Jones, and has contributed various bug fixes and additional +% refinements over time. +% +% Versions 1.0 and 1.1 of the package carried the name \pkg{amstex} +% instead of \pkg{amsmath}, to indicate its origins; the name was +% changed in 1994 to make it user-oriented rather than +% history-oriented. +% +% \changes{v1.2b}{1995/02/15}{Added kern -alignsep@ to math@cr@@@align} +% \changes{v1.2b}{1995/02/15}{Modified one piece of measure@} +% \changes{v1.2b}{1995/02/15}{Cleaned out some obsolete commentary} +% \changes{v1.2b}{1995/02/15}{Changed kern tagshift@ to kern -tagshift@ +% in the reqno case of place@tag} +% +% \changes{v1.2c}{1996/11/01}{Changed `over etc from error to warning} +% +% \changes{v1.2d}{1997/03/20}{% +% Removed dependency on mixed-case fd file names} +% +% \CheckSum{6699} +% \Finale diff --git a/Master/texmf-dist/source/latex/amsmath/amsopn.dtx b/Master/texmf-dist/source/latex/amsmath/amsopn.dtx new file mode 100644 index 00000000000..fd60965d788 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsopn.dtx @@ -0,0 +1,254 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsopn.dtx", +%%% version = "2.01", +%%% date = "1999/12/14", +%%% time = "17:30:59 EST", +%%% checksum = "46904 254 1037 9431", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "operator name, amsopn, DeclareMathOperator", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that provides a +%%% DeclareMathOperator command for defining named +%%% operators like sin and lim.", +%%% docstring = "The checksum field above contains a CRC-16 checksum +%%% as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of +%%% lines, words, and characters. This is produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% +%\iffalse +%<*driver> +\documentclass{amsdtx} +\begin{document} +\title{The \pkg{amsopn} package} +\author{Michael Downes} +\date{Version \fileversion, \filedate} +\hDocInput{amsopn.dtx} +\end{document} +%</driver> +%\fi +% +% \maketitle +% +% \MakeShortVerb\| +% +% \section{Introduction} +% +% The \pkg{amsopn} package provides a command +% \cn{DeclareMathOperator} for defining new `math operator names' +% similar to the standard function names \cn{sin}, \cn{lim}, +% \cn{max}, etc. +% +% \StopEventually{} +% +% Standard file identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amsopn}[1999/12/14 v2.01 operator names] +% \end{macrocode} +% +% What \cs{nolimits@} does is keep a \cn{limits} typed by the user +% from having any effect. This is used for operatornames whose +% standard usage is never to have limits. +% \begin{macrocode} +\def\nolimits@{\@ifnextchar\limits{\nolimits\@gobble}{\nolimits}} +% \end{macrocode} +% +% In operator names, it is sometimes desired to have text-mode +% punctuation characters such as |*-/:'|. +% Because the body of an +% operator name is set in math mode, these few punctuation +% characters will not come out right (wrong symbol/and or wrong +% spacing). The purpose of \cs{newmcodes@} is to make them act like +% their normal text versions. +% +% Where practical, we use decimal numbers to cut down main mem +% usage (\qc{\"} not needed). +% \begin{macrocode} +\begingroup \catcode`\"=12 +\gdef\newmcodes@{\mathcode`\'39\mathcode`\*42\mathcode`\."613A% +% \end{macrocode} +% Define \cs{std@minus} for \cs{relbar} use; otherwise there are +% problems with arrows constructed with relbar. +% \begin{macrocode} + \ifnum\mathcode`\-=45 \else + \mathchardef\std@minus\mathcode`\-\relax + \fi + \mathcode`\-45\mathcode`\/47\mathcode`\:"603A\relax} +\endgroup +% \end{macrocode} +% +% The command \cs{operatorname} prints its argument as a `math +% operator' like \cs{sin} or \cs{det}, with proper font and spacing. +% \begin{macrocode} +\DeclareRobustCommand{\operatorname}{% + \@ifstar{\qopname\newmcodes@ m}% + {\qopname\newmcodes@ o}}% +% \end{macrocode} +% In the interior of the \cs{mathop} we need a null object (we choose +% a zero kern for minimum waste of main mem) in order to guard +% against the case where \arg{3} is a single letter; \tex/ will seize +% it and center it on the math axis if there is nothing else inside +% the \cs{mathop} atom. +% \begin{macrocode} +\DeclareRobustCommand{\qopname}[3]{% + \mathop{#1\kern\z@\operator@font#3}% + \csname n#2limits@\endcsname} +% \end{macrocode} +% +% \begin{macro}{\DeclareMathOperator} +% The command \cn{DeclareMathOperator} defines the first argument to +% be an operator name whose text is the second argument. The star +% form means that the operator name should take limits (like \cn{max} +% or \cn{lim}). +% \begin{macrocode} +\newcommand{\DeclareMathOperator}{% + \@ifstar{\@declmathop m}{\@declmathop o}} +% \end{macrocode} +% \end{macro} +% +% In the basic set of operator names (below) we did not use +% \cn{DeclareRobustCommand} because of the hash table cost. But we +% use it here to minimize the chances of trouble, since we are +% producing a user-defined command. +% \begin{macrocode} +\long\def\@declmathop#1#2#3{% + \@ifdefinable{#2}{% + \DeclareRobustCommand{#2}{\qopname\newmcodes@#1{#3}}}} +% +\@onlypreamble\DeclareMathOperator +\@onlypreamble\@declmathop +% \end{macrocode} +% +% \begin{macrocode} +\def\arccos{\qopname\relax o{arccos}} +\def\arcsin{\qopname\relax o{arcsin}} +\def\arctan{\qopname\relax o{arctan}} +\def\arg{\qopname\relax o{arg}} +\def\cos{\qopname\relax o{cos}} +\def\cosh{\qopname\relax o{cosh}} +\def\cot{\qopname\relax o{cot}} +\def\coth{\qopname\relax o{coth}} +\def\csc{\qopname\relax o{csc}} +\def\deg{\qopname\relax o{deg}} +\def\det{\qopname\relax m{det}} +\def\dim{\qopname\relax o{dim}} +\def\exp{\qopname\relax o{exp}} +\def\gcd{\qopname\relax m{gcd}} +\def\hom{\qopname\relax o{hom}} +\def\inf{\qopname\relax m{inf}} +\def\injlim{\qopname\relax m{inj\,lim}} +\def\ker{\qopname\relax o{ker}} +\def\lg{\qopname\relax o{lg}} +\def\lim{\qopname\relax m{lim}} +\def\liminf{\qopname\relax m{lim\,inf}} +\def\limsup{\qopname\relax m{lim\,sup}} +\def\ln{\qopname\relax o{ln}} +\def\log{\qopname\relax o{log}} +\def\max{\qopname\relax m{max}} +\def\min{\qopname\relax m{min}} +\def\Pr{\qopname\relax m{Pr}} +\def\projlim{\qopname\relax m{proj\,lim}} +\def\sec{\qopname\relax o{sec}} +\def\sin{\qopname\relax o{sin}} +\def\sinh{\qopname\relax o{sinh}} +\def\sup{\qopname\relax m{sup}} +\def\tan{\qopname\relax o{tan}} +\def\tanh{\qopname\relax o{tanh}} +% \end{macrocode} +% +% \begin{macro}{\operator@font} +% \begin{macro}{\operatorfont} +% This command is provided to allow the document styles to decide in +% which way math operators like `max' or `log' are typeset. The +% default is to set them in \meta{math group} zero of the current +% math version. The original name was \cs{operator@font}, retained +% for compatibility; the second name was added to make it +% more accessible so that users can call this font for use in special +% constructs that are not ordinary operator names but conceptually +% related. +% \begin{macrocode} +\def\operator@font{\mathgroup\symoperators} +\def\operatorfont{\operator@font} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% For backwards compatibility we keep this old command name for the +% time being: +% \begin{macrocode} +\def\operatornamewithlimits{\operatorname*} +% \end{macrocode} +% +% These macros use \cs{mathpalette}s so that they will change size +% in script and scriptscript styles, though it's hard to imagine they +% will ever be used there (the arrows, particularly, look bad in +% subscript sizes). Notice that the use of \cs{ex@} means that the +% vertical spacing may not be optimal in script and scriptscript +% sizes. Unfortunately \tex/ provides no easy way to do math mode +% vertical spacing that varies with current math style like mu units. +% \begin{macrocode} +\def\varlim@#1#2{% + \vtop{\m@th\ialign{##\cr + \hfil$#1\operator@font lim$\hfil\cr + \noalign{\nointerlineskip\kern1.5\ex@}#2\cr + \noalign{\nointerlineskip\kern-\ex@}\cr}}% +} +\def\varinjlim{% + \mathop{\mathpalette\varlim@{\rightarrowfill@\textstyle}}\nmlimits@ +} +\def\varprojlim{% + \mathop{\mathpalette\varlim@{\leftarrowfill@\textstyle}}\nmlimits@ +} +\def\varliminf{\mathop{\mathpalette\varliminf@{}}\nmlimits@} +\def\varliminf@#1{\@@underline{\vrule\@depth.2\ex@\@width\z@ + \hbox{$#1\m@th\operator@font lim$}}} +\def\varlimsup{\mathop{\mathpalette\varlimsup@{}}\nmlimits@} +\def\varlimsup@#1{\@@overline{\hbox{$#1\m@th\operator@font lim$}}} +% \end{macrocode} +% +% \begin{macrocode} +\let\nmlimits@\displaylimits +\DeclareOption{namelimits}{\let\nmlimits@\displaylimits} +\DeclareOption{nonamelimits}{\let\nmlimits@\nolimits} +\ProcessOptions\relax +% \end{macrocode} +% +% If we don't load the \pkg{amsgen} package then the use of \cs{ex@} +% in \cs{varlim@} will lead to trouble. +% \begin{macrocode} +\RequirePackage{amsgen}\relax +% \end{macrocode} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \changes{v1.2a}{1995/02/20}{Fixed operatorname +% (shouldn't have same limits behavior as operatorname*)} +% \CheckSum{300} +% \Finale diff --git a/Master/texmf-dist/source/latex/amsmath/amstext.dtx b/Master/texmf-dist/source/latex/amsmath/amstext.dtx new file mode 100644 index 00000000000..0ef49f67a64 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amstext.dtx @@ -0,0 +1,314 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amstext.dtx", +%%% version = "2.01", +%%% date = "2000/06/29", +%%% time = "08:34:33 EDT", +%%% checksum = "09860 314 1647 12368", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% supported = "yes", +%%% keywords = "latex, math, text", +%%% abstract = "This is a \LaTeX{} package that defines a +%%% \cn{\text} macro, which makes it easy to +%%% incorporate fragments of text inside a displayed +%%% equation or a sub or superscript. Font sizes +%%% are automatically scaled in sub/superscripts.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% \iffalse +%<*driver> +\documentclass{amsdtx} +\usepackage{amstext} +\begin{document} +\title{The \pkg{amstext} package} +\author{Frank Mittelbach \and Rainer Sch\"opf} +\date{Version \fileversion, \filedate} +\hDocInput{amstext.dtx} +\end{document} +%</driver> +% \fi +% +% \maketitle +% +% \MakeShortVerb\| +% +% \section{Introduction} +% +% This style file implements the \AmSTeX{} macro \cn{text} for use +% with the new font selection scheme. The \cn{text} macro is a +% sophisticated command which allows the user to insert ``normal text'' +% into math formulas without worrying about correct sizes in sub- or +% superscripts. It can also be used in ordinary text; there it +% produces an unbreakable unit similar to \cn{mbox}. +% +% Here is an example demonstrating some of its features: +% \[ +%^^A mathbin spacing is nonscript glue, disappears in superscript +% x^{2\,\times\,\text{size of $y$}} +% \leq +% z_{i_{\text{upper bound of the array}}} +% \] +% This was produced by +% \begin{verbatim} +% \[ +% x^{2\,\times\,\text{size of $y$}} +% \leq +% z_{i_{\text{upper bound of the array}}} +% \] +% \end{verbatim} +% +% Additionally this style file redefines an internal \fn{plain.tex} +% macro called \cs{mathhexbox} so that commands like \cn{dag} +% or \cn{P} will change sizes if used in math subscripts. +% +% \StopEventually{} +% Package information. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must be December 1994 or later +\ProvidesPackage{amstext}[2000/06/29 v2.01] +% \end{macrocode} +% +% \section{The implementation} +% We need a few tools from \fn{amsgen.sty}. +% \begin{macrocode} +\RequirePackage{amsgen} +% \end{macrocode} +% +% \begin{macro}{\text} +% Now we come to the \cn{text} macro which is used to place +% ordinary text inside of math formulas. If it is used outside +% math it will produce an unbreakable unit of text. +% \begin{macrocode} +\DeclareRobustCommand{\text}{% + \ifmmode\expandafter\text@\else\expandafter\mbox\fi} +% \end{macrocode} +% At the present time (late 1994) the \latex/ internal function +% |\nfss@text| is used in |\ref|, in font commands like |\textbf|, +% and in a few text symbol definitions like |\$| and |\pounds|. By +% equating |\nfss@text| to |\text| we give it the ability of +% |\text| to change sizes properly if used in a subscript. +% \begin{macrocode} +\let\nfss@text\text +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\text@} +% If \cn{text} is encountered inside math mode the macro +% \cs{text@} is called. It has one mandatory argument, the text +% which should be produced. Since we do not know in which math +% style we are currently in we call \cs{mathchoice} to tyeset +% our text in all four possible styles. +% \begin{macrocode} +\def\text@#1{{\mathchoice +% \end{macrocode} +% To save token space we call a macro \cs{textdef@} which takes +% three arguments: the current math style, the corresponding size +% macro and the text to typeset possibly with some additional +% information for typesetting. +% \begin{macrocode} + {\textdef@\displaystyle\f@size{#1}}% +% \end{macrocode} +% The other three cases are similar except for the +% \cs{iffirstchoice} switch which we set to false. This is +% done to prevent \LaTeX{} macros like \cn{ref} or \cn{index} +% from writing their arguments more than once. +% \begin{macrocode} + {\textdef@\textstyle\f@size{\firstchoice@false #1}}% + {\textdef@\textstyle\sf@size{\firstchoice@false #1}}% + {\textdef@\textstyle \ssf@size{\firstchoice@false #1}}% +% \end{macrocode} +% Here we need to check whether a math size-change occurred inside +% the argument of \cn{text}. If so, restore +% \begin{macrocode} + \check@mathfonts + }% +} +% \end{macrocode} +% The macros \cs{f@size}, \cs{sf@size} and \cs{ssf@size} hold the +% sizes which should be used when we are loading a new font for use +% in \cs{textfont}, \cs{scriptfont} and \cs{scriptscriptfont}. There +% is some question whether we should use use \cs{tf@size} or +% \cs{f@size} for the main size, but since the primary purpose of the +% \cn{text} macro is to switch back to text within a display, it +% seems that \cs{f@size} is the better choice. (Indeed it could be +% said that the \cn{text} actually provides two different functions: +% one for escaping out of math mode in a display to print some words, +% and the other for handling math objects that are named by a +% fragment of text, when \cn{operatorname} isn't the right choice. +% For the latter \cs{tf@size} might be more correct but for the +% former \cs{f@size} is clearly better.) +% \end{macro} +% +% \begin{macro}{\textdef@} +% To typeset the argument of \cn{text} correctly we have to make +% several actions. We start by placing everything inside an +% \cs{hbox}. But this is not enough: we need one extra level of +% grouping. These extra braces are necessary because of the new +% font selection scheme which might produce an \cs{aftergroup} +% to globally restore some font values after the current group. To +% prevent any damage by this mechanism we add the braces thereby +% bringing the token inserted by \cs{aftergroup} inside the +% \cs{hbox}.\footnote{The mechanism will not produce a second +% \cs{aftergroup}. For more details see the technical documentation +% for NFSS2.} +% \begin{macrocode} +\def\textdef@#1#2#3{\hbox{{% +% \end{macrocode} +% Since text typeset inside an \cs{hbox} always stays in the size +% of the text surrounding the formula we have to adjust this for +% script and scriptscript sizes. For any math formula inside this +% argument this will be achieved by setting \cs{everymath} to +% the first argument of \cs{textdef@} since this argument +% contains the math size in the current typeset case of +% \cs{mathchoice}. +% Since \latex/ also knows about \cn{parbox}es and the +% \env{minipage} environment it might be neccessary to adjust +% \cs{everydisplay} too but this has to be tested further. +% \begin{macrocode} + \everymath{#1}% +% \end{macrocode} +% The next line of code changes locally (i.e.\ inside the current +% \cs{hbox}) the value of \cs{f@size}. This macro holds the +% size for typesetting ordinary text (e.g.\ loading or selecting a +% new font via \cs{selectfont}). By changing it to a smaller +% value a following \cs{selectfont} will switch to the wanted +% size. +% \begin{macrocode} + \let\f@size#2\selectfont +% \end{macrocode} +% Now we simply call the third argument and close all open groups. +% \begin{macrocode} + #3}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\iffirstchoice@} +% Here is the switch that we use to decide if \cn{ref} etc.\ +% should print its warnings. The default is true since +% normally these warnings shouldn't be suppressed. +% \begin{macrocode} +\newif\iffirstchoice@ +\firstchoice@true +% \end{macrocode} +% \end{macro} +% +% \subsection{Re-definition of \latex/ macros to work with \cn{text}} +% +% If a counter-changing command occurs inside the argument of +% \cn{text}, we don't want the counter to be changed four times +% because \cn{stepcounter} and \cn{addtocounter} have global effect. +% So we add the \cs{iffirstchoice@} test to make the counter +% operations execute only once. +% +% \begin{macro}{\stepcounter} +% Use \cs{def} rather than \cn{renewcommand*} because the star-form +% (for non-\cs{long} definitions) doesn't work with the June 1994 +% release of \latex/. +% \begin{macrocode} +\def\stepcounter#1{% + \iffirstchoice@ + \addtocounter{#1}\@ne + \begingroup \let\@elt\@stpelt \csname cl@#1\endcsname \endgroup + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addtocounter} +% \begin{macrocode} +\def\addtocounter#1#2{% + \iffirstchoice@ + \@ifundefined {c@#1}{\@nocounterr {#1}}% + {\global \advance \csname c@#1\endcsname #2\relax}% + \fi} +% \end{macrocode} +% \end{macro} +% +% For \cn{ref}, \cn{pageref}, and indeed anything else that issues a +% warning or error, \cn{text} will produce four copies of the +% warning/error message. To suppress the last three copies, we change +% \cs{GenericInfo}, \cs{GenericWarning}, \cs{GenericError}. +% \begin{macrocode} +\let\m@gobble\@empty +\@xp\let\csname m@gobble4\endcsname\@gobblefour +\long\@xp\def\csname m@gobble6\endcsname#1#2#3#4#5#6{} +% \end{macrocode} +% +% \begin{macrocode} +\toks@{% + \csname m@gobble\iffirstchoice@\else 4\fi\endcsname + \protect} +\edef\GenericInfo{\the\toks@ + \@xp\@nx\csname GenericInfo \endcsname} +% +\edef\GenericWarning{\the\toks@ + \@xp\@nx\csname GenericWarning \endcsname} +% +\toks@{% + \csname m@gobble\iffirstchoice@\else 6\fi\endcsname + \protect} +\edef\GenericError{\the\toks@ + \@xp\@nx\csname GenericError \endcsname} +% \end{macrocode} +% +% At one time \cn{label}, \cs{@wrindex} and \cs{@wrglossary} were +% changed here too to use the \cs{iffirstchoice@} test but it seems +% that was a mistake because those are non-immediate writes. +% Something like +% \begin{verbatim} +% \text{something \index{foo}} +% \end{verbatim} +% within a math formula would therefore \emph{lose the index term} if +% the surrounding context was not displaystyle. (Unlikely in +% practice, but not impossible.) [mjd,1994/12/09] +% +%\subsection{Applications of \cn{text}} +% +% \begin{macro}{\mathhexbox} +% We start with an re-definition of the \fn{plain.tex} macro +% \cs{mathhexbox}. (Although M. Spivak in \amstex/ uses the name +% \cs{mathhexbox@} for this purpose, I [FMi] don't see any reason +% to use a new name since the new definition is superior, has the +% same syntax and is used for the same purpose.) +% \begin{macrocode} +\begingroup \catcode`\"=12 +\gdef\mathhexbox#1#2#3{\text{$\m@th\mathchar"#1#2#3$}} +\endgroup +% \end{macrocode} +% This redefinition means that now symbols like \S, \P, \dag, \ldots, +% which are defined via \cs{mathhexbox} in \fn{plain.tex} or +% elsewhere now correctly change sizes if they are used in math mode. +% \end{macro} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \CheckSum{129} +% \Finale diff --git a/Master/texmf-dist/source/latex/amsmath/amsxtra.dtx b/Master/texmf-dist/source/latex/amsmath/amsxtra.dtx new file mode 100644 index 00000000000..b0f19da7d07 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/amsxtra.dtx @@ -0,0 +1,136 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsxtra.dtx", +%%% version = "1.2c", +%%% date = "1999/11/15", +%%% time = "14:15:41 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "41382 136 533 5124", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, accentedsymbol, fracwithdelims, sphat", +%%% supported = "yes", +%%% abstract = "This package contains some seldom-used commands +%%% ported from AMS-TeX in 1989.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +%\iffalse +%<*driver> +\documentclass{amsdtx} +\begin{document} +\title{The \pkg{amsxtra} package} +\author{American Mathematical Society\\Michael Downes} +\date{Version \fileversion, \filedate} +\hDocInput{amsxtra.dtx} +\end{document} +%</driver> +%\fi +% +% \maketitle +% +% \MakeShortVerb\| +% +% \section{Introduction} +% The \pkg{amsxtra} package contains a few rarely used commands that +% were present in version 1.1 of the \pkg{amstex} package: +% \cn{fracwithdelims}, {accentedsymbol}, \cn{sphat}, \cn{spcheck}, +% \cn{sptilde}, \cn{spdot}, \cn{spddot}, \cn{spdddot}, \cn{spbreve}. +% If any of these commands were used in existing documents, the +% \pkg{amsxtra} package provides a way to get them. But for 99\% of +% documents using the \pkg{amstex} package these commands are just +% wasted overhead. +% +% \StopEventually{} +% +% \begin{macrocode} +\ProvidesPackage{amsxtra}[1999/11/15 v1.2c] +% \end{macrocode} +% We need to ensure that either the \pkg{amstex} package or the +% \pkg{amsmath} package is loaded. This means we need something a +% little more complicated than \cn{RequirePackage}. +% \begin{macrocode} +\@ifpackageloaded{amstex}{}{% + \RequirePackage{amsmath}[1996/10/01 v1.2]} +% \end{macrocode} +% +% Superscripted accent characters. +% \begin{macrocode} +\def\sphat{^{\mathchoice{}{}% + {\,\,\smash[b]{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}% + {\,\smash[b]{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}} +\def\spcheck{^\vee} +\def\sptilde{^\sim} +\def\spdot{^{\hbox{\raise\ex@\hbox{\normalfont .}}}} +\def\spddot{^{\hbox{\raise\ex@\hbox{\normalfont ..}}}} +\def\spdddot{^{\hbox{\raise\ex@\hbox{\normalfont...}}}} +\def\spbreve{^{\!\smash[b]{\hbox{\lower4\ex@\hbox{\u{}}}}}} +% \end{macrocode} +% +% The \cn{fracwithdelims} command is skipped if the base package is +% \pkg{amsmath}; it is only needed if the base package is +% \pkg{amstex}. +% \begin{macrocode} +\@ifpackageloaded{amstex}{% +\def\fracwithdelims#1#2{\new@ifnextchar[{\fracwithdelims@#1#2}% + {\fracwithdelims@#1#2[\@empty]}} +\def\fracwithdelims@#1#2[#3]#4#5{\relax + \ifx\@empty#3{#4\overwithdelims#1#2#5}\else + {#4\abovewithdelims#1#2#3\relax#5}\fi} +}{} +% \end{macrocode} +% +% Perhaps |\accentedsymbol| should use |\newsavebox|, but I don't +% know of any compelling reason at the moment.[mjd,5-Sep-1994] +% |\accentedsymbol| can only produce a single size of +% the given symbol, so you'd need two different versions for main +% size and subscript size. +% \begin{macrocode} +\def\accentedsymbol#1#2{% + \expandafter\newbox + \csname\expandafter\@gobble\string#1@box\endcsname + \expandafter\setbox + \csname\expandafter\@gobble\string#1@box\endcsname + \hbox{$\m@th#2$}% + \newcommand{#1}{% + \expandafter\copy + \csname\expandafter\@gobble\string#1@box\endcsname{}}% +} +% \end{macrocode} +% +% Change the definition of \qc{\~} to automatically remove a +% preceding space as well as a following space, if present. +% \begin{macrocode} +\def~{\nobreakspace} +\DeclareRobustCommand{\nobreakspace}{\unskip\nobreak\ \ignorespaces} +% \end{macrocode} +% +% The usual \cs{endinput} to ensure that random garbage at the end of +% the file doesn't get copied by \fn{docstrip}. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \CheckSum{113} +% \Finale diff --git a/Master/texmf-dist/source/latex/amsmath/install.txt b/Master/texmf-dist/source/latex/amsmath/install.txt new file mode 100644 index 00000000000..fb4b835f282 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/install.txt @@ -0,0 +1,108 @@ +install.txt for amsmath 2.16 [2004/08/05] + +If you have a relatively up-do-date TeX system that complies with the +TeX Directory Structure (TDS) standard, installing according to the +instructions in section I below is the easiest method. See + + http://www.tug.org/tds/tds.pdf + +for details on the TDS standard. If your TeX system does not comply +with the TDS standard, please contact the manufactuer of your TeX +system for details on how to install third-party TeX packages. + +The first step is to identify the TEXMF folder that contains files used +by LaTeX. To do this, look for the file article.cls. If you find, e.g., + + /usr/local/share/texmf/tex/latex/base/article.cls + +then we will define TEXMF to mean /usr/local/share/texmf (everything +up to the /tex/latex/base part). On a Windows system the file location +will probably be something like + + c:\sw\texmf\tex\latex\base\article.cls + +Then we define TEXMF to mean c:\sw\texmf. In the following instructions, +wherever you see "TEXMF" substitute the folder name determined in this +way. + +If this terminology does not make sense to you, seek assistance from +a friend or colleague, or from the company that you bought your TeX +system from, or contact us at + + tech-support@ams.org + 800-321-4AMS (321-4267) (USA/Canada) + 401-455-4080 + +======================================================================== +I. Installing the easy way. + +1. Download the following archive file: + + ftp://ftp.ams.org/pub/tex/amsmath.zip + +2. View the following files to assess the effects of the upgrade on +your system: + + 00readme.txt + install.txt (this file) + diffs-m.txt + +3. Backup the old version of AMS-LaTeX, preferably by moving it out of the +TEXMF tree. + +4. Extract files from the .zip archive using your favorite unzip tool, +setting the extraction target directory to the texmf root directory. + +5. To check the end result, you should find that you now have amsmath.sty +in the following location + + TEXMF/tex/latex/amsmath/amsmath.sty + +Some TeX systems also use a database to keep track of TeX input files. +If this database is not updated, your TeX system might not find the +newly installed files. Consult your TeX system's documentation to +determine how to update this database. + +6. Some files will appear in both the source area and another area. +This is because the source form and the in-use form are identical. +As distributed, the files in the source/latex/ams* areas comprise a +complete copy of the distribution from which all the other files can +be regenerated if need be. If you need to conserve disk space, you +could delete the files in the source area, since they are not needed +for normal use. + +======================================================================== +II. Installing the not-so-easy way. + +Download ftp://ftp.ams.org/pub/tex/amsmath.zip. + +Make the following directories, if not already present: + + TEXMF/source/latex/amsmath + TEXMF/tex/latex/amsmath + TEXMF/doc/latex/amsmath + +Backup your old AMS-LaTeX files if they are installed, preferably moving them +out of the TEXMF tree. + +******** revise -- pdf file amsldoc will be included in distrib + +Create a temporary directory and generate documentation files (these assume +a UNIX TeX installation): + + - make directory /tmp/amsmath + - unzip -d /tmp/amscls amsmath.zip + - cd /tmp/amsmath + - Run latex on the file ams-m1.ins to produce .cls and .sty files + - Run latex on *.tex + - [optional] Run latex on *.dtx (technical documentation) + - move *.dvi, *.pdf, *.tex to TEXMF/doc/latex/amsmath + - [optional] move *.dtx to TEXMF/doc/latex/amsmath + - [optional] convert .dvi to .ps or .pdf + - move *.sty and *.cls to TEXMF/tex/latex/amsmath + - delete /tmp/amsmath + +Some TeX systems also use a database to keep track of TeX input files. +If this database is not updated, your TeX system might not find the +newly installed files. Consult your system's documentation to determine +how to update this database. diff --git a/Master/texmf-dist/source/latex/amsmath/manifest.txt b/Master/texmf-dist/source/latex/amsmath/manifest.txt new file mode 100644 index 00000000000..2ea274a32d7 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/manifest.txt @@ -0,0 +1,38 @@ + +texmf/doc/latex/amsmath/ + amsldoc.pdf + diffs-m.txt + subeqn.pdf + technote.pdf + testmath.pdf + +texmf/source/latex/amsmath/ + 00readme.txt + ams-m1.ins + amsbsy.dtx + amscd.dtx + amsdtx.cls + amsgen.dtx + amsldoc.cls + amsldoc.tex + amsmath.dtx + amsopn.dtx + amstex.sty + amstext.dtx + amsxtra.dtx + diffs-m.txt + install.txt + manifest.txt + subeqn.tex + technote.tex + testmath.tex + +texmf/tex/latex/amsmath/ + amsbsy.sty + amscd.sty + amsgen.sty + amsmath.sty + amsopn.sty + amstex.sty + amstext.sty + amsxtra.sty diff --git a/Master/texmf-dist/source/latex/amsmath/subeqn.tex b/Master/texmf-dist/source/latex/amsmath/subeqn.tex new file mode 100644 index 00000000000..d0fa7d9b023 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/subeqn.tex @@ -0,0 +1,202 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "subeqn.tex", +%%% version = "1.2c", +%%% date = "1999/11/29", +%%% time = "14:49:29 EST", +%%% checksum = "29866 202 668 6426", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% supported = "yes", +%%% keywords = "latex, amslatex, ams-latex, amstex", +%%% abstract = "This is part of the AMS-\LaTeX{} distribution. +%%% It is a sample document illustrating the use of +%%% the subequations environment and the effect of +%%% the fleqn option.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\documentclass[fleqn]{article} + +\title{Test of subequations environment} +\author{mjd} + +\usepackage{amsmath} +\numberwithin{equation}{section} + +\newcommand{\env}[1]{{\normalfont\texttt{#1}}} + +\AtEndDocument{\multipasswarning} +\newcommand{\multipasswarning}{% + \clearpage + \typeout{% + **********************************************************************} + \typeout{% + Note: This document needs to run through LaTeX three times, instead of} + \typeout{% + the usual two, to resolve indirect cross-references.} + \typeout{% + **********************************************************************} +} + +\makeatletter +% Omit the warning message if three passes have been completed (on +% first pass \ref{check} is undefined and it is set to 0; on second +% pass \ref{check} is 0 and set to 1; on third pass it is 1). +\def\checkref{\begingroup + \@ifundefined{r@check}{\def\@currentlabel{0}}{\def\@currentlabel{1}}% + \ifnum1=0\expandafter\@firstoftwo\r@check\relax + \global\let\multipasswarning\relax + \fi + \label{check}% + \endgroup} +\makeatother + +\begin{document} +\section{Prime equation numbers} + +First an equation. +\begin{equation}\label{e:previous} +A=B +\end{equation} +That was equation \eqref{e:previous}. + +Then the same, with a prime on the number.\checkref +\begin{equation} +\tag{\ref{e:previous}$'$}\label{e:prevprime} +C=D +\end{equation} +And that was equation \eqref{e:prevprime}. + +Notice, by the way, that when a \verb"\ref" occurs inside a \verb"\tag", +and that \verb"\tag" is then \verb"\label"'d, a \verb"\ref" for the the +second \verb"\label" requires \emph{three} runs of \LaTeX{} in order to +get the proper value. (If you run through the logic of \LaTeX{}'s +cross-referencing mechanisms as they apply in this case, you will see +that this is necessary.) + +\section{Subnumbered equations} + +Here is a,b,c sub-numbering. +\begin{subequations} +\begin{eqnarray} +A&=&B\\ +D&=&C \label{e:middle}\\ +E&=&F +\end{eqnarray} +\end{subequations} +That was produced with the \env{eqnarray} environment; the middle line +was labeled as \eqref{e:middle}. + +An equation following the end of the \verb"subequations" environment +should revert to normal numbering: +\begin{equation}\label{e:check} +H<K +\end{equation} +A check on the labeling: that was equation~\eqref{e:check}. + +The sub-numbered equations can be spread out through the text, like +this: +\begin{subequations} +\begin{equation} +A=B +\end{equation} +The \verb"subequations" environment can span arbitrary text between +subsidiary equations. The only restriction is that if there are any +numbered equations inside the \verb"subequations" environment that break +out of the subequation numbering sequence, they would have to be handled +specially. +\begin{equation} +D=C \label{e:newmiddle} +\end{equation} +More arbitrary text. +\begin{equation} +E=F +\end{equation} +\end{subequations} +Label check: the middle one was \eqref{e:newmiddle} + +A final equation for a numbering check. +\begin{equation}\label{e:final} +G=H +\end{equation} +That equation was labeled as \eqref{e:final}. + +\section{Tests of \env{align}, \env{gather}, and other +AMS-\protect\LaTeX{} environments} + +The \env{align} environment: +\begin{subequations} +\begin{align} +\label{align:a}A+B&=B+A\\ +\label{align:b}C&=D+E\\ +\label{align:c}E&=F +\end{align} +\end{subequations} +Label check: that was \eqref{align:a}, \eqref{align:b}, and +\eqref{align:c}. + +The \env{align} environment again: +\begin{subequations} +\begin{align} +\label{xalign:a}A+B&=B& B&=B+A\\ +\label{xalign:b}C&=D+E& C\oplus D&=E\\ +\label{xalign:c}E&=F& E'&=F' +\end{align} +\end{subequations} +Label check: that was \eqref{xalign:a}, \eqref{xalign:b}, and +\eqref{xalign:c}. + +The \env{gather} environment. For the third line we refer to one of the +numbers in the first \env{align} structure. +\begin{subequations} +\begin{gather} +\label{gather:a}A+B=B\\ +\label{gather:b}C=D+E\\ +\tag{\ref{align:c}$'$}\label{gather:c}E=F +\end{gather} +\end{subequations} +Label check: that was \eqref{gather:a}, +\eqref{gather:b}, and +\eqref{gather:c}. + +The next \env{subequations} environment encompasses two separate +equations. A \env{split} environment: +\begin{subequations} +\begin{equation} +\label{split:x} +\begin{split} +A&=B+C+F\\ +&=G +\end{split} +\end{equation} +and a \env{multline} environment: +\begin{multline}\label{multline:x} +A[B]C[D]E[F]G[[H[I]J[K]L[M]N]]=\\ +H[I]J[K]L[M]N[O]P[Q]R[S]T[U]V[W]X[Y]Z +\end{multline} +\end{subequations} +Label check: That was \eqref{split:x} and \eqref{multline:x}. + +\end{document} diff --git a/Master/texmf-dist/source/latex/amsmath/technote.tex b/Master/texmf-dist/source/latex/amsmath/technote.tex new file mode 100644 index 00000000000..aede450621e --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/technote.tex @@ -0,0 +1,233 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "technote.tex", +%%% version = "2.0", +%%% date = "1999/11/15", +%%% time = "15:07:20 EST", +%%% checksum = "58506 233 1647 12005", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% supported = "yes", +%%% keywords = "amsmath, latex", +%%% abstract = "This is part of the AMS-\LaTeX{} distribution. It +%%% is a document discussing some technical issues in the +%%% contents and interface of AMS-\LaTeX{} packages." +%%% docstring = "The checksum field above contains a CRC-16 checksum +%%% as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of +%%% lines, words, and characters. This is produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\documentclass{amsdtx} + +\title{Technical notes on the \pkg{amsmath} package} +\author{American Mathematical Society\\Michael Downes} +\date{1999/10/29} + +\markboth + {Technical notes on the \pkg{amsmath} package} + {Technical notes on the \pkg{amsmath} package} +\renewcommand{\sectionmark}[1]{} + +\providecommand{\etc}[1]{etc.} + +\providecommand{\begend}[1]{% + {\ntt \symbol{92}begin\symbol{123}#1\symbol{125}} + \ldots\ {\ntt\symbol{92}end\symbol{123}#1\symbol{125}}% +} + +\MakeShortVerb{\|} + +\begin{document} +\maketitle + +\section{Introduction} + +These notes are miscellaneous remarks on some technical questions +applicable to version 2.0 of \amslatex/. + +\section{Deprecated and disallowed commands} + +Certain commands that were in the \pkg{amstex} package (the predecessor, +in \amslatex/ 1.0 and 1.1, of the \pkg{amsmath} package) were moved into +\pkg{amsxtra} because they seemed to be little-used relics: +\cn{accentedsymbol}, \qq{sup accents} (\cn{sptilde}, \cn{sphat}, etc.). + +Certain other commands\mdash e.g., \cn{over}, \cn{pmatrix}, and +\cn{cases}\mdash are changed by the \pkg{amsmath} package to produce +warning messages or error messages, depending on their history; these +are discussed in more detail in the following sections. + +\section{Why do \cn{matrix}, \cn{pmatrix}, and \cn{cases} stop working +when I add the \pkg{amsmath} package?} + +If you used the \fn{plain.tex} versions of \cn{matrix}, \cn{pmatrix}, or +\cn{cases} in a document and then later converted the document to use +the \pkg{amsmath} package (or one of the AMS documentclasses, which +automatically call the \pkg{amsmath} package internally), the instances +of those commands will produce error messages. The problem is that when +\latex/ was originally created, it adopted most of its mathematics +features straight from \fn{plain.tex}. But in the case of \cn{matrix}, +\cn{pmatrix}, \cn{cases} this was a mistake\mdash the \fn{plain.tex} +syntax for them is decidedly non-\latex/ in style, for example the fact +that they use \cs{cr} instead of \cn{\\} to mark line breaks, and they +don't use \cn{begin} and \cn{end}. In basic \latex/ this mistake will be +perpetuated at least until \latex/3 appears, in order to avoid breaking +existing documents. But no existing documents that were written with the +\pkg{amsmath} package have that syntactic problem, as \pkg{amsmath} +provides proper \latex/-syntax versions of \cn{matrix} and the others. +The possibility of optionally allowing the \fn{plain.tex} variants to +make document conversion easier seems ill-advised since those variants +are so blatantly wrong in a \latex/ context. The \env{array} environment +ought to have been used instead. + +\section{Why do \cn{over}, \cn{atop}, \cn{above} [\dots{\ntt withdelims}] + give a warning when I add the \pkg{amsmath} package?} + +Using the six generalized fraction commands \cn{over}, +\cn{overwithdelims}, \cn{atop}, \cn{atopwithdelims}, \cn{above}, +\cn{abovewithdelims} is not really a good idea in \latex/, for reasons +explained below. I construe \latex/'s provision of \cs{frac}, and the +lack of any mention in the \latex/ book of the primitive fraction +commands, as an implicit injunction against their use, although I don't +think Lamport actually spent a lot of time pondering the issue, and the +basic \latex/ version of \cn{frac} provides access only to \cn{over}, +not to \cn{atop}, \cn{above}, or the \verb'withdelims' variants. The +\pkg{amsmath} package, however, provides a \cn{genfrac} command that +gives user-level access to all six of the generalized fraction +primitives in a way that conforms to the syntactic conventions followed +by all other \latex/ commands. + +Not only is the unusual syntax of the \tex/ primitives rather out of +place in \latex/, but furthermore that syntax seems to be responsible +for one of the most significant flaws in \tex/'s mathematical +typesetting capabilities: the fact that the current mathstyle at any +given point in a math formula cannot be determined until the end of the +formula, because of the possibility that a following generalized +fraction command will change the mathstyle of the \emph{preceding} +material. To cite two of the worst side effects: \cn{mathchoice} must +actually typeset all four of its arguments, instead of being able to +immediately select only one; and, were it possible to always know the +current math style at a given point, math font selection would be +greatly simplified and the upper limit of 16 different math font +\cn{fam}s would never be a problem as \cn{text,script[script]font} +assignments for any \cn{fam} could take immediate effect and therefore +could be changed arbitrarily often within a single formula. More +concretely, math font selection difficulties are responsible for many of +the more convoluted passages in the source code of \latex/'s NFSS (that +does font loading on demand) and of the \pkg{amsmath} package, and by +extension it has historically been responsible for significant delays in +making new features available to end users and for making those features +more prone to bugs. + +There are additional bad consequences following from the syntax of those +generalized fraction commands that only become evident when you do some +writing of nontrivial macros for math use. For example, as things +currently stand you cannot measure the size of any object in math +without going through \cn{mathchoice} and \emph{leaving and reentering +math mode} via \verb'\hbox{$' (which then introduces complications +regarding \cn{everymath} and \cn{mathsurround}). And it seems that +uncertainty about the current mathstyle is the only barrier to allowing +the use of mu units with \cn{vrule}, to make vertical struts in +constructing compound symbols or notation. And so on and so forth. + +\section{The \opt{fleqn} option and \cn{mathindent}} + +Strictly speaking, the \pkg{amsmath} package doesn't use \cn{mathindent} +to control the left indent of displayed equations when the \opt{fleqn} +option is in effect: it uses an internal parameter \cs{@mathmargin} +instead. However, for compatibility with existing \latex/ documentation, +\pkg{amsmath} turns \cn{mathindent} into an alias for \cs{@mathmargin}. +There is a small risk here: In the plain \latex/ implementation, +\cn{mathindent} is a dimen register, but with \pkg{amsmath} +\cs{@mathmargin} is a skip register and, by association, so is +\cn{mathindent}. If any package or documentclass uses \cn{mathindent} in +a way that depends on it being a dimen register, when used in +conjunction with the \pkg{amsmath} package it may be vulnerable to a +well-known pitfall having to do with the primitive \tex/ lookahead for a +\texttt{plus} or \texttt{minus} key word. However if the standard +\latex/ commands \cn{setlength} and \cn{addtolength} are used to modify +\cn{mathindent} then this problem will not arise. + +\section{Why can't I use abbreviations for \protect\begend{align}?} + +Authors often like to use abbreviations such as |\beq| |\eeq| for +|\begin{equation}| |\end{equation}|. For some environments defined by +the \pkg{amsmath} package, such as \env{align}, \env{gather}, +\env{multline}, and others of the same general type, this does not work: +An attempt to define |\bal| |\eal| as shorthand for |\begin{align}| +|\end{align}| will fail with a puzzling error message. This has to do +with unfortunately nontrivial technical complications: the given +environments must read their contents as a delimited macro argument +because they do multipass processing of the contents using algorithms +inherited from Spivak's \fn{amstex.tex}. The obvious +solution\mdash substitution of different algorithms that do box shuffling +instead of token shuffling for the multipass calculations\mdash would +require rewriting these display environments from the ground up; while +that is a worthy goal, it was beyond the original scope of the +\amslatex/ project. Work is under way on an auxiliary package called +\pkg{breqn} that addresses not only this problem but a number of others; +at the time of this writing, however [September 1999] it has only +progressed as far as a beta release. + +Some workarounds: +\begin{itemize} +\item |\def\bal#1\eal{\begin{align}#1\end{align}}| +\item Define |\newcommand{\env}[2]{\begin{#1}#2\end{#1}}| and then use + |\env{align}{...}| +\end{itemize} + +\section{The \pkg{upref} package} + +The reason for splitting out the \pkg{upref} package instead of +automatically incorporating it in the \cls{amsart} and \cls{amsbook} +classes is this: It involves low-level surgery on an important \latex/ +command. This means that if ever this command changes in the future (as +it did between versions 2.09 and 2e of \latex/) we have a maintenance +problem. And the benefit that \pkg{upref} provides is something that +most end users don't care much about. + +\section{The \pkg{amsintx} package} + +After a very preliminary trial release the \pkg{amsintx} package was +withdrawn to await further development. It is still considered a worthy +project but has simply not yet made it to the head of the priority queue +in the AMS \latex/ development program, as it has had to contend with a +number of other equally worthy projects for development time. + +\section{Hyphenation in the documentation} + +Hyphenation was allowed for certain long command names in +\fn{amsldoc.tex}; this presented technical difficulties because \latex/ +normally deactivates hyphenation for tt fonts. The method chosen to +reinstate hyphenation was to turn off the encoding-specific function +\cs{OT1+cmtt} that disables the \cs{hyphenchar} for tt fonts; see the +definition of \cn{allowtthyphens} in \fn{amsdtx.dtx}. Then a list of all +tt words in the document was gathered (from the \fn{.idx} file, produced +by the \cn{cn}, \cn{fn}, \cn{pkg}, etc. commands) and \cn{showhyphens} +was applied to this list. The result was another list in the resulting +\tex/ log, containing those words in a form suitable for the argument of +\cn{hyphenation}. That list was then edited by hand to overrule +undesirable hyphenations; words with acceptable hyphenations were +dropped from the list, as they don't need to be repeated there. + +\end{document} diff --git a/Master/texmf-dist/source/latex/amsmath/testmath.tex b/Master/texmf-dist/source/latex/amsmath/testmath.tex new file mode 100644 index 00000000000..069944ee9d0 --- /dev/null +++ b/Master/texmf-dist/source/latex/amsmath/testmath.tex @@ -0,0 +1,2342 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "testmath.tex", +%%% version = "2.0", +%%% date = "1999/11/15", +%%% time = "15:09:17 EST", +%%% checksum = "07762 2342 7811 82371", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, amsmath, examples, documentation", +%%% supported = "yes", +%%% abstract = "This is a test file containing extensive examples of +%%% mathematical constructs supported by the amsmath +%%% package.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\documentclass[draft]{article} +\pagestyle{headings} + +\title{Sample Paper for the \pkg{amsmath} Package\\ +File name: \fn{testmath.tex}} +\author{American Mathematical Society} +\date{Version 2.0, 1999/11/15} + +\usepackage{amsmath,amsthm} + +% Some definitions useful in producing this sort of documentation: +\chardef\bslash=`\\ % p. 424, TeXbook +% Normalized (nonbold, nonitalic) tt font, to avoid font +% substitution warning messages if tt is used inside section +% headings and other places where odd font combinations might +% result. +\newcommand{\ntt}{\normalfont\ttfamily} +% command name +\newcommand{\cn}[1]{{\protect\ntt\bslash#1}} +% LaTeX package name +\newcommand{\pkg}[1]{{\protect\ntt#1}} +% File name +\newcommand{\fn}[1]{{\protect\ntt#1}} +% environment name +\newcommand{\env}[1]{{\protect\ntt#1}} +\hfuzz1pc % Don't bother to report overfull boxes if overage is < 1pc + +% Theorem environments + +%% \theoremstyle{plain} %% This is the default +\newtheorem{thm}{Theorem}[section] +\newtheorem{cor}[thm]{Corollary} +\newtheorem{lem}[thm]{Lemma} +\newtheorem{prop}[thm]{Proposition} +\newtheorem{ax}{Axiom} + +\theoremstyle{definition} +\newtheorem{defn}{Definition}[section] + +\theoremstyle{remark} +\newtheorem{rem}{Remark}[section] +\newtheorem*{notation}{Notation} + +%\numberwithin{equation}{section} + +\newcommand{\thmref}[1]{Theorem~\ref{#1}} +\newcommand{\secref}[1]{\S\ref{#1}} +\newcommand{\lemref}[1]{Lemma~\ref{#1}} + +\newcommand{\bysame}{\mbox{\rule{3em}{.4pt}}\,} + +% Math definitions + +\newcommand{\A}{\mathcal{A}} +\newcommand{\B}{\mathcal{B}} +\newcommand{\st}{\sigma} +\newcommand{\XcY}{{(X,Y)}} +\newcommand{\SX}{{S_X}} +\newcommand{\SY}{{S_Y}} +\newcommand{\SXY}{{S_{X,Y}}} +\newcommand{\SXgYy}{{S_{X|Y}(y)}} +\newcommand{\Cw}[1]{{\hat C_#1(X|Y)}} +\newcommand{\G}{{G(X|Y)}} +\newcommand{\PY}{{P_{\mathcal{Y}}}} +\newcommand{\X}{\mathcal{X}} +\newcommand{\wt}{\widetilde} +\newcommand{\wh}{\widehat} + +\DeclareMathOperator{\per}{per} +\DeclareMathOperator{\cov}{cov} +\DeclareMathOperator{\non}{non} +\DeclareMathOperator{\cf}{cf} +\DeclareMathOperator{\add}{add} +\DeclareMathOperator{\Cham}{Cham} +\DeclareMathOperator{\IM}{Im} +\DeclareMathOperator{\esssup}{ess\,sup} +\DeclareMathOperator{\meas}{meas} +\DeclareMathOperator{\seg}{seg} + +% \interval is used to provide better spacing after a [ that +% is used as a closing delimiter. +\newcommand{\interval}[1]{\mathinner{#1}} + +% Notation for an expression evaluated at a particular condition. The +% optional argument can be used to override automatic sizing of the +% right vert bar, e.g. \eval[\biggr]{...}_{...} +\newcommand{\eval}[2][\right]{\relax + \ifx#1\right\relax \left.\fi#2#1\rvert} + +% Enclose the argument in vert-bar delimiters: +\newcommand{\envert}[1]{\left\lvert#1\right\rvert} +\let\abs=\envert + +% Enclose the argument in double-vert-bar delimiters: +\newcommand{\enVert}[1]{\left\lVert#1\right\rVert} +\let\norm=\enVert + +\begin{document} +\maketitle +\markboth{Sample paper for the {\protect\ntt\lowercase{amsmath}} package} +{Sample paper for the {\protect\ntt\lowercase{amsmath}} package} +\renewcommand{\sectionmark}[1]{} + +\section{Introduction} + +This paper contains examples of various features from \AmS-\LaTeX{}. + +\section{Enumeration of Hamiltonian paths in a graph} + +Let $\mathbf{A}=(a_{ij})$ be the adjacency matrix of graph $G$. The +corresponding Kirchhoff matrix $\mathbf{K}=(k_{ij})$ is obtained from +$\mathbf{A}$ by replacing in $-\mathbf{A}$ each diagonal entry by the +degree of its corresponding vertex; i.e., the $i$th diagonal entry is +identified with the degree of the $i$th vertex. It is well known that +\begin{equation} +\det\mathbf{K}(i|i)=\text{ the number of spanning trees of $G$}, +\quad i=1,\dots,n +\end{equation} +where $\mathbf{K}(i|i)$ is the $i$th principal submatrix of +$\mathbf{K}$. +\begin{verbatim} +\det\mathbf{K}(i|i)=\text{ the number of spanning trees of $G$}, +\end{verbatim} + +Let $C_{i(j)}$ be the set of graphs obtained from $G$ by attaching edge +$(v_iv_j)$ to each spanning tree of $G$. Denote by $C_i=\bigcup_j +C_{i(j)}$. It is obvious that the collection of Hamiltonian cycles is a +subset of $C_i$. Note that the cardinality of $C_i$ is $k_{ii}\det +\mathbf{K}(i|i)$. Let $\wh X=\{\hat x_1,\dots,\hat x_n\}$. +\begin{verbatim} +$\wh X=\{\hat x_1,\dots,\hat x_n\}$ +\end{verbatim} +Define multiplication for the elements of $\wh X$ by +\begin{equation}\label{multdef} +\hat x_i\hat x_j=\hat x_j\hat x_i,\quad \hat x^2_i=0,\quad +i,j=1,\dots,n. +\end{equation} +Let $\hat k_{ij}=k_{ij}\hat x_j$ and $\hat k_{ij}=-\sum_{j\not=i} \hat +k_{ij}$. Then the number of Hamiltonian cycles $H_c$ is given by the +relation \cite{liuchow:formalsum} +\begin{equation}\label{H-cycles} +\biggl(\prod^n_{\,j=1}\hat x_j\biggr)H_c=\frac{1}{2}\hat k_{ij}\det +\wh{\mathbf{K}}(i|i),\qquad i=1,\dots,n. +\end{equation} +The task here is to express \eqref{H-cycles} +in a form free of any $\hat x_i$, +$i=1,\dots,n$. The result also leads to the resolution of enumeration of +Hamiltonian paths in a graph. + +It is well known that the enumeration of Hamiltonian cycles and paths in +a complete graph $K_n$ and in a complete bipartite graph $K_{n_1n_2}$ +can only be found from \textit{first combinatorial principles} +\cite{hapa:graphenum}. One wonders if there exists a formula which can +be used very efficiently to produce $K_n$ and $K_{n_1n_2}$. Recently, +using Lagrangian methods, Goulden and Jackson have shown that $H_c$ can +be expressed in terms of the determinant and permanent of the adjacency +matrix \cite{gouja:lagrmeth}. However, the formula of Goulden and +Jackson determines neither $K_n$ nor $K_{n_1n_2}$ effectively. In this +paper, using an algebraic method, we parametrize the adjacency matrix. +The resulting formula also involves the determinant and permanent, but +it can easily be applied to $K_n$ and $K_{n_1n_2}$. In addition, we +eliminate the permanent from $H_c$ and show that $H_c$ can be +represented by a determinantal function of multivariables, each variable +with domain $\{0,1\}$. Furthermore, we show that $H_c$ can be written by +number of spanning trees of subgraphs. Finally, we apply the formulas to +a complete multigraph $K_{n_1\dots n_p}$. + +The conditions $a_{ij}=a_{ji}$, $i,j=1,\dots,n$, are not required in +this paper. All formulas can be extended to a digraph simply by +multiplying $H_c$ by 2. + +\section{Main Theorem} +\label{s:mt} + +\begin{notation} For $p,q\in P$ and $n\in\omega$ we write +$(q,n)\le(p,n)$ if $q\le p$ and $A_{q,n}=A_{p,n}$. +\begin{verbatim} +\begin{notation} For $p,q\in P$ and $n\in\omega$ +... +\end{notation} +\end{verbatim} +\end{notation} + +Let $\mathbf{B}=(b_{ij})$ be an $n\times n$ matrix. Let $\mathbf{n}=\{1, +\dots,n\}$. Using the properties of \eqref{multdef}, it is readily seen +that + +\begin{lem}\label{lem-per} +\begin{equation} +\prod_{i\in\mathbf{n}} +\biggl(\sum_{\,j\in\mathbf{n}}b_{ij}\hat x_i\biggr) +=\biggl(\prod_{\,i\in\mathbf{n}}\hat x_i\biggr)\per \mathbf{B} +\end{equation} +where $\per \mathbf{B}$ is the permanent of $\mathbf{B}$. +\end{lem} + +Let $\wh Y=\{\hat y_1,\dots,\hat y_n\}$. Define multiplication +for the elements of $\wh Y$ by +\begin{equation} +\hat y_i\hat y_j+\hat y_j\hat y_i=0,\quad i,j=1,\dots,n. +\end{equation} +Then, it follows that +\begin{lem}\label{lem-det} +\begin{equation}\label{detprod} +\prod_{i\in\mathbf{n}} +\biggl(\sum_{\,j\in\mathbf{n}}b_{ij}\hat y_j\biggr) +=\biggl(\prod_{\,i\in\mathbf{n}}\hat y_i\biggr)\det\mathbf{B}. +\end{equation} +\end{lem} + +Note that all basic properties of determinants are direct consequences +of Lemma ~\ref{lem-det}. Write +\begin{equation}\label{sum-bij} +\sum_{j\in\mathbf{n}}b_{ij}\hat y_j=\sum_{j\in\mathbf{n}}b^{(\lambda)} +_{ij}\hat y_j+(b_{ii}-\lambda_i)\hat y_i\hat y +\end{equation} +where +\begin{equation} +b^{(\lambda)}_{ii}=\lambda_i,\quad b^{(\lambda)}_{ij}=b_{ij}, +\quad i\not=j. +\end{equation} +Let $\mathbf{B}^{(\lambda)}=(b^{(\lambda)}_{ij})$. By \eqref{detprod} +and \eqref{sum-bij}, it is +straightforward to show the following +result: +\begin{thm}\label{thm-main} +\begin{equation}\label{detB} +\det\mathbf{B}= +\sum^n_{l =0}\sum_{I_l \subseteq n} +\prod_{i\in I_l}(b_{ii}-\lambda_i) +\det\mathbf{B}^{(\lambda)}(I_l |I_l ), +\end{equation} +where $I_l =\{i_1,\dots,i_l \}$ and $\mathbf{B}^{(\lambda)}(I_l |I_l )$ +is the principal submatrix obtained from $\mathbf{B}^{(\lambda)}$ +by deleting its $i_1,\dots,i_l $ rows and columns. +\end{thm} + +\begin{rem} +Let $\mathbf{M}$ be an $n\times n$ matrix. The convention +$\mathbf{M}(\mathbf{n}|\mathbf{n})=1$ has been used in \eqref{detB} and +hereafter. +\end{rem} + +Before proceeding with our discussion, we pause to note that +\thmref{thm-main} yields immediately a fundamental formula which can be +used to compute the coefficients of a characteristic polynomial +\cite{mami:matrixth}: +\begin{cor}\label{BI} +Write $\det(\mathbf{B}-x\mathbf{I})=\sum^n_{l =0}(-1) +^l b_l x^l $. Then +\begin{equation}\label{bl-sum} +b_l =\sum_{I_l \subseteq\mathbf{n}}\det\mathbf{B}(I_l |I_l ). +\end{equation} +\end{cor} +Let +\begin{equation} +\mathbf{K}(t,t_1,\dots,t_n) +=\begin{pmatrix} D_1t&-a_{12}t_2&\dots&-a_{1n}t_n\\ +-a_{21}t_1&D_2t&\dots&-a_{2n}t_n\\ +\hdotsfor[2]{4}\\ +-a_{n1}t_1&-a_{n2}t_2&\dots&D_nt\end{pmatrix}, +\end{equation} +\begin{verbatim} +\begin{pmatrix} D_1t&-a_{12}t_2&\dots&-a_{1n}t_n\\ +-a_{21}t_1&D_2t&\dots&-a_{2n}t_n\\ +\hdotsfor[2]{4}\\ +-a_{n1}t_1&-a_{n2}t_2&\dots&D_nt\end{pmatrix} +\end{verbatim} +where +\begin{equation} +D_i=\sum_{j\in\mathbf{n}}a_{ij}t_j,\quad i=1,\dots,n. +\end{equation} + +Set +\begin{equation*} +D(t_1,\dots,t_n)=\frac{\delta}{\delta t}\eval{\det\mathbf{K}(t,t_1,\dots,t_n) +}_{t=1}. +\end{equation*} +Then +\begin{equation}\label{sum-Di} +D(t_1,\dots,t_n) +=\sum_{i\in\mathbf{n}}D_i\det\mathbf{K}(t=1,t_1,\dots,t_n; i|i), +\end{equation} +where $\mathbf{K}(t=1,t_1,\dots,t_n; i|i)$ is the $i$th principal +submatrix of $\mathbf{K}(t=1,t_1,\dots,t_n)$. + +Theorem ~\ref{thm-main} leads to +\begin{equation}\label{detK1} +\det\mathbf{K}(t_1,t_1,\dots,t_n) +=\sum_{I\in\mathbf{n}}(-1)^{\envert{I}}t^{n-\envert{I}} +\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mathbf{A} +^{(\lambda t)}(\overline{I}|\overline I). +\end{equation} +Note that +\begin{equation}\label{detK2} +\det\mathbf{K}(t=1,t_1,\dots,t_n)=\sum_{I\in\mathbf{n}}(-1)^{\envert{I}} +\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mathbf{A} +^{(\lambda)}(\overline{I}|\overline{I})=0. +\end{equation} + +Let $t_i=\hat x_i,i=1,\dots,n$. Lemma ~\ref{lem-per} yields +\begin{multline} +\biggl(\sum_{\,i\in\mathbf{n}}a_{l _i}x_i\biggr) +\det\mathbf{K}(t=1,x_1,\dots,x_n;l |l )\\ +=\biggl(\prod_{\,i\in\mathbf{n}}\hat x_i\biggr) +\sum_{I\subseteq\mathbf{n}-\{l \}} +(-1)^{\envert{I}}\per\mathbf{A}^{(\lambda)}(I|I) +\det\mathbf{A}^{(\lambda)} +(\overline I\cup\{l \}|\overline I\cup\{l \}). +\label{sum-ali} +\end{multline} +\begin{verbatim} +\begin{multline} +\biggl(\sum_{\,i\in\mathbf{n}}a_{l _i}x_i\biggr) +\det\mathbf{K}(t=1,x_1,\dots,x_n;l |l )\\ +=\biggl(\prod_{\,i\in\mathbf{n}}\hat x_i\biggr) +\sum_{I\subseteq\mathbf{n}-\{l \}} +(-1)^{\envert{I}}\per\mathbf{A}^{(\lambda)}(I|I) +\det\mathbf{A}^{(\lambda)} +(\overline I\cup\{l \}|\overline I\cup\{l \}). +\label{sum-ali} +\end{multline} +\end{verbatim} + +By \eqref{H-cycles}, \eqref{detprod}, and \eqref{sum-bij}, we have +\begin{prop}\label{prop:eg} +\begin{equation} +H_c=\frac1{2n}\sum^n_{l =0}(-1)^{l} +D_{l}, +\end{equation} +where +\begin{equation}\label{delta-l} +D_{l}=\eval[2]{\sum_{I_{l}\subseteq \mathbf{n}} +D(t_1,\dots,t_n)}_{t_i=\left\{\begin{smallmatrix} +0,& \text{if }i\in I_{l}\quad\\% \quad added for centering +1,& \text{otherwise}\end{smallmatrix}\right.\;,\;\; i=1,\dots,n}. +\end{equation} +\end{prop} + +\section{Application} +\label{lincomp} + +We consider here the applications of Theorems~\ref{th-info-ow-ow} and +~\ref{th-weak-ske-owf} to a complete +multipartite graph $K_{n_1\dots n_p}$. It can be shown that the +number of spanning trees of $K_{n_1\dots n_p}$ +may be written +\begin{equation}\label{e:st} +T=n^{p-2}\prod^p_{i=1} +(n-n_i)^{n_i-1} +\end{equation} +where +\begin{equation} +n=n_1+\dots+n_p. +\end{equation} + +It follows from Theorems~\ref{th-info-ow-ow} and +~\ref{th-weak-ske-owf} that +\begin{equation}\label{e:barwq} +\begin{split} +H_c&=\frac1{2n} +\sum^n_{{l}=0}(-1)^{l}(n-{l})^{p-2} +\sum_{l _1+\dots+l _p=l}\prod^p_{i=1} +\binom{n_i}{l _i}\\ +&\quad\cdot[(n-l )-(n_i-l _i)]^{n_i-l _i}\cdot +\biggl[(n-l )^2-\sum^p_{j=1}(n_i-l _i)^2\biggr].\end{split} +\end{equation} +\begin{verbatim} +... \binom{n_i}{l _i}\\ +\end{verbatim} +and +\begin{equation}\label{joe} +\begin{split} +H_c&=\frac12\sum^{n-1}_{l =0} +(-1)^{l}(n-l )^{p-2} +\sum_{l _1+\dots+l _p=l} +\prod^p_{i=1}\binom{n_i}{l _i}\\ +&\quad\cdot[(n-l )-(n_i-l _i)]^{n_i-l _i} +\left(1-\frac{l _p}{n_p}\right) +[(n-l )-(n_p-l _p)]. +\end{split} +\end{equation} + +The enumeration of $H_c$ in a $K_{n_1\dotsm n_p}$ graph can also be +carried out by Theorem ~\ref{thm-H-param} or ~\ref{thm-asym} +together with the algebraic method of \eqref{multdef}. +Some elegant representations may be obtained. For example, $H_c$ in +a $K_{n_1n_2n_3}$ graph may be written +\begin{equation}\label{j:mark} +\begin{split} +H_c=& +\frac{n_1!\,n_2!\,n_3!} +{n_1+n_2+n_3}\sum_i\left[\binom{n_1}{i} +\binom{n_2}{n_3-n_1+i}\binom{n_3}{n_3-n_2+i}\right.\\ +&+\left.\binom{n_1-1}{i} +\binom{n_2-1}{n_3-n_1+i} +\binom{n_3-1}{n_3-n_2+i}\right].\end{split} +\end{equation} + +\section{Secret Key Exchanges} +\label{SKE} + +Modern cryptography is fundamentally concerned with the problem of +secure private communication. A Secret Key Exchange is a protocol +where Alice and Bob, having no secret information in common to start, +are able to agree on a common secret key, conversing over a public +channel. The notion of a Secret Key Exchange protocol was first +introduced in the seminal paper of Diffie and Hellman +\cite{dihe:newdir}. \cite{dihe:newdir} presented a concrete +implementation of a Secret Key Exchange protocol, dependent on a +specific assumption (a variant on the discrete log), specially +tailored to yield Secret Key Exchange. Secret Key Exchange is of +course trivial if trapdoor permutations exist. However, there is no +known implementation based on a weaker general assumption. + +The concept of an informationally one-way function was introduced +in \cite{imlelu:oneway}. We give only an informal definition here: + +\begin{defn} A polynomial time +computable function $f = \{f_k\}$ is informationally +one-way if there is no probabilistic polynomial time algorithm which +(with probability of the form $1 - k^{-e}$ for some $e > 0$) +returns on input $y \in \{0,1\}^{k}$ a random element of $f^{-1}(y)$. +\end{defn} +In the non-uniform setting \cite{imlelu:oneway} show that these are not +weaker than one-way functions: +\begin{thm}[\cite{imlelu:oneway} (non-uniform)] +\label{th-info-ow-ow} +The existence of informationally one-way functions +implies the existence of one-way functions. +\end{thm} +We will stick to the convention introduced above of saying +``non-uniform'' before the theorem statement when the theorem +makes use of non-uniformity. It should be understood that +if nothing is said then the result holds for both the uniform and +the non-uniform models. + +It now follows from \thmref{th-info-ow-ow} that + +\begin{thm}[non-uniform]\label{th-weak-ske-owf} Weak SKE +implies the existence of a one-way function. +\end{thm} + +More recently, the polynomial-time, interior point algorithms for linear +programming have been extended to the case of convex quadratic programs +\cite{moad:quadpro,ye:intalg}, certain linear complementarity problems +\cite{komiyo:lincomp,miyoki:lincomp}, and the nonlinear complementarity +problem \cite{komiyo:unipfunc}. The connection between these algorithms +and the classical Newton method for nonlinear equations is well +explained in \cite{komiyo:lincomp}. + +\section{Review} +\label{computation} + +We begin our discussion with the following definition: + +\begin{defn} + +A function $H\colon \Re^n \to \Re^n$ is said to be +\emph{B-differentiable} at the point $z$ if (i)~$H$ is Lipschitz +continuous in a neighborhood of $z$, and (ii)~ there exists a positive +homogeneous function $BH(z)\colon \Re^n \to \Re^n$, called the +\emph{B-derivative} of $H$ at $z$, such that +\[ \lim_{v \to 0} \frac{H(z+v) - H(z) - BH(z)v}{\enVert{v}} = 0. \] +The function $H$ is \textit{B-differentiable in set $S$} if it is +B-differentiable at every point in $S$. The B-derivative $BH(z)$ is said +to be \textit{strong} if +\[ \lim_{(v,v') \to (0,0)} \frac{H(z+v) - H(z+v') - BH(z)(v + -v')}{\enVert{v - v'}} = 0. \] +\end{defn} + + +\begin{lem}\label{limbog} There exists a smooth function $\psi_0(z)$ +defined for $\abs{z}>1-2a$ satisfying the following properties\textup{:} +\begin{enumerate} +\renewcommand{\labelenumi}{(\roman{enumi})} +\item $\psi_0(z)$ is bounded above and below by positive constants +$c_1\leq \psi_0(z)\leq c_2$. +\item If $\abs{z}>1$, then $\psi_0(z)=1$. +\item For all $z$ in the domain of $\psi_0$, $\Delta_0\ln \psi_0\geq 0$. +\item If $1-2a<\abs{z}<1-a$, then $\Delta_0\ln \psi_0\geq +c_3>0$. +\end{enumerate} +\end{lem} + +\begin{proof} +We choose $\psi_0(z)$ to be a radial function depending only on $r=\abs{z}$. +Let $h(r)\geq 0$ be a suitable smooth function satisfying $h(r)\geq c_3$ +for $1-2a<\abs{z}<1-a$, and $h(r)=0$ for $\abs{z}>1-\tfrac a2$. The radial +Laplacian +\[\Delta_0\ln\psi_0(r)=\left(\frac {d^2}{dr^2}+\frac +1r\frac d{dr}\right)\ln\psi_0(r)\] +has smooth coefficients for $r>1-2a$. Therefore, we may +apply the existence and uniqueness theory for ordinary differential +equations. Simply let $\ln \psi_0(r)$ be the solution of the differential +equation +\[\left(\frac{d^2}{dr^2}+\frac 1r\frac d{dr}\right)\ln \psi_0(r)=h(r)\] +with initial conditions given by $\ln \psi_0(1)=0$ and +$\ln\psi_0'(1)=0$. + +Next, let $D_\nu$ be a finite collection of pairwise disjoint disks, +all of which are contained in the unit disk centered at the origin in +$C$. We assume that $D_\nu=\{z\mid \abs{z-z_\nu}<\delta\}$. Suppose that +$D_\nu(a)$ denotes the smaller concentric disk $D_\nu(a)=\{z\mid +\abs{z-z_\nu}\leq (1-2a)\delta\}$. We define a smooth weight function +$\Phi_0(z)$ for $z\in C-\bigcup_\nu D_\nu(a)$ by setting $\Phi_ +0(z)=1$ when $z\notin \bigcup_\nu D_\nu$ and $\Phi_ +0(z)=\psi_0((z-z_\nu)/\delta)$ when $z$ is an element of $D_\nu$. It +follows from \lemref{limbog} that $\Phi_ 0$ satisfies the properties: +\begin{enumerate} +\renewcommand{\labelenumi}{(\roman{enumi})} +\item \label{boundab}$\Phi_ 0(z)$ is bounded above and below by +positive constants $c_1\leq \Phi_ 0(z)\leq c_2$. +\item \label{d:over}$\Delta_0\ln\Phi_ 0\geq 0$ for all +$z\in C-\bigcup_\nu D_\nu(a)$, +the domain where the function $\Phi_ 0$ is defined. +\item \label{d:ad}$\Delta_0\ln\Phi_ 0\geq c_3\delta^{-2}$ +when $(1-2a)\delta<\abs{z-z_\nu}<(1-a)\delta$. +\end{enumerate} +Let $A_\nu$ denote the annulus $A_\nu=\{(1-2a)\delta<\abs{z-z_\nu}<(1-a) +\delta \}$, and set $A=\bigcup_\nu A_\nu$. The +properties (\ref{d:over}) and (\ref{d:ad}) of $\Phi_ 0$ +may be summarized as $\Delta_0\ln \Phi_ 0\geq c_3\delta^{-2}\chi_A$, +where $\chi _A$ is the characteristic function of $A$. +\end{proof} + +Suppose that $\alpha$ is a nonnegative real constant. We apply +Proposition~\ref{prop:eg} with $\Phi(z)=\Phi_ 0(z) e^{\alpha\abs{z}^2}$. If +$u\in C^\infty_0(R^2-\bigcup_\nu D_\nu(a))$, assume that $\mathcal{D}$ +is a bounded domain containing the support of $u$ and $A\subset +\mathcal{D}\subset R^2-\bigcup_\nu D_\nu(a)$. A calculation gives +\[\int_{\mathcal{D}}\abs{\overline\partial u}^2\Phi_ 0(z) e^{\alpha\abs{z}^2} +\geq c_4\alpha\int_{\mathcal{D}}\abs{u}^2\Phi_ 0e^{\alpha\abs{z}^2} ++c_5\delta^{-2}\int_ A\abs{u}^2\Phi_ 0e^{\alpha\abs{z}^2}.\] + +The boundedness, property (\ref{boundab}) of $\Phi_ 0$, then yields +\[\int_{\mathcal{D}}\abs{\overline\partial u}^2e^{\alpha\abs{z}^2}\geq c_6\alpha +\int_{\mathcal{D}}\abs{u}^2e^{\alpha\abs{z}^2} ++c_7\delta^{-2}\int_ A\abs{u}^2e^{\alpha\abs{z}^2}.\] + +Let $B(X)$ be the set of blocks of $\Lambda_{X}$ +and let $b(X) = \abs{B(X)}$. If $\phi \in Q_{X}$ then +$\phi$ is constant on the blocks of $\Lambda_{X}$. +\begin{equation}\label{far-d} + P_{X} = \{ \phi \in M \mid \Lambda_{\phi} = \Lambda_{X} \}, +\qquad +Q_{X} = \{\phi \in M \mid \Lambda_{\phi} \geq \Lambda_{X} \}. +\end{equation} +If $\Lambda_{\phi} \geq \Lambda_{X}$ then +$\Lambda_{\phi} = \Lambda_{Y}$ for some $Y \geq X$ so that +\[ Q_{X} = \bigcup_{Y \geq X} P_{Y}. \] +Thus by M\"obius inversion +\[ \abs{P_{Y}}= \sum_{X\geq Y} \mu (Y,X)\abs{Q_{X}}.\] +Thus there is a bijection from $Q_{X}$ to $W^{B(X)}$. +In particular $\abs{Q_{X}} = w^{b(X)}$. + +Next note that $b(X)=\dim X$. We see this by choosing a +basis for $X$ consisting of vectors $v^{k}$ defined by +\[v^{k}_{i}= +\begin{cases} 1 & \text{if $i \in \Lambda_{k}$},\\ +0 &\text{otherwise.} \end{cases} +\] +\begin{verbatim} +\[v^{k}_{i}= +\begin{cases} 1 & \text{if $i \in \Lambda_{k}$},\\ +0 &\text{otherwise.} \end{cases} +\] +\end{verbatim} + +\begin{lem}\label{p0201} +Let $\A$ be an arrangement. Then +\[ \chi (\A,t) = \sum_{\B \subseteq \A} +(-1)^{\abs{\B}} t^{\dim T(\B)}. \] +\end{lem} + +In order to compute $R''$ recall the definition +of $S(X,Y)$ from \lemref{lem-per}. Since $H \in \B$, +$\A_{H} \subseteq \B$. Thus if $T(\B) = Y$ then +$\B \in S(H,Y)$. Let $L'' = L(\A'')$. Then +\begin{equation}\label{E_SXgYy} +\begin{split} +R''&= \sum_{H\in \B \subseteq \A} (-1)^{\abs{\B}} +t^{\dim T(\B)}\\ +&= \sum_{Y \in L''} \sum_{\B \in S(H,Y)} +(-1)^{\abs{\B}}t^{\dim Y} \\ +&= -\sum_{Y \in L''} \sum_{\B \in S(H,Y)} (-1)^ +{\abs{\B - \A_{H}}} t^{\dim Y} \\ +&= -\sum_{Y \in L''} \mu (H,Y)t^{\dim Y} \\ +&= -\chi (\A '',t). +\end{split} +\end{equation} + +\begin{cor}\label{tripleA} +Let $(\A,\A',\A'')$ be a triple of arrangements. Then +\[ \pi (\A,t) = \pi (\A',t) + t \pi (\A'',t). \] +\end{cor} + +\begin{defn} +Let $(\A,\A',\A'')$ be a triple with respect to +the hyperplane $H \in \A$. Call $H$ a \textit{separator} +if $T(\A) \not\in L(\A')$. +\end{defn} + +\begin{cor}\label{nsep} +Let $(\A,\A',\A'')$ be a triple with respect to $H \in \A$. +\begin{enumerate} +\renewcommand{\labelenumi}{(\roman{enumi})} +\item +If $H$ is a separator then +\[ \mu (\A) = - \mu (\A'') \] +and hence +\[ \abs{\mu (\A)} = \abs{ \mu (\A'')}. \] + +\item If $H$ is not a separator then +\[\mu (\A) = \mu (\A') - \mu (\A'') \] +and +\[ \abs{\mu (\A)} = \abs{\mu (\A')} + \abs{\mu (\A'')}. \] +\end{enumerate} +\end{cor} + +\begin{proof} +It follows from \thmref{th-info-ow-ow} that $\pi(\A,t)$ +has leading term +\[(-1)^{r(\A)}\mu (\A)t^{r(\A)}.\] +The conclusion +follows by comparing coefficients of the leading +terms on both sides of the equation in +Corollary~\ref{tripleA}. If $H$ is a separator then +$r(\A') < r(\A)$ and there is no contribution +from $\pi (\A',t)$. +\end{proof} + +The Poincar\'e polynomial of an arrangement +will appear repeatedly +in these notes. It will be shown to equal the +Poincar\'e polynomial +of the graded algebras which we are going to +associate with $\A$. It is also the Poincar\'e +polynomial of the complement $M(\A)$ for a +complex arrangement. Here we prove +that the Poincar\'e polynomial is the chamber +counting function for a real arrangement. The +complement $M(\A)$ is a disjoint union of chambers +\[M(\A) = \bigcup_{C \in \Cham(\A)} C.\] +The number +of chambers is determined by the Poincar\'e +polynomial as follows. + +\begin{thm}\label{th-realarr} +Let $\A_{\mathbf{R}}$ be a real arrangement. Then +\[ \abs{\Cham(\A_{\mathbf{R}})} = \pi (\A_{\mathbf{R}},1). \] +\end{thm} + +\begin{proof} +We check the properties required in Corollary~\ref{nsep}: +(i) follows from $\pi (\Phi_{ l},t) = 1$, and (ii) is a +consequence of Corollary~\ref{BI}. +\end{proof} + +\begin{figure} +\vspace{5cm} +\caption[]{$Q(\A_{1}) = xyz(x-z)(x+z)(y-z)(y+z)$} +\end{figure} + +\begin{figure} +\vspace{5cm} +\caption[]{$Q(\A_{2})= xyz(x+y+z)(x+y-z)(x-y+z)(x-y-z)$} +\end{figure} + + +\begin{thm} +\label{T_first_the_int} +Let $\phi$ be a protocol for a random pair $\XcY$. +If one of $\st_\phi(x',y)$ and $\st_\phi(x,y')$ is a prefix of the other +and $(x,y)\in\SXY$, then +\[ +\langle \st_j(x',y)\rangle_{j=1}^\infty +=\langle \st_j(x,y)\rangle_{j=1}^\infty +=\langle \st_j(x,y')\rangle_{j=1}^\infty . +\] +\end{thm} +\begin{proof} +We show by induction on $i$ that +\[ +\langle \st_j(x',y)\rangle_{j=1}^i +=\langle \st_j(x,y)\rangle_{j=1}^i +=\langle \st_j(x,y')\rangle_{j=1}^i. +\] +The induction hypothesis holds vacuously for $i=0$. Assume it holds for +$i-1$, in particular +$[\st_j(x',y)]_{j=1}^{i-1}=[\st_j(x,y')]_{j=1}^{i-1}$. Then one of +$[\st_j(x',y)]_{j=i}^{\infty}$ and $[\st_j(x,y')]_{j=i}^{\infty}$ is a +prefix of the other which implies that one of $\st_i(x',y)$ and +$\st_i(x,y')$ is a prefix of the other. If the $i$th message is +transmitted by $P_\X$ then, by the separate-transmissions property and +the induction hypothesis, $\st_i(x,y)=\st_i(x,y')$, hence one of +$\st_i(x,y)$ and $\st_i(x',y)$ is a prefix of the other. By the +implicit-termination property, neither $\st_i(x,y)$ nor $\st_i(x',y)$ +can be a proper prefix of the other, hence they must be the same and +$\st_i(x',y)=\st_i(x,y)=\st_i(x,y')$. If the $i$th message is +transmitted by $\PY$ then, symmetrically, $\st_i(x,y)=\st_i(x',y)$ by +the induction hypothesis and the separate-transmissions property, and, +then, $\st_i(x,y)=\st_i(x,y')$ by the implicit-termination property, +proving the induction step. +\end{proof} + +If $\phi$ is a protocol for $(X,Y)$, and $(x,y)$, $(x',y)$ are distinct +inputs in $\SXY$, then, by the correct-decision property, +$\langle\st_j(x,y)\rangle_{j=1}^\infty\ne\langle +\st_j(x',y)\rangle_{j=1}^\infty$. + +Equation~(\ref{E_SXgYy}) defined $\PY$'s ambiguity set $\SXgYy$ +to be the set of possible $X$ values when $Y=y$. +The last corollary implies that for all $y\in\SY$, +the multiset% +\footnote{A multiset allows multiplicity of elements. +Hence, $\{0,01,01\}$ is prefix free as a set, but not as a multiset.} +of codewords $\{\st_\phi(x,y):x\in\SXgYy\}$ is prefix free. + +\section{One-Way Complexity} +\label{S_Cp1} + +$\Cw1$, the one-way complexity of a random pair $\XcY$, +is the number of bits $P_\X$ must transmit in the worst case +when $\PY$ is not permitted to transmit any feedback messages. +Starting with $\SXY$, the support set of $\XcY$, we define $\G$, +the \textit{characteristic hypergraph} of $\XcY$, and show that +\[ +\Cw1=\lceil\,\log\chi(\G)\rceil\ . +\] + +Let $\XcY$ be a random pair. For each $y$ in $\SY$, the support set of +$Y$, Equation~(\ref{E_SXgYy}) defined $\SXgYy$ to be the set of possible +$x$ values when $Y=y$. The \textit{characteristic hypergraph} $\G$ of +$\XcY$ has $\SX$ as its vertex set and the hyperedge $\SXgYy$ for each +$y\in\SY$. + + +We can now prove a continuity theorem. +\begin{thm}\label{t:conl} +Let $\Omega \subset\mathbf{R}^n$ be an open set, let +$u\in BV(\Omega ;\mathbf{R}^m)$, and let +\begin{equation}\label{quts} +T^u_x=\left\{y\in\mathbf{R}^m: + y=\tilde u(x)+\left\langle \frac{Du}{\abs{Du}}(x),z +\right\rangle \text{ for some }z\in\mathbf{R}^n\right\} +\end{equation} +for every $x\in\Omega \backslash S_u$. Let $f\colon \mathbf{R}^m\to +\mathbf{R}^k$ be a Lipschitz continuous function such that $f(0)=0$, and +let $v=f(u)\colon \Omega \to \mathbf{R}^k$. Then $v\in BV(\Omega +;\mathbf{R}^k)$ and +\begin{equation} +Jv=\eval{(f(u^+)-f(u^-))\otimes \nu_u\cdot\, +\mathcal{H}_{n-1}}_{S_u}. +\end{equation} +In addition, for $\abs{\wt{D}u}$-almost every $x\in\Omega $ the +restriction of the function $f$ to $T^u_x$ is differentiable at $\tilde +u(x)$ and +\begin{equation} +\wt{D}v=\nabla (\eval{f}_{T^u_x})(\tilde u) +\frac{\wt{D}u}{\abs{\wt{D}u}}\cdot\abs{\wt{D}u}.\end{equation} +\end{thm} + +Before proving the theorem, we state without proof three elementary +remarks which will be useful in the sequel. +\begin{rem}\label{r:omb} +Let $\omega\colon \left]0,+\infty\right[\to \left]0,+\infty\right[$ +be a continuous function such that $\omega (t)\to 0$ as $t\to +0$. Then +\[\lim_{h\to 0^+}g(\omega(h))=L\Leftrightarrow\lim_{h\to +0^+}g(h)=L\] +for any function $g\colon \left]0,+\infty\right[\to \mathbf{R}$. +\end{rem} +\begin{rem}\label{r:dif} +Let $g \colon \mathbf{R}^n\to \mathbf{R}$ be a Lipschitz +continuous function and assume that +\[L(z)=\lim_{h\to 0^+}\frac{g(hz)-g(0)}h\] +exists for every $z\in\mathbf{Q}^n$ and that $L$ is a linear function of +$z$. Then $g$ is differentiable at 0. +\end{rem} +\begin{rem}\label{r:dif0} +Let $A \colon \mathbf{R}^n\to \mathbf{R}^m$ be a linear function, and +let $f \colon \mathbf{R}^m\to \mathbf{R}$ be a function. Then the +restriction of $f$ to the range of $A$ is differentiable at 0 if and +only if $f(A)\colon \mathbf{R}^n\to \mathbf{R}$ is differentiable at 0 +and +\[\nabla(\eval{f}_{\IM(A)})(0)A=\nabla (f(A))(0).\] +\end{rem} + +\begin{proof} + We begin by showing that $v\in BV(\Omega;\mathbf{R}^k)$ and +\begin{equation}\label{e:bomb} +\abs{Dv}(B)\le K\abs{Du}(B)\qquad\forall B\in\mathbf{B}(\Omega ), +\end{equation} +where $K>0$ is the Lipschitz constant of $f$. By \eqref{sum-Di} and by +the approximation result quoted in \secref{s:mt}, it is possible to find +a sequence $(u_h)\subset C^1(\Omega ;\mathbf{R}^m)$ converging to $u$ in +$L^1(\Omega ;\mathbf{R}^m)$ and such that +\[\lim_{h\to +\infty}\int_\Omega \abs{\nabla u_h}\,dx=\abs{Du}(\Omega ).\] +The functions $v_h=f(u_h)$ are locally Lipschitz continuous in $\Omega +$, and the definition of differential implies that $\abs{\nabla v_h}\le +K\abs{\nabla u_h}$ almost everywhere in $\Omega $. The lower semicontinuity +of the total variation and \eqref{sum-Di} yield +\begin{equation} +\begin{split} +\abs{Dv}(\Omega )\le\liminf_{h\to +\infty}\abs{Dv_h}(\Omega) & +=\liminf_{h\to +\infty}\int_\Omega \abs{\nabla v_h}\,dx\\ +&\le K\liminf_{h\to +\infty}\int_\Omega +\abs{\nabla u_h}\,dx=K\abs{Du}(\Omega). +\end{split}\end{equation} +Since $f(0)=0$, we have also +\[\int_\Omega \abs{v}\,dx\le K\int_\Omega \abs{u}\,dx;\] +therefore $u\in BV(\Omega ;\mathbf{R}^k)$. Repeating the same argument +for every open set $A\subset\Omega $, we get \eqref{e:bomb} for every +$B\in\mathbf{B}(\Omega)$, because $\abs{Dv}$, $\abs{Du}$ are Radon measures. To +prove \lemref{limbog}, first we observe that +\begin{equation}\label{e:SS} +S_v\subset S_u,\qquad\tilde v(x)=f(\tilde u(x))\qquad \forall x\in\Omega +\backslash S_u.\end{equation} +In fact, for every $\varepsilon >0$ we have +\[\{y\in B_\rho(x): \abs{v(y)-f(\tilde u(x))}>\varepsilon \}\subset \{y\in +B_\rho(x): \abs{u(y)-\tilde u(x)}>\varepsilon /K\},\] +hence +\[\lim_{\rho\to 0^+}\frac{\abs{\{y\in B_\rho(x): \abs{v(y)-f(\tilde u(x))}> +\varepsilon \}}}{\rho^n}=0\] +whenever $x\in\Omega \backslash S_u$. By a similar argument, if $x\in +S_u$ is a point such that there exists a triplet $(u^+,u^-,\nu_u)$ +satisfying \eqref{detK1}, \eqref{detK2}, then +\[ +(v^+(x)-v^-(x))\otimes \nu_v=(f(u^+(x))-f(u^-(x)))\otimes\nu_u\quad +\text{if }x\in S_v +\] +and $f(u^-(x))=f(u^+(x))$ if $x\in S_u\backslash S_v$. Hence, by (1.8) +we get +\begin{equation*}\begin{split} +Jv(B)=\int_{B\cap S_v}(v^+-v^-)\otimes \nu_v\,d\mathcal{H}_{n-1}&= +\int_{B\cap S_v}(f(u^+)-f(u^-))\otimes \nu_u\,d\mathcal{H}_{n-1}\\ +&=\int_{B\cap S_u}(f(u^+)-f(u^-))\otimes \nu_u\,d\mathcal{H}_{n-1} +\end{split}\end{equation*} +and \lemref{limbog} is proved. +\end{proof} + +To prove \eqref{e:SS}, it is not restrictive to assume that $k=1$. +Moreover, to simplify our notation, from now on we shall assume that +$\Omega = \mathbf{R}^n$. The proof of \eqref{e:SS} is divided into two +steps. In the first step we prove the statement in the one-dimensional +case $(n=1)$, using \thmref{th-weak-ske-owf}. In the second step we +achieve the general result using \thmref{t:conl}. + +\subsection*{Step 1} +Assume that $n=1$. Since $S_u$ is at most countable, \eqref{sum-bij} +yields that $\abs{\wt{D}v}(S_u\backslash S_v)=0$, so that +\eqref{e:st} and \eqref{e:barwq} imply that $Dv=\wt{D}v+Jv$ is +the Radon-Nikod\'ym decomposition of $Dv$ in absolutely continuous and +singular part with respect to $\abs{\wt{D} u}$. By +\thmref{th-weak-ske-owf}, we have +\begin{equation*} +\frac{\wt{D}v}{\abs{\wt{D}u}}(t)=\lim_{s\to t^+} +\frac{Dv(\interval{\left[t,s\right[})} +{\abs{\wt{D}u}(\interval{\left[t,s\right[})},\qquad +\frac{\wt{D}u}{\abs{\wt{D}u}}(t)=\lim_{s\to t^+} +\frac{Du(\interval{\left[t,s\right[})} +{\abs{\wt{D}u}(\interval{\left[t,s\right[})} +\end{equation*} +$\abs{\wt{D}u}$-almost everywhere in $\mathbf{R}$. It is well known +(see, for instance, \cite[2.5.16]{ste:sint}) that every one-dimensional +function of bounded variation $w$ has a unique left continuous +representative, i.e., a function $\hat w$ such that $\hat w=w$ almost +everywhere and $\lim_{s\to t^-}\hat w(s)=\hat w(t)$ for every $t\in +\mathbf{R}$. These conditions imply +\begin{equation} +\hat u(t)=Du(\interval{\left]-\infty,t\right[}), +\qquad \hat v(t)=Dv(\interval{\left]-\infty,t\right[})\qquad +\forall t\in\mathbf{R} +\end{equation} +and +\begin{equation}\label{alimo} +\hat v(t)=f(\hat u(t))\qquad\forall t\in\mathbf{R}.\end{equation} +Let $t\in\mathbf{R}$ be such that +$\abs{\wt{D}u}(\interval{\left[t,s\right[})>0$ for every $s>t$ and +assume that the limits in \eqref{joe} exist. By \eqref{j:mark} and +\eqref{far-d} we get +\begin{equation*}\begin{split} +\frac{\hat v(s)-\hat +v(t)}{\abs{\wt{D}u}(\interval{\left[t,s\right[})}&=\frac {f(\hat +u(s))-f(\hat u(t))}{\abs{\wt{D}u}(\interval{\left[t,s\right[})}\\ +&=\frac{f(\hat u(s))-f(\hat +u(t)+\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t)\abs{\wt{D}u +}(\interval{\left[t,s\right[}))}% +{\abs{\wt{D}u}(\interval{\left[t,s\right[})}\\ +&+\frac +{f(\hat u(t)+\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t)\abs{\wt{D} +u}(\interval{\left[t,s\right[}))-f(\hat +u(t))}{\abs{\wt{D}u}(\interval{\left[t,s\right[})} +\end{split}\end{equation*} +for every $s>t$. Using the Lipschitz condition on $f$ we find +{\setlength{\multlinegap}{0pt} +\begin{multline*} +\left\lvert\frac{\hat v(s)-\hat +v(t)}{\abs{\wt{D}u}(\interval{\left[t,s\right[})} -\frac{f(\hat +u(t)+\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t) +\abs{\wt{D}u}(\interval{\left[t,s\right[}))-f(\hat +u(t))}{\abs{\wt{D}u}(\interval{\left[t,s\right[})}\right\rvert\\ +\le K\left\lvert +\frac{\hat u(s)-\hat u(t)} + {\abs{\wt{D}u}(\interval{\left[t,s\right[})} +-\frac{\wt{D}u}{\abs{ +\wt{D}u}}(t)\right\rvert.\end{multline*} +}% end of group with \multlinegap=0pt +By \eqref{e:bomb}, the function $s\to +\abs{\wt{D}u}(\interval{\left[t,s\right[})$ is continuous and +converges to 0 as $s\downarrow t$. Therefore Remark~\ref{r:omb} and the +previous inequality imply +\[\frac{\wt{D}v}{\abs{\wt{D}u}}(t)=\lim_{h\to 0^+} +\frac{f(\hat u(t)+h\dfrac{\wt{D}u}{\abs{\wt{D}u}} +(t))-f(\hat u(t))}h\quad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}.\] +By \eqref{joe}, $\hat u(x)=\tilde u(x)$ for every +$x\in\mathbf{R}\backslash S_u$; moreover, applying the same argument to +the functions $u'(t)=u(-t)$, $v'(t)=f(u'(t))=v(-t)$, we get +\[\frac{\wt{D}v}{\abs{\wt{D}u}}(t)=\lim_{h\to 0} +\frac{f(\tilde u(t) ++h\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t))-f(\tilde u(t))}{h} +\qquad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}\] +and our statement is proved. + +\subsection*{Step 2} + +Let us consider now the general case $n>1$. Let $\nu\in \mathbf{R}^n$ be +such that $\abs{\nu}=1$, and let $\pi_\nu=\{y\in\mathbf{R}^n: \langle +y,\nu\rangle =0\}$. In the following, we shall identify $\mathbf{R}^n$ +with $\pi_\nu\times\mathbf{R}$, and we shall denote by $y$ the variable +ranging in $\pi_\nu$ and by $t$ the variable ranging in $\mathbf{R}$. By +the just proven one-dimensional result, and by \thmref{thm-main}, we get +\[\lim_{h\to 0}\frac{f(\tilde u(y+t\nu)+h\dfrac{\wt{D}u_y}{\abs{ +\wt{D}u_y}}(t))-f(\tilde u(y+t\nu))}h=\frac{\wt{D}v_y}{\abs{ +\wt{D}u_y}}(t)\qquad\abs{\wt{D}u_y}\text{-a.e. in }\mathbf{R}\] +for $\mathcal{H}_{n-1}$-almost every $y\in \pi_\nu$. We claim that +\begin{equation} +\frac{\langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle +}}(y+t\nu)=\frac{\wt{D}u_y} +{\abs{\wt{D}u_y}}(t)\qquad\abs{\wt{D}u_y}\text{-a.e. in }\mathbf{R} +\end{equation} +for $\mathcal{H}_{n-1}$-almost every $y\in\pi_\nu$. In fact, by +\eqref{sum-ali} and \eqref{delta-l} we get +\begin{multline*} +\int_{\pi_\nu}\frac{\wt{D}u_y}{\abs{\wt{D}u_y}}\cdot\abs{\wt{D}u_y +}\,d\mathcal{H}_{n-1}(y)=\int_{\pi_\nu}\wt{D}u_y\,d\mathcal{H}_{n-1}(y)\\ +=\langle \wt{D}u,\nu\rangle =\frac +{\langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle}}\cdot +\abs{\langle \wt{D}u,\nu\rangle }=\int_{\pi_\nu}\frac{ +\langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }} +(y+\cdot \nu)\cdot\abs{\wt{D}u_y}\,d\mathcal{H}_{n-1}(y) +\end{multline*} +and \eqref{far-d} follows from \eqref{sum-Di}. By the same argument it +is possible to prove that +\begin{equation} +\frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle +}}(y+t\nu)=\frac{\wt{D}v_y}{\abs{\wt{D}u_y}}(t)\qquad\abs{ +\wt{D}u_y}\text{-a.e. in }\mathbf{R}\end{equation} +for $\mathcal{H}_{n-1}$-almost every $y\in \pi_\nu$. By \eqref{far-d} +and \eqref{E_SXgYy} we get +\[ +\lim_{h\to 0}\frac{f(\tilde u(y+t\nu)+h\dfrac{\langle \wt{D} +u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }}(y+t\nu))-f(\tilde +u(y+t\nu))}{h} +=\frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle +\wt{D}u,\nu\rangle }}(y+t\nu)\] +for $\mathcal{H}_{n-1}$-almost every $y\in\pi_\nu$, and using again +\eqref{detK1}, \eqref{detK2} we get +\[ +\lim_{h\to 0}\frac{f(\tilde u(x)+h\dfrac{\langle +\wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }}(x))-f(\tilde +u(x))}{h}=\frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle \wt{D}u,\nu +\rangle }}(x) +\] +$\abs{\langle \wt{D}u,\nu\rangle}$-a.e. in $\mathbf{R}^n$. + +Since the function $\abs{\langle \wt{D}u,\nu\rangle }/\abs{\wt{D}u}$ +is strictly positive $\abs{\langle \wt{D}u,\nu\rangle }$-almost everywhere, +we obtain also +\begin{multline*} +\lim_{h\to 0}\frac{f(\tilde u(x)+h\dfrac{\abs{\langle +\wt{D}u,\nu\rangle }}{\abs{\wt{D}u}}(x)\dfrac{\langle \wt{D} +u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }}(x))-f(\tilde u(x))}{h}\\ +=\frac{\abs{\langle \wt{D}u,\nu\rangle }}{\abs{\wt{D}u}}(x)\frac +{\langle \wt{D}v,\nu\rangle }{\abs{\langle +\wt{D}u,\nu\rangle }}(x) +\end{multline*} +$\abs{\langle \wt{D}u,\nu\rangle }$-almost everywhere in $\mathbf{R}^n$. + +Finally, since +\begin{align*} +&\frac{\abs{\langle \wt{D}u,\nu\rangle }}{\abs{\wt{D}u}} +\frac{\langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle}} +=\frac{\langle \wt{D}u,\nu\rangle }{\abs{\wt{D}u}} +=\left\langle \frac{\wt{D}u}{\abs{\wt{D}u}},\nu\right\rangle + \qquad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}^n\\ +&\frac{\abs{\langle \wt{D}u,\nu\rangle }}{\abs{\wt{D}u}} +\frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle}} +=\frac{\langle \wt{D}v,\nu\rangle }{\abs{\wt{D}u}} +=\left\langle \frac{\wt{D}v}{\abs{\wt{D}u}},\nu\right\rangle + \qquad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}^n +\end{align*} +and since both sides of \eqref{alimo} +are zero $\abs{\wt{D}u}$-almost everywhere +on $\abs{\langle \wt{D}u,\nu\rangle }$-negligible sets, we conclude that +\[ +\lim_{h\to 0}\frac{f\left( +\tilde u(x)+h\left\langle \dfrac{\wt{D} +u}{\abs{\wt{D}u}}(x),\nu\right\rangle \right)-f(\tilde u(x))}h +=\left\langle \frac{\wt{D}v}{\abs{\wt{D}u}}(x),\nu\right\rangle, +\] +$\abs{\wt{D}u}$-a.e. in $\mathbf{R}^n$. +Since $\nu$ is arbitrary, by Remarks \ref{r:dif} and~\ref{r:dif0} +the restriction of $f$ to +the affine space $T^u_x$ is differentiable at $\tilde u(x)$ for $\abs{\wt{D} +u}$-almost every $x\in \mathbf{R}^n$ and \eqref{quts} holds.\qed + +It follows from \eqref{sum-Di}, \eqref{detK1}, and \eqref{detK2} that +\begin{equation}\label{Dt} +D(t_1,\dots,t_n)=\sum_{I\in\mathbf{n}}(-1)^{\abs{I}-1}\abs{I} +\prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mathbf{A}^{(\lambda)} +(\overline I|\overline I). +\end{equation} +Let $t_i=\hat x_i$, $i=1,\dots,n$. Lemma 1 leads to +\begin{equation}\label{Dx} +D(\hat x_1,\dots,\hat x_n)=\prod_{i\in\mathbf{n}}\hat x_i +\sum_{I\in\mathbf{n}}(-1)^{\abs{I}-1}\abs{I}\per \mathbf{A} +^{(\lambda)}(I|I)\det\mathbf{A}^{(\lambda)}(\overline I|\overline I). +\end{equation} +By \eqref{H-cycles}, \eqref{sum-Di}, and \eqref{Dx}, +we have the following result: +\begin{thm}\label{thm-H-param} +\begin{equation}\label{H-param} +H_c=\frac{1}{2n}\sum^n_{l =1}l (-1)^{l -1}A_{l} +^{(\lambda)}, +\end{equation} +where +\begin{equation}\label{A-l-lambda} +A^{(\lambda)}_l =\sum_{I_l \subseteq\mathbf{n}}\per \mathbf{A} +^{(\lambda)}(I_l |I_l )\det\mathbf{A}^{(\lambda)} +(\overline I_{l}|\overline I_l ),\abs{I_{l}}=l . +\end{equation} +\end{thm} + +It is worth noting that $A_l ^{(\lambda)}$ of \eqref{A-l-lambda} is +similar to the coefficients $b_l $ of the characteristic polynomial of +\eqref{bl-sum}. It is well known in graph theory that the coefficients +$b_l $ can be expressed as a sum over certain subgraphs. It is +interesting to see whether $A_l $, $\lambda=0$, structural properties +of a graph. + +We may call \eqref{H-param} a parametric representation of $H_c$. In +computation, the parameter $\lambda_i$ plays very important roles. The +choice of the parameter usually depends on the properties of the given +graph. For a complete graph $K_n$, let $\lambda_i=1$, $i=1,\dots,n$. +It follows from \eqref{A-l-lambda} that +\begin{equation}\label{compl-gr} +A^{(1)}_l =\begin{cases} n!,&\text{if }l =1\\ +0,&\text{otherwise}.\end{cases} +\end{equation} +By \eqref{H-param} +\begin{equation} +H_c=\frac 12(n-1)!. +\end{equation} +For a complete bipartite graph $K_{n_1n_2}$, let $\lambda_i=0$, $i=1,\dots,n$. +By \eqref{A-l-lambda}, +\begin{equation} +A_l = +\begin{cases} -n_1!n_2!\delta_{n_1n_2},&\text{if }l =2\\ +0,&\text{otherwise }.\end{cases} +\label{compl-bip-gr} +\end{equation} +Theorem ~\ref{thm-H-param} +leads to +\begin{equation} +H_c=\frac1{n_1+n_2}n_1!n_2!\delta_{n_1n_2}. +\end{equation} + +Now, we consider an asymmetrical approach. Theorem \ref{thm-main} leads to +\begin{multline} +\det\mathbf{K}(t=1,t_1,\dots,t_n;l |l )\\ +=\sum_{I\subseteq\mathbf{n}-\{l \}} +(-1)^{\abs{I}}\prod_{i\in I}t_i\prod_{j\in I} +(D_j+\lambda_jt_j)\det\mathbf{A}^{(\lambda)} +(\overline I\cup\{l \}|\overline I\cup\{l \}). +\end{multline} + +By \eqref{H-cycles} and \eqref{sum-ali} we have the following asymmetrical +result: +\begin{thm}\label{thm-asym} +\begin{equation} +H_c=\frac12\sum_{I\subseteq\mathbf{n}-\{l \}} +(-1)^{\abs{I}}\per\mathbf{A}^{(\lambda)}(I|I)\det +\mathbf{A}^{(\lambda)} +(\overline I\cup\{l \}|\overline I\cup\{l \}) +\end{equation} +which reduces to Goulden--Jackson's formula when $\lambda_i=0,i=1,\dots,n$ +\cite{mami:matrixth}. +\end{thm} + +\section{Various font features of the \pkg{amsmath} package} +\label{s:font} +\subsection{Bold versions of special symbols} + +In the \pkg{amsmath} package \cn{boldsymbol} is used for getting +individual bold math symbols and bold Greek letters---everything in +math except for letters of the Latin alphabet, +where you'd use \cn{mathbf}. For example, +\begin{verbatim} +A_\infty + \pi A_0 \sim +\mathbf{A}_{\boldsymbol{\infty}} \boldsymbol{+} +\boldsymbol{\pi} \mathbf{A}_{\boldsymbol{0}} +\end{verbatim} +looks like this: +\[A_\infty + \pi A_0 \sim \mathbf{A}_{\boldsymbol{\infty}} +\boldsymbol{+} \boldsymbol{\pi} \mathbf{A}_{\boldsymbol{0}}\] + +\subsection{``Poor man's bold''} +If a bold version of a particular symbol doesn't exist in the +available fonts, +then \cn{boldsymbol} can't be used to make that symbol bold. +At the present time, this means that +\cn{boldsymbol} can't be used with symbols from +the \fn{msam} and \fn{msbm} fonts, among others. +In some cases, poor man's bold (\cn{pmb}) can be used instead +of \cn{boldsymbol}: +% Can't show example from msam or msbm because this document is +% supposed to be TeXable even if the user doesn't have +% AMSFonts. MJD 5-JUL-1990 +\[\frac{\partial x}{\partial y} +\pmb{\bigg\vert} +\frac{\partial y}{\partial z}\] +\begin{verbatim} +\[\frac{\partial x}{\partial y} +\pmb{\bigg\vert} +\frac{\partial y}{\partial z}\] +\end{verbatim} +So-called ``large operator'' symbols such as $\sum$ and $\prod$ +require an additional command, \cn{mathop}, +to produce proper spacing and limits when \cn{pmb} is used. +For further details see \textit{The \TeX book}. +\[\sum_{\substack{i<B\\\text{$i$ odd}}} +\prod_\kappa \kappa F(r_i)\qquad +\mathop{\pmb{\sum}}_{\substack{i<B\\\text{$i$ odd}}} +\mathop{\pmb{\prod}}_\kappa \kappa(r_i) +\] +\begin{verbatim} +\[\sum_{\substack{i<B\\\text{$i$ odd}}} +\prod_\kappa \kappa F(r_i)\qquad +\mathop{\pmb{\sum}}_{\substack{i<B\\\text{$i$ odd}}} +\mathop{\pmb{\prod}}_\kappa \kappa(r_i) +\] +\end{verbatim} + +\section{Compound symbols and other features} +\label{s:comp} +\subsection{Multiple integral signs} + +\cn{iint}, \cn{iiint}, and \cn{iiiint} give multiple integral signs +with the spacing between them nicely adjusted, in both text and +display style. \cn{idotsint} gives two integral signs with dots +between them. +\begin{gather} +\iint\limits_A f(x,y)\,dx\,dy\qquad\iiint\limits_A +f(x,y,z)\,dx\,dy\,dz\\ +\iiiint\limits_A +f(w,x,y,z)\,dw\,dx\,dy\,dz\qquad\idotsint\limits_A f(x_1,\dots,x_k) +\end{gather} + +\subsection{Over and under arrows} + +Some extra over and under arrow operations are provided in +the \pkg{amsmath} package. (Basic \LaTeX\ provides +\cn{overrightarrow} and \cn{overleftarrow}). +\begin{align*} +\overrightarrow{\psi_\delta(t) E_t h}& +=\underrightarrow{\psi_\delta(t) E_t h}\\ +\overleftarrow{\psi_\delta(t) E_t h}& +=\underleftarrow{\psi_\delta(t) E_t h}\\ +\overleftrightarrow{\psi_\delta(t) E_t h}& +=\underleftrightarrow{\psi_\delta(t) E_t h} +\end{align*} +\begin{verbatim} +\begin{align*} +\overrightarrow{\psi_\delta(t) E_t h}& +=\underrightarrow{\psi_\delta(t) E_t h}\\ +\overleftarrow{\psi_\delta(t) E_t h}& +=\underleftarrow{\psi_\delta(t) E_t h}\\ +\overleftrightarrow{\psi_\delta(t) E_t h}& +=\underleftrightarrow{\psi_\delta(t) E_t h} +\end{align*} +\end{verbatim} +These all scale properly in subscript sizes: +\[\int_{\overrightarrow{AB}} ax\,dx\] +\begin{verbatim} +\[\int_{\overrightarrow{AB}} ax\,dx\] +\end{verbatim} + +\subsection{Dots} + +Normally you need only type \cn{dots} for ellipsis dots in a +math formula. The main exception is when the dots +fall at the end of the formula; then you need to +specify one of \cn{dotsc} (series dots, after a comma), +\cn{dotsb} (binary dots, for binary relations or operators), +\cn{dotsm} (multiplication dots), or \cn{dotsi} (dots after +an integral). For example, the input +\begin{verbatim} +Then we have the series $A_1,A_2,\dotsc$, +the regional sum $A_1+A_2+\dotsb$, +the orthogonal product $A_1A_2\dotsm$, +and the infinite integral +\[\int_{A_1}\int_{A_2}\dotsi\]. +\end{verbatim} +produces +\begin{quotation} +Then we have the series $A_1,A_2,\dotsc$, +the regional sum $A_1+A_2+\dotsb$, +the orthogonal product $A_1A_2\dotsm$, +and the infinite integral +\[\int_{A_1}\int_{A_2}\dotsi\] +\end{quotation} + +\subsection{Accents in math} + +Double accents: +\[\Hat{\Hat{H}}\quad\Check{\Check{C}}\quad +\Tilde{\Tilde{T}}\quad\Acute{\Acute{A}}\quad +\Grave{\Grave{G}}\quad\Dot{\Dot{D}}\quad +\Ddot{\Ddot{D}}\quad\Breve{\Breve{B}}\quad +\Bar{\Bar{B}}\quad\Vec{\Vec{V}}\] +\begin{verbatim} +\[\Hat{\Hat{H}}\quad\Check{\Check{C}}\quad +\Tilde{\Tilde{T}}\quad\Acute{\Acute{A}}\quad +\Grave{\Grave{G}}\quad\Dot{\Dot{D}}\quad +\Ddot{\Ddot{D}}\quad\Breve{\Breve{B}}\quad +\Bar{\Bar{B}}\quad\Vec{\Vec{V}}\] +\end{verbatim} +This double accent operation is complicated +and tends to slow down the processing of a \LaTeX\ file. + + +\subsection{Dot accents} +\cn{dddot} and \cn{ddddot} are available to +produce triple and quadruple dot accents +in addition to the \cn{dot} and \cn{ddot} accents already available +in \LaTeX: +\[\dddot{Q}\qquad\ddddot{R}\] +\begin{verbatim} +\[\dddot{Q}\qquad\ddddot{R}\] +\end{verbatim} + +\subsection{Roots} + +In the \pkg{amsmath} package \cn{leftroot} and \cn{uproot} allow you to adjust +the position of the root index of a radical: +\begin{verbatim} +\sqrt[\leftroot{-2}\uproot{2}\beta]{k} +\end{verbatim} +gives good positioning of the $\beta$: +\[\sqrt[\leftroot{-2}\uproot{2}\beta]{k}\] + +\subsection{Boxed formulas} The command \cn{boxed} puts a box around its +argument, like \cn{fbox} except that the contents are in math mode: +\begin{verbatim} +\boxed{W_t-F\subseteq V(P_i)\subseteq W_t} +\end{verbatim} +\[\boxed{W_t-F\subseteq V(P_i)\subseteq W_t}.\] + +\subsection{Extensible arrows} +\cn{xleftarrow} and \cn{xrightarrow} produce +arrows that extend automatically to accommodate unusually wide +subscripts or superscripts. The text of the subscript or superscript +are given as an optional resp.\@ mandatory argument: +Example: +\[0 \xleftarrow[\zeta]{\alpha} F\times\triangle[n-1] + \xrightarrow{\partial_0\alpha(b)} E^{\partial_0b}\] +\begin{verbatim} +\[0 \xleftarrow[\zeta]{\alpha} F\times\triangle[n-1] + \xrightarrow{\partial_0\alpha(b)} E^{\partial_0b}\] +\end{verbatim} + +\subsection{\cn{overset}, \cn{underset}, and \cn{sideset}} +Examples: +\[\overset{*}{X}\qquad\underset{*}{X}\qquad +\overset{a}{\underset{b}{X}}\] +\begin{verbatim} +\[\overset{*}{X}\qquad\underset{*}{X}\qquad +\overset{a}{\underset{b}{X}}\] +\end{verbatim} + +The command \cn{sideset} is for a rather special +purpose: putting symbols at the subscript and superscript +corners of a large operator symbol such as $\sum$ or $\prod$, +without affecting the placement of limits. +Examples: +\[\sideset{_*^*}{_*^*}\prod_k\qquad +\sideset{}{'}\sum_{0\le i\le m} E_i\beta x +\] +\begin{verbatim} +\[\sideset{_*^*}{_*^*}\prod_k\qquad +\sideset{}{'}\sum_{0\le i\le m} E_i\beta x +\] +\end{verbatim} + +\subsection{The \cn{text} command} +The main use of the command \cn{text} is for words or phrases in a +display: +\[\mathbf{y}=\mathbf{y}'\quad\text{if and only if}\quad +y'_k=\delta_k y_{\tau(k)}\] +\begin{verbatim} +\[\mathbf{y}=\mathbf{y}'\quad\text{if and only if}\quad +y'_k=\delta_k y_{\tau(k)}\] +\end{verbatim} + +\subsection{Operator names} +The more common math functions such as $\log$, $\sin$, and $\lim$ +have predefined control sequences: \verb=\log=, \verb=\sin=, +\verb=\lim=. +The \pkg{amsmath} package provides \cn{DeclareMathOperator} and +\cn{DeclareMathOperator*} +for producing new function names that will have the +same typographical treatment. +Examples: +\[\norm{f}_\infty= +\esssup_{x\in R^n}\abs{f(x)}\] +\begin{verbatim} +\[\norm{f}_\infty= +\esssup_{x\in R^n}\abs{f(x)}\] +\end{verbatim} +\[\meas_1\{u\in R_+^1\colon f^*(u)>\alpha\} +=\meas_n\{x\in R^n\colon \abs{f(x)}\geq\alpha\} +\quad \forall\alpha>0.\] +\begin{verbatim} +\[\meas_1\{u\in R_+^1\colon f^*(u)>\alpha\} +=\meas_n\{x\in R^n\colon \abs{f(x)}\geq\alpha\} +\quad \forall\alpha>0.\] +\end{verbatim} +\cn{esssup} and \cn{meas} would be defined in the document preamble as +\begin{verbatim} +\DeclareMathOperator*{\esssup}{ess\,sup} +\DeclareMathOperator{\meas}{meas} +\end{verbatim} + +The following special operator names are predefined in the \pkg{amsmath} +package: \cn{varlimsup}, \cn{varliminf}, \cn{varinjlim}, and +\cn{varprojlim}. Here's what they look like in use: +\begin{align} +&\varlimsup_{n\rightarrow\infty} + \mathcal{Q}(u_n,u_n-u^{\#})\le0\\ +&\varliminf_{n\rightarrow\infty} + \left\lvert a_{n+1}\right\rvert/\left\lvert a_n\right\rvert=0\\ +&\varinjlim (m_i^\lambda\cdot)^*\le0\\ +&\varprojlim_{p\in S(A)}A_p\le0 +\end{align} +\begin{verbatim} +\begin{align} +&\varlimsup_{n\rightarrow\infty} + \mathcal{Q}(u_n,u_n-u^{\#})\le0\\ +&\varliminf_{n\rightarrow\infty} + \left\lvert a_{n+1}\right\rvert/\left\lvert a_n\right\rvert=0\\ +&\varinjlim (m_i^\lambda\cdot)^*\le0\\ +&\varprojlim_{p\in S(A)}A_p\le0 +\end{align} +\end{verbatim} + +\subsection{\cn{mod} and its relatives} +The commands \cn{mod} and \cn{pod} are variants of +\cn{pmod} preferred by some authors; \cn{mod} omits the parentheses, +whereas \cn{pod} omits the `mod' and retains the parentheses. +Examples: +\begin{align} +x&\equiv y+1\pmod{m^2}\\ +x&\equiv y+1\mod{m^2}\\ +x&\equiv y+1\pod{m^2} +\end{align} +\begin{verbatim} +\begin{align} +x&\equiv y+1\pmod{m^2}\\ +x&\equiv y+1\mod{m^2}\\ +x&\equiv y+1\pod{m^2} +\end{align} +\end{verbatim} + +\subsection{Fractions and related constructions} +\label{fracs} + +The usual notation for binomials is similar to the fraction concept, +so it has a similar command \cn{binom} with two arguments. Example: +\begin{equation} +\begin{split} +\sum_{\gamma\in\Gamma_C} I_\gamma& +=2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}\\ +&\quad+\dots+(-1)^l\binom{k}{l}2^{k-l} ++\dots+(-1)^k\\ +&=(2-1)^k=1 +\end{split} +\end{equation} +\begin{verbatim} +\begin{equation} +\begin{split} +[\sum_{\gamma\in\Gamma_C} I_\gamma& +=2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}\\ +&\quad+\dots+(-1)^l\binom{k}{l}2^{k-l} ++\dots+(-1)^k\\ +&=(2-1)^k=1 +\end{split} +\end{equation} +\end{verbatim} +There are also abbreviations +\begin{verbatim} +\dfrac \dbinom +\tfrac \tbinom +\end{verbatim} +for the commonly needed constructions +\begin{verbatim} +{\displaystyle\frac ... } {\displaystyle\binom ... } +{\textstyle\frac ... } {\textstyle\binom ... } +\end{verbatim} + +The generalized fraction command \cn{genfrac} provides full access to +the six \TeX{} fraction primitives: +\begin{align} +\text{\cn{over}: }&\genfrac{}{}{}{}{n+1}{2}& +\text{\cn{overwithdelims}: }& + \genfrac{\langle}{\rangle}{}{}{n+1}{2}\\ +\text{\cn{atop}: }&\genfrac{}{}{0pt}{}{n+1}{2}& +\text{\cn{atopwithdelims}: }& + \genfrac{(}{)}{0pt}{}{n+1}{2}\\ +\text{\cn{above}: }&\genfrac{}{}{1pt}{}{n+1}{2}& +\text{\cn{abovewithdelims}: }& + \genfrac{[}{]}{1pt}{}{n+1}{2} +\end{align} +\begin{verbatim} +\text{\cn{over}: }&\genfrac{}{}{}{}{n+1}{2}& +\text{\cn{overwithdelims}: }& + \genfrac{\langle}{\rangle}{}{}{n+1}{2}\\ +\text{\cn{atop}: }&\genfrac{}{}{0pt}{}{n+1}{2}& +\text{\cn{atopwithdelims}: }& + \genfrac{(}{)}{0pt}{}{n+1}{2}\\ +\text{\cn{above}: }&\genfrac{}{}{1pt}{}{n+1}{2}& +\text{\cn{abovewithdelims}: }& + \genfrac{[}{]}{1pt}{}{n+1}{2} +\end{verbatim} + +\subsection{Continued fractions} +The continued fraction +\begin{equation} +\cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+\dotsb +}}}}} +\end{equation} +can be obtained by typing +\begin{verbatim} +\cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+ + \cfrac{1}{\sqrt{2}+\dotsb +}}}}} +\end{verbatim} +Left or right placement of any of the numerators is accomplished by using +\cn{cfrac[l]} or \cn{cfrac[r]} instead of \cn{cfrac}. + +\subsection{Smash} + +In \pkg{amsmath} there are optional arguments \verb"t" and \verb"b" for +the plain \TeX\ command \cn{smash}, because sometimes it is advantageous +to be able to `smash' only the top or only the bottom of something while +retaining the natural depth or height. In the formula +$X_j=(1/\sqrt{\smash[b]{\lambda_j}})X_j'$ \cn{smash}\verb=[b]= has been +used to limit the size of the radical symbol. +\begin{verbatim} +$X_j=(1/\sqrt{\smash[b]{\lambda_j}})X_j'$ +\end{verbatim} +Without the use of \cn{smash}\verb=[b]= the formula would have appeared +thus: $X_j=(1/\sqrt{\lambda_j})X_j'$, with the radical extending to +encompass the depth of the subscript $j$. + +\subsection{The `cases' environment} +`Cases' constructions like the following can be produced using +the \env{cases} environment. +\begin{equation} +P_{r-j}= + \begin{cases} + 0& \text{if $r-j$ is odd},\\ + r!\,(-1)^{(r-j)/2}& \text{if $r-j$ is even}. + \end{cases} +\end{equation} +\begin{verbatim} +\begin{equation} P_{r-j}= + \begin{cases} + 0& \text{if $r-j$ is odd},\\ + r!\,(-1)^{(r-j)/2}& \text{if $r-j$ is even}. + \end{cases} +\end{equation} +\end{verbatim} +Notice the use of \cn{text} and the embedded math. + +\subsection{Matrix} + +Here are samples of the matrix environments, +\cn{matrix}, \cn{pmatrix}, \cn{bmatrix}, \cn{Bmatrix}, \cn{vmatrix} +and \cn{Vmatrix}: +\begin{equation} +\begin{matrix} +\vartheta& \varrho\\\varphi& \varpi +\end{matrix}\quad +\begin{pmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{pmatrix}\quad +\begin{bmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{bmatrix}\quad +\begin{Bmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{Bmatrix}\quad +\begin{vmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{vmatrix}\quad +\begin{Vmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{Vmatrix} +\end{equation} +% +\begin{verbatim} +\begin{matrix} +\vartheta& \varrho\\\varphi& \varpi +\end{matrix}\quad +\begin{pmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{pmatrix}\quad +\begin{bmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{bmatrix}\quad +\begin{Bmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{Bmatrix}\quad +\begin{vmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{vmatrix}\quad +\begin{Vmatrix} +\vartheta& \varrho\\\varphi& \varpi +\end{Vmatrix} +\end{verbatim} + +To produce a small matrix suitable for use in text, use the +\env{smallmatrix} environment. +\begin{verbatim} +\begin{math} + \bigl( \begin{smallmatrix} + a&b\\ c&d + \end{smallmatrix} \bigr) +\end{math} +\end{verbatim} +To show +the effect of the matrix on the surrounding lines of +a paragraph, we put it here: \begin{math} + \bigl( \begin{smallmatrix} + a&b\\ c&d + \end{smallmatrix} \bigr) +\end{math} +and follow it with enough text to ensure that there will +be at least one full line below the matrix. + +\cn{hdotsfor}\verb"{"\textit{number}\verb"}" produces a row of dots in a matrix +spanning the given number of columns: +\[W(\Phi)= \begin{Vmatrix} +\dfrac\varphi{(\varphi_1,\varepsilon_1)}&0&\dots&0\\ +\dfrac{\varphi k_{n2}}{(\varphi_2,\varepsilon_1)}& +\dfrac\varphi{(\varphi_2,\varepsilon_2)}&\dots&0\\ +\hdotsfor{5}\\ +\dfrac{\varphi k_{n1}}{(\varphi_n,\varepsilon_1)}& +\dfrac{\varphi k_{n2}}{(\varphi_n,\varepsilon_2)}&\dots& +\dfrac{\varphi k_{n\,n-1}}{(\varphi_n,\varepsilon_{n-1})}& +\dfrac{\varphi}{(\varphi_n,\varepsilon_n)} +\end{Vmatrix}\] +\begin{verbatim} +\[W(\Phi)= \begin{Vmatrix} +\dfrac\varphi{(\varphi_1,\varepsilon_1)}&0&\dots&0\\ +\dfrac{\varphi k_{n2}}{(\varphi_2,\varepsilon_1)}& +\dfrac\varphi{(\varphi_2,\varepsilon_2)}&\dots&0\\ +\hdotsfor{5}\\ +\dfrac{\varphi k_{n1}}{(\varphi_n,\varepsilon_1)}& +\dfrac{\varphi k_{n2}}{(\varphi_n,\varepsilon_2)}&\dots& +\dfrac{\varphi k_{n\,n-1}}{(\varphi_n,\varepsilon_{n-1})}& +\dfrac{\varphi}{(\varphi_n,\varepsilon_n)} +\end{Vmatrix}\] +\end{verbatim} +The spacing of the dots can be varied through use of a square-bracket +option, for example, \verb"\hdotsfor[1.5]{3}". The number in square brackets +will be used as a multiplier; the normal value is 1. + +\subsection{The \cn{substack} command} + +The \cn{substack} command can be used to produce a multiline +subscript or superscript: +for example +\begin{verbatim} +\sum_{\substack{0\le i\le m\\ 0<j<n}} P(i,j) +\end{verbatim} +produces a two-line subscript underneath the sum: +\begin{equation} +\sum_{\substack{0\le i\le m\\ 0<j<n}} P(i,j) +\end{equation} +A slightly more generalized form is the \env{subarray} environment which +allows you to specify that each line should be left-aligned instead of +centered, as here: +\begin{equation} +\sum_{\begin{subarray}{l} + 0\le i\le m\\ 0<j<n + \end{subarray}} + P(i,j) +\end{equation} +\begin{verbatim} +\sum_{\begin{subarray}{l} + 0\le i\le m\\ 0<j<n + \end{subarray}} + P(i,j) +\end{verbatim} + + +\subsection{Big-g-g delimiters} +Here are some big delimiters, first in \cn{normalsize}: +\[\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + \biggr) +\] +\begin{verbatim} +\[\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + \biggr) +\] +\end{verbatim} +and now in \cn{Large} size: +{\Large +\[\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + \biggr) +\]} +\begin{verbatim} +{\Large +\[\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + \biggr) +\]} +\end{verbatim} + +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter + +%% This turns on vertical rules at the right and left margins, to +%% better illustrate the spacing for certain multiple-line equation +%% structures. +\def\@makecol{\ifvoid\footins \setbox\@outputbox\box\@cclv + \else\setbox\@outputbox + \vbox{\boxmaxdepth \maxdepth + \unvbox\@cclv\vskip\skip\footins\footnoterule\unvbox\footins}\fi + \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats + \setbox\@outputbox\hbox{\vrule width\marginrulewidth + \vbox to\@colht{\boxmaxdepth\maxdepth + \@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox + \vskip-\dimen128\@textbottom}% + \vrule width\marginrulewidth}% + \global\maxdepth\@maxdepth} +\newdimen\marginrulewidth +\setlength{\marginrulewidth}{.1pt} +\makeatother + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\appendix +\section{Examples of multiple-line equation structures} +\label{s:eq} + +\textbf{\large Note: Starting on this page, vertical rules are +added at the margins so that the positioning of various display elements +with respect to the margins can be seen more clearly.} + +\subsection{Split} +The \env{split} environment is not an independent environment +but should be used inside something else such as \env{equation} +or \env{align}. + +If there is not enough room for it, the equation number for a +\env{split} will be shifted to the previous line, when equation numbers are +on the left; the number shifts down to the next line when numbers are on +the right. +\begin{equation} +\begin{split} +f_{h,\varepsilon}(x,y) +&=\varepsilon\mathbf{E}_{x,y}\int_0^{t_\varepsilon} +L_{x,y_\varepsilon(\varepsilon u)}\varphi(x)\,du\\ +&= h\int L_{x,z}\varphi(x)\rho_x(dz)\\ +&\quad+h\biggl[\frac{1}{t_\varepsilon}\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + -t_\varepsilon\int L_{x,z}\varphi(x)\rho_x(dz)\biggr)\\ +&\phantom{{=}+h\biggl[}+\frac{1}{t_\varepsilon} + \biggl(\mathbf{E}_{y}\int_0^{t_\varepsilon}L_{x,y^x(s)} + \varphi(x)\,ds -\mathbf{E}_{x,y}\int_0^{t_\varepsilon} + L_{x,y_\varepsilon(\varepsilon s)} + \varphi(x)\,ds\biggr)\biggr]\\ +&=h\wh{L}_x\varphi(x)+h\theta_\varepsilon(x,y), +\end{split} +\end{equation} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{equation} +\begin{split} +f_{h,\varepsilon}(x,y) +&=\varepsilon\mathbf{E}_{x,y}\int_0^{t_\varepsilon} +L_{x,y_\varepsilon(\varepsilon u)}\varphi(x)\,du\\ +&= h\int L_{x,z}\varphi(x)\rho_x(dz)\\ +&\quad+h\biggl[\frac{1}{t_\varepsilon}\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + -t_\varepsilon\int L_{x,z}\varphi(x)\rho_x(dz)\biggr)\\ +&\phantom{{=}+h\biggl[}+\frac{1}{t_\varepsilon} + \biggl(\mathbf{E}_{y}\int_0^{t_\varepsilon}L_{x,y^x(s)} + \varphi(x)\,ds -\mathbf{E}_{x,y}\int_0^{t_\varepsilon} + L_{x,y_\varepsilon(\varepsilon s)} + \varphi(x)\,ds\biggr)\biggr]\\ +&=h\wh{L}_x\varphi(x)+h\theta_\varepsilon(x,y), +\end{split} +\end{equation} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +Unnumbered version: +\begin{equation*} +\begin{split} +f_{h,\varepsilon}(x,y) +&=\varepsilon\mathbf{E}_{x,y}\int_0^{t_\varepsilon} +L_{x,y_\varepsilon(\varepsilon u)}\varphi(x)\,du\\ +&= h\int L_{x,z}\varphi(x)\rho_x(dz)\\ +&\quad+h\biggl[\frac{1}{t_\varepsilon}\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + -t_\varepsilon\int L_{x,z}\varphi(x)\rho_x(dz)\biggr)\\ +&\phantom{{=}+h\biggl[}+\frac{1}{t_\varepsilon} + \biggl(\mathbf{E}_{y}\int_0^{t_\varepsilon}L_{x,y^x(s)} + \varphi(x)\,ds -\mathbf{E}_{x,y}\int_0^{t_\varepsilon} + L_{x,y_\varepsilon(\varepsilon s)} + \varphi(x)\,ds\biggr)\biggr]\\ +&=h\wh{L}_x\varphi(x)+h\theta_\varepsilon(x,y), +\end{split} +\end{equation*} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{equation*} +\begin{split} +f_{h,\varepsilon}(x,y) +&=\varepsilon\mathbf{E}_{x,y}\int_0^{t_\varepsilon} +L_{x,y_\varepsilon(\varepsilon u)}\varphi(x)\,du\\ +&= h\int L_{x,z}\varphi(x)\rho_x(dz)\\ +&\quad+h\biggl[\frac{1}{t_\varepsilon}\biggl(\mathbf{E}_{y} + \int_0^{t_\varepsilon}L_{x,y^x(s)}\varphi(x)\,ds + -t_\varepsilon\int L_{x,z}\varphi(x)\rho_x(dz)\biggr)\\ +&\phantom{{=}+h\biggl[}+\frac{1}{t_\varepsilon} + \biggl(\mathbf{E}_{y}\int_0^{t_\varepsilon}L_{x,y^x(s)} + \varphi(x)\,ds -\mathbf{E}_{x,y}\int_0^{t_\varepsilon} + L_{x,y_\varepsilon(\varepsilon s)} + \varphi(x)\,ds\biggr)\biggr]\\ +&=h\wh{L}_x\varphi(x)+h\theta_\varepsilon(x,y), +\end{split} +\end{equation*} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +If the option \env{centertags} is included in the options +list of the \pkg{amsmath} package, +the equation numbers for \env{split} environments will be +centered vertically on the height +of the \env{split}: +{\makeatletter\ctagsplit@true +\begin{equation} +\begin{split} + \abs{I_2}&=\left\lvert \int_{0}^T \psi(t)\left\{u(a,t)-\int_{\gamma(t)}^a + \frac{d\theta}{k(\theta,t)} + \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi\right\}dt\right\rvert\\ +&\le C_6\left\lvert \left\lvert f\int_\Omega\left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split} +\end{equation}}% +Some text after to test the below-display spacing. + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +Use of \env{split} within \env{align}: +{\delimiterfactor750 +\begin{align} +\begin{split}\abs{I_1} + &=\left\lvert \int_\Omega gRu\,d\Omega\right\rvert\\ +&\le C_3\left[\int_\Omega\left(\int_{a}^x + g(\xi,t)\,d\xi\right)^2d\Omega\right]^{1/2}\\ +&\quad\times \left[\int_\Omega\left\{u^2_x+\frac{1}{k} + \left(\int_{a}^x cu_t\,d\xi\right)^2\right\} + c\Omega\right]^{1/2}\\ +&\le C_4\left\lvert \left\lvert f\left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split}\label{eq:A}\\ +\begin{split}\abs{I_2}&=\left\lvert \int_{0}^T \psi(t)\left\{u(a,t) + -\int_{\gamma(t)}^a\frac{d\theta}{k(\theta,t)} + \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi\right\}dt\right\rvert\\ +&\le C_6\left\lvert \left\lvert f\int_\Omega + \left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split} +\end{align}}% +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{align} +\begin{split}\abs{I_1} + &=\left\lvert \int_\Omega gRu\,d\Omega\right\rvert\\ +&\le C_3\left[\int_\Omega\left(\int_{a}^x + g(\xi,t)\,d\xi\right)^2d\Omega\right]^{1/2}\\ +&\quad\times \left[\int_\Omega\left\{u^2_x+\frac{1}{k} + \left(\int_{a}^x cu_t\,d\xi\right)^2\right\} + c\Omega\right]^{1/2}\\ +&\le C_4\left\lvert \left\lvert f\left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split}\label{eq:A}\\ +\begin{split}\abs{I_2}&=\left\lvert \int_{0}^T \psi(t)\left\{u(a,t) + -\int_{\gamma(t)}^a\frac{d\theta}{k(\theta,t)} + \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi\right\}dt\right\rvert\\ +&\le C_6\left\lvert \left\lvert f\int_\Omega + \left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split} +\end{align} +\end{verbatim} + +%%%%%%%%%%%%%%%%%% + +\newpage +Unnumbered \env{align}, with a number on the second \env{split}: +\begin{align*} +\begin{split}\abs{I_1}&=\left\lvert \int_\Omega gRu\,d\Omega\right\rvert\\ + &\le C_3\left[\int_\Omega\left(\int_{a}^x + g(\xi,t)\,d\xi\right)^2d\Omega\right]^{1/2}\\ +&\phantom{=}\times \left[\int_\Omega\left\{u^2_x+\frac{1}{k} + \left(\int_{a}^x cu_t\,d\xi\right)^2\right\} + c\Omega\right]^{1/2}\\ +&\le C_4\left\lvert \left\lvert f\left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split}\\ +\begin{split}\abs{I_2}&=\left\lvert \int_{0}^T \psi(t)\left\{u(a,t) + -\int_{\gamma(t)}^a\frac{d\theta}{k(\theta,t)} + \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi\right\}dt\right\rvert\\ +&\le C_6\left\lvert \left\lvert f\int_\Omega + \left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split}\tag{\theequation$'$} +\end{align*} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{align*} +\begin{split}\abs{I_1}&=\left\lvert \int_\Omega gRu\,d\Omega\right\rvert\\ + &\le C_3\left[\int_\Omega\left(\int_{a}^x + g(\xi,t)\,d\xi\right)^2d\Omega\right]^{1/2}\\ +&\phantom{=}\times \left[\int_\Omega\left\{u^2_x+\frac{1}{k} + \left(\int_{a}^x cu_t\,d\xi\right)^2\right\} + c\Omega\right]^{1/2}\\ +&\le C_4\left\lvert \left\lvert f\left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split}\\ +\begin{split}\abs{I_2}&=\left\lvert \int_{0}^T \psi(t)\left\{u(a,t) + -\int_{\gamma(t)}^a\frac{d\theta}{k(\theta,t)} + \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi\right\}dt\right\rvert\\ +&\le C_6\left\lvert \left\lvert f\int_\Omega + \left\lvert \wt{S}^{-1,0}_{a,-} + W_2(\Omega,\Gamma_l)\right\rvert\right\rvert + \left\lvert \abs{u}\overset{\circ}\to W_2^{\wt{A}} + (\Omega;\Gamma_r,T)\right\rvert\right\rvert. +\end{split}\tag{\theequation$'$} +\end{align*} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +\subsection{Multline} +Numbered version: +\begin{multline}\label{eq:E} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline} +To test the use of \verb=\label= and +\verb=\ref=, we refer to the number of this +equation here: (\ref{eq:E}). + +\begin{verbatim} +\begin{multline}\label{eq:E} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Unnumbered version: +\begin{multline*} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline*} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{multline*} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline*} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\iffalse % bugfix needed, error message "Multiple \tag" + % [mjd,24-Jan-1995] +\newpage +And now an ``unnumbered'' version numbered with a literal tag: +\begin{multline*}\tag*{[a]} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline*} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{multline*}\tag*{[a]} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline*} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The same display with \verb=\multlinegap= set to zero. +Notice that the space on the left in +the first line does not change, because of the equation number, while +the second line is pushed over to the right margin. +{\setlength{\multlinegap}{0pt} +\begin{multline*}\tag*{[a]} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline*}}% +Some text after to test the below-display spacing. + +\begin{verbatim} +{\setlength{\multlinegap}{0pt} +\begin{multline*}\tag*{[a]} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy \\ + =\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy +\end{multline*}} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% +\fi % matches \iffalse above [mjd,24-Jan-1995] + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +\subsection{Gather} +Numbered version with \verb;\notag; on the second line: +\begin{gather} +D(a,r)\equiv\{z\in\mathbf{C}\colon \abs{z-a}<r\},\\ +\seg(a,r)\equiv\{z\in\mathbf{C}\colon +\Im z= \Im a,\ \abs{z-a}<r\},\notag\\ +c(e,\theta,r)\equiv\{(x,y)\in\mathbf{C} +\colon \abs{x-e}<y\tan\theta,\ 0<y<r\},\\ +C(E,\theta,r)\equiv\bigcup_{e\in E}c(e,\theta,r). +\end{gather} +\begin{verbatim} +\begin{gather} +D(a,r)\equiv\{z\in\mathbf{C}\colon \abs{z-a}<r\},\\ +\seg(a,r)\equiv\{z\in\mathbf{C}\colon +\Im z= \Im a,\ \abs{z-a}<r\},\notag\\ +c(e,\theta,r)\equiv\{(x,y)\in\mathbf{C} +\colon \abs{x-e}<y\tan\theta,\ 0<y<r\},\\ +C(E,\theta,r)\equiv\bigcup_{e\in E}c(e,\theta,r). +\end{gather} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Unnumbered version. +\begin{gather*} +D(a,r)\equiv\{z\in\mathbf{C}\colon \abs{z-a}<r\},\\ +\seg (a,r)\equiv\{z\in\mathbf{C}\colon +\Im z= \Im a,\ \abs{z-a}<r\},\\ +c(e,\theta,r)\equiv\{(x,y)\in\mathbf{C} + \colon \abs{x-e}<y\tan\theta,\ 0<y<r\},\\ +C(E,\theta,r)\equiv\bigcup_{e\in E}c(e,\theta,r). +\end{gather*} +Some text after to test the below-display spacing. +\begin{verbatim} +\begin{gather*} +D(a,r)\equiv\{z\in\mathbf{C}\colon \abs{z-a}<r\},\\ +\seg (a,r)\equiv\{z\in\mathbf{C}\colon +\Im z= \Im a,\ \abs{z-a}<r\},\\ +c(e,\theta,r)\equiv\{(x,y)\in\mathbf{C} + \colon \abs{x-e}<y\tan\theta,\ 0<y<r\},\\ +C(E,\theta,r)\equiv\bigcup_{e\in E}c(e,\theta,r). +\end{gather*} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +\subsection{Align} +Numbered version: +\begin{align} +\gamma_x(t)&=(\cos tu+\sin tx,v),\\ +\gamma_y(t)&=(u,\cos tv+\sin ty),\\ +\gamma_z(t)&=\left(\cos tu+\frac\alpha\beta\sin tv, + -\frac\beta\alpha\sin tu+\cos tv\right). +\end{align} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{align} +\gamma_x(t)&=(\cos tu+\sin tx,v),\\ +\gamma_y(t)&=(u,\cos tv+\sin ty),\\ +\gamma_z(t)&=\left(\cos tu+\frac\alpha\beta\sin tv, + -\frac\beta\alpha\sin tu+\cos tv\right). +\end{align} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Unnumbered version: +\begin{align*} +\gamma_x(t)&=(\cos tu+\sin tx,v),\\ +\gamma_y(t)&=(u,\cos tv+\sin ty),\\ +\gamma_z(t)&=\left(\cos tu+\frac\alpha\beta\sin tv, + -\frac\beta\alpha\sin tu+\cos tv\right). +\end{align*} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{align*} +\gamma_x(t)&=(\cos tu+\sin tx,v),\\ +\gamma_y(t)&=(u,\cos tv+\sin ty),\\ +\gamma_z(t)&=\left(\cos tu+\frac\alpha\beta\sin tv, + -\frac\beta\alpha\sin tu+\cos tv\right). +\end{align*} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +A variation: +\begin{align} +x& =y && \text {by (\ref{eq:C})}\\ +x'& = y' && \text {by (\ref{eq:D})}\\ +x+x' & = y+y' && \text {by Axiom 1.} +\end{align} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{align} +x& =y && \text {by (\ref{eq:C})}\\ +x'& = y' && \text {by (\ref{eq:D})}\\ +x+x' & = y+y' && \text {by Axiom 1.} +\end{align} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +\subsection{Align and split within gather} +When using the \env{align} environment within the \env{gather} +environment, one or the other, or both, should be unnumbered (using the +\verb"*" form); numbering both the outer and inner environment would +cause a conflict. + +Automatically numbered \env{gather} with \env{split} and \env{align*}: +\begin{gather} +\begin{split} \varphi(x,z) +&=z-\gamma_{10}x-\gamma_{mn}x^mz^n\\ +&=z-Mr^{-1}x-Mr^{-(m+n)}x^mz^n +\end{split}\\[6pt] +\begin{align*} +\zeta^0 &=(\xi^0)^2,\\ +\zeta^1 &=\xi^0\xi^1,\\ +\zeta^2 &=(\xi^1)^2, +\end{align*} +\end{gather} +Here the \env{split} environment gets a number from the outer +\env{gather} environment; numbers for individual lines of the +\env{align*} are suppressed because of the star. + +\begin{verbatim} +\begin{gather} +\begin{split} \varphi(x,z) +&=z-\gamma_{10}x-\gamma_{mn}x^mz^n\\ +&=z-Mr^{-1}x-Mr^{-(m+n)}x^mz^n +\end{split}\\[6pt] +\begin{align*} +\zeta^0 &=(\xi^0)^2,\\ +\zeta^1 &=\xi^0\xi^1,\\ +\zeta^2 &=(\xi^1)^2, +\end{align*} +\end{gather} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The \verb"*"-ed form of \env{gather} with the non-\verb"*"-ed form of +\env{align}. +\begin{gather*} +\begin{split} \varphi(x,z) +&=z-\gamma_{10}x-\gamma_{mn}x^mz^n\\ +&=z-Mr^{-1}x-Mr^{-(m+n)}x^mz^n +\end{split}\\[6pt] +\begin{align} \zeta^0&=(\xi^0)^2,\\ +\zeta^1 &=\xi^0\xi^1,\\ +\zeta^2 &=(\xi^1)^2, +\end{align} +\end{gather*} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{gather*} +\begin{split} \varphi(x,z) +&=z-\gamma_{10}x-\gamma_{mn}x^mz^n\\ +&=z-Mr^{-1}x-Mr^{-(m+n)}x^mz^n +\end{split}\\[6pt] +\begin{align} \zeta^0&=(\xi^0)^2,\\ +\zeta^1 &=\xi^0\xi^1,\\ +\zeta^2 &=(\xi^1)^2, +\end{align} +\end{gather*} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +\subsection{Alignat} +Numbered version: +\begin{alignat}{3} +V_i & =v_i - q_i v_j, & \qquad X_i & = x_i - q_i x_j, + & \qquad U_i & = u_i, + \qquad \text{for $i\ne j$;}\label{eq:B}\\ +V_j & = v_j, & \qquad X_j & = x_j, + & \qquad U_j & u_j + \sum_{i\ne j} q_i u_i. +\end{alignat} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{alignat}{3} +V_i & =v_i - q_i v_j, & \qquad X_i & = x_i - q_i x_j, + & \qquad U_i & = u_i, + \qquad \text{for $i\ne j$;}\label{eq:B}\\ +V_j & = v_j, & \qquad X_j & = x_j, + & \qquad U_j & u_j + \sum_{i\ne j} q_i u_i. +\end{alignat} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Unnumbered version: +\begin{alignat*}3 +V_i & =v_i - q_i v_j, & \qquad X_i & = x_i - q_i x_j, + & \qquad U_i & = u_i, + \qquad \text{for $i\ne j$;} \\ +V_j & = v_j, & \qquad X_j & = x_j, + & \qquad U_j & u_j + \sum_{i\ne j} q_i u_i. +\end{alignat*} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{alignat*}3 +V_i & =v_i - q_i v_j, & \qquad X_i & = x_i - q_i x_j, + & \qquad U_i & = u_i, + \qquad \text{for $i\ne j$;} \\ +V_j & = v_j, & \qquad X_j & = x_j, + & \qquad U_j & u_j + \sum_{i\ne j} q_i u_i. +\end{alignat*} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +The most common use for \env{alignat} is for things like +\begin{alignat}{2} +x& =y && \qquad \text {by (\ref{eq:A})}\label{eq:C}\\ +x'& = y' && \qquad \text {by (\ref{eq:B})}\label{eq:D}\\ +x+x' & = y+y' && \qquad \text {by Axiom 1.} +\end{alignat} +Some text after to test the below-display spacing. + +\begin{verbatim} +\begin{alignat}{2} +x& =y && \qquad \text {by (\ref{eq:A})}\label{eq:C}\\ +x'& = y' && \qquad \text {by (\ref{eq:B})}\label{eq:D}\\ +x+x' & = y+y' && \qquad \text {by Axiom 1.} +\end{alignat} +\end{verbatim} +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newpage +\setlength{\marginrulewidth}{0pt} + +\begin{thebibliography}{10} + +\bibitem{dihe:newdir} +W.~Diffie and E.~Hellman, \emph{New directions in cryptography}, IEEE +Transactions on Information Theory \textbf{22} (1976), no.~5, 644--654. + +\bibitem{fre:cichon} +D.~H. Fremlin, \emph{Cichon's diagram}, 1983/1984, presented at the +S{\'e}minaire Initiation {\`a} l'Analyse, G. Choquet, M. Rogalski, J. +Saint Raymond, at the Universit{\'e} Pierre et Marie Curie, Paris, 23e +ann{\'e}e. + +\bibitem{gouja:lagrmeth} +I.~P. Goulden and D.~M. Jackson, \emph{The enumeration of directed +closed {E}uler trails and directed {H}amiltonian circuits by +{L}angrangian methods}, European J. Combin. \textbf{2} (1981), 131--212. + +\bibitem{hapa:graphenum} +F.~Harary and E.~M. Palmer, \emph{Graphical enumeration}, Academic +Press, 1973. + +\bibitem{imlelu:oneway} +R.~Impagliazzo, L.~Levin, and M.~Luby, \emph{Pseudo-random generation +from one-way functions}, Proc. 21st STOC (1989), ACM, New York, +pp.~12--24. + +\bibitem{komiyo:unipfunc} +M.~Kojima, S.~Mizuno, and A.~Yoshise, \emph{A new continuation method +for complementarity problems with uniform p-functions}, Tech. Report +B-194, Tokyo Inst. of Technology, Tokyo, 1987, Dept. of Information +Sciences. + +\bibitem{komiyo:lincomp} +\bysame, \emph{A polynomial-time algorithm for a class of linear +complementarity problems}, Tech. Report B-193, Tokyo Inst. of +Technology, Tokyo, 1987, Dept. of Information Sciences. + +\bibitem{liuchow:formalsum} +C.~J. Liu and Yutze Chow, \emph{On operator and formal sum methods for +graph enumeration problems}, SIAM J. Algorithms Discrete Methods +\textbf{5} (1984), 384--438. + +\bibitem{mami:matrixth} +M.~Marcus and H.~Minc, \emph{A survey of matrix theory and matrix +inequalities}, Complementary Series in Math. \textbf{14} (1964), 21--48. + +\bibitem{miyoki:lincomp} +S.~Mizuno, A.~Yoshise, and T.~Kikuchi, \emph{Practical polynomial time +algorithms for linear complementarity problems}, Tech. Report~13, Tokyo +Inst. of Technology, Tokyo, April 1988, Dept. of Industrial Engineering +and Management. + +\bibitem{moad:quadpro} +R.~D. Monteiro and I.~Adler, \emph{Interior path following primal-dual +algorithms, part {II}: Quadratic programming}, August 1987, Working +paper, Dept. of Industrial Engineering and Operations Research. + +\bibitem{ste:sint} +E.~M. Stein, \emph{Singular integrals and differentiability properties +of functions}, Princeton Univ. Press, Princeton, N.J., 1970. + +\bibitem{ye:intalg} +Y.~Ye, \emph{Interior algorithms for linear, quadratic and linearly +constrained convex programming}, Ph.D. thesis, Stanford Univ., Palo +Alto, Calif., July 1987, Dept. of Engineering--Economic Systems, +unpublished. + +\end{thebibliography} + +\end{document} +\endinput diff --git a/Master/texmf-dist/tex/latex/amsmath/amsbsy.sty b/Master/texmf-dist/tex/latex/amsmath/amsbsy.sty new file mode 100644 index 00000000000..0e64d1b2e28 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amsbsy.sty @@ -0,0 +1,98 @@ +%% +%% This is file `amsbsy.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amsbsy.dtx +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsbsy.dtx", +%%% version = "1.2d", +%%% date = "1999/11/29", +%%% time = "14:26:42 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "08988 251 1238 9625", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, bold symbol, pmb", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that provides a command +%%% for producing bold math symbols when appropriate +%%% fonts exist, and a `poor man's bold' command that +%%% can be applied when no appropriate bold font +%%% is available.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amsbsy}[1999/11/29 v1.2d] +\RequirePackage{amsgen} +\DeclareRobustCommand{\boldsymbol}[1]{% + \begingroup + \let\@nomath\@gobble \mathversion{bold}% + \math@atom{#1}{% + \mathchoice% + {\hbox{$\m@th\displaystyle#1$}}% + {\hbox{$\m@th\textstyle#1$}}% + {\hbox{$\m@th\scriptstyle#1$}}% + {\hbox{$\m@th\scriptscriptstyle#1$}}}% + \endgroup} +\def\math@atom#1#2{% + \binrel@{#1}\binrel@@{#2}} +\DeclareRobustCommand{\pmb}{% + \ifmmode\else \expandafter\pmb@@\fi\mathpalette\pmb@} +\def\pmb@@#1#2#3{\leavevmode\setboxz@h{#3}% + \dimen@-\wdz@ + \kern-.5\ex@\copy\z@ + \kern\dimen@\kern.25\ex@\raise.4\ex@\copy\z@ + \kern\dimen@\kern.25\ex@\box\z@ +} +\newdimen\pmbraise@ +\def\pmb@#1#2{\setbox8\hbox{$\m@th#1{#2}$}% + \setboxz@h{$\m@th#1\mkern.5mu$}\pmbraise@\wdz@ + \binrel@{#2}% + \dimen@-\wd8 % + \binrel@@{% + \mkern-.8mu\copy8 % + \kern\dimen@\mkern.4mu\raise\pmbraise@\copy8 % + \kern\dimen@\mkern.4mu\box8 }% +} +\def\binrel@#1{\begingroup + \setboxz@h{\thinmuskip0mu + \medmuskip\m@ne mu\thickmuskip\@ne mu + \setbox\tw@\hbox{$#1\m@th$}\kern-\wd\tw@ + ${}#1{}\m@th$}% + \edef\@tempa{\endgroup\let\noexpand\binrel@@ + \ifdim\wdz@<\z@ \mathbin + \else\ifdim\wdz@>\z@ \mathrel + \else \relax\fi\fi}% + \@tempa +} +\let\binrel@@\relax +\endinput +%% +%% End of file `amsbsy.sty'. diff --git a/Master/texmf-dist/tex/latex/amsmath/amscd.sty b/Master/texmf-dist/tex/latex/amsmath/amscd.sty new file mode 100644 index 00000000000..56a4e958001 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amscd.sty @@ -0,0 +1,171 @@ +%% +%% This is file `amscd.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amscd.dtx +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amscd.dtx", +%%% version = "2.0", +%%% date = "1999/11/29", +%%% time = "14:30:07 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "07428 333 1152 12117", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, commutative diagram", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that adapts the +%%% commutative diagram macros of AMS-\TeX{} for +%%% use in \LaTeX{}", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amscd}[1999/11/29 v1.2d] +\RequirePackage{amsgen} +\@ifundefined{math@cr}{% + \def\math@cr{{\ifnum0=`}\fi + \@ifstar{\global\@eqpen\@M\math@cr@}% + {\global\@eqpen\interdisplaylinepenalty \math@cr@}} + \def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}} + \def\math@cr@@[#1]{\ifnum0=`{\fi}\math@cr@@@ + \noalign{\vskip#1\relax}} + \def\restore@math@cr{\def\math@cr@@@{\cr}} +}{} +\restore@math@cr +\@ifundefined{rightarrowfill@}{ + \def\rightarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} + \def\leftarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} + \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +}{} +\def\atdef@#1{\expandafter\def\csname\space @\string#1\endcsname} +\@ifundefined{Iat}{% + \DeclareRobustCommand{\Iat}{\FN@\at@} +}{} +\begingroup \catcode`\@=\active +\csname if\string @compatibility\endcsname +\else \fam=\mathcode`\@ + \xdef @{\mathchar\number\fam\space } +\fi +\gdef\CDat{\let @=\Iat} +\endgroup +\mathcode`\@="8000 % make @ pseudo-active in math +\def\at@{\let\next@\at@@ + \ifcat\noexpand\next a\else + \ifcat\noexpand\next0\else + \ifcat\noexpand\next\relax\else + \let\next@\at@@@\fi\fi\fi\next@} +\def\at@@#1{\expandafter + \ifx\csname\space @\string#1\endcsname\relax + \DN@{\at@@@#1}% + \else + \DN@{\csname\space @\string#1\endcsname}% + \fi\next@}% +\@ifundefined{default@tag}{% + \def\default@tag{% + \def\tag{\PackageError{amscd}{\protect\tag\space not allowed + here}\@eha}}% +}{}% +\@ifundefined{at@@@}{% + \def\at@@@{\PackageError{amscd}{\Invalid@@ @}{\the\athelp@}\char64\relax} +}{} +\@ifundefined{athelp@}{\csname newhelp\endcsname\athelp@ +{Only certain combinations beginning with @ make sense to me.^^J% +I'll assume you wanted @@ for a printed @.}}{} +\@ifundefined{minaw@}{\newdimen\minaw@}{} +\@ifundefined{bigaw@}{\newdimen\bigaw@}{} +\minaw@11.111pt +\newdimen\minCDarrowwidth +\minCDarrowwidth2.5pc +\newif\ifCD@ +\let\ampersand@\relax +\newenvironment{CD}{% + \CDat + \bgroup\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi + \CD@true\vcenter\bgroup\let\\\math@cr\restore@math@cr\default@tag + \tabskip\z@skip\baselineskip20\ex@ + \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup + &\hfill$\m@th##$\hfill\crcr +}{% + \crcr\egroup\egroup\egroup +} +\def\CD@check#1#2{\ifCD@\DN@{#2}\else + \DN@{\PackageError{amscd}{@\protect#1 not + allowed outside of the CD environment}\@eha}% + \fi\next@} +\atdef@>#1>#2>{\ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;{#1}\;\;$}% + \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;{#2}\;\;$}% + \ifdim\wd\@ne>\bigaw@\global\bigaw@\wd\@ne\fi}% + \ifCD@\enskip\fi + \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +\atdef@<#1<#2<{\ampersand@ + \ifCD@ \global\bigaw@\minCDarrowwidth \else \global\bigaw@\minaw@ \fi + \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \ifCD@\enskip\fi + \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% + \ifCD@\enskip\fi \ampersand@} +\begingroup \catcode`\~=\active \lccode`\~=`\@ +\lowercase{% + \global\atdef@)#1)#2){~>#1>#2>} + \global\atdef@(#1(#2({~<#1<#2<} +}% end lowercase +\endgroup +\atdef@ A#1A#2A{\CD@check{A..A..A}{\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$}\Big\uparrow + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +\atdef@ V#1V#2V{\CD@check{V..V..V}{\llap{$\m@th\vcenter{\hbox + {$\scriptstyle#1$}}$}\Big\downarrow + \rlap{$\m@th\vcenter{\hbox{$\scriptstyle#2$}}$}&&}} +\atdef@={\CD@check={&\enskip\mathrel + {\vbox{\hrule\@width\minCDarrowwidth\vskip2\ex@\hrule\@width + \minCDarrowwidth}}\enskip&}} +\atdef@|{\CD@check|{\Big\Vert&&}} +\atdef@\vert{\CD@check\vert{\Big\Vert&&}} +\atdef@.{\CD@check.{&&}} +\endinput +%% +%% End of file `amscd.sty'. diff --git a/Master/texmf-dist/tex/latex/amsmath/amsgen.sty b/Master/texmf-dist/tex/latex/amsmath/amsgen.sty new file mode 100644 index 00000000000..9d39357a496 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amsgen.sty @@ -0,0 +1,160 @@ +%% +%% This is file `amsgen.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amsgen.dtx +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsgen.dtx", +%%% version = "2.0", +%%% date = "1999/11/30", +%%% time = "12:33:33 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "07569 396 1613 14368", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, amslatex, ams-latex", +%%% supported = "yes", +%%% abstract = "This is part of the AMS-\LaTeX{} distribution. +%%% It contains some general internal macros shared +%%% by several different files in AMS-\LaTeX{}.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesFile{amsgen.sty}[1999/11/30 v2.0] +\providecommand{\@saveprimitive}[2]{\begingroup\escapechar`\\\relax + \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}% + \ifx\@tempa\@tempb \global\let#2#1% + \else + \edef\@tempb{\meaning#2}% + \ifx\@tempa\@tempb + \else + \@latex@error{Unable to properly define \string#2; primitive + \noexpand#1no longer primitive}\@eha + \fi + \fi + \endgroup} +\let\@xp=\expandafter +\let\@nx=\noexpand +\newtoks\@emptytoks +\def\@oparg#1[#2]{\@ifnextchar[{#1}{#1[#2]}} +\long\def\@ifempty#1{\@xifempty#1@@..\@nil} +\long\def\@xifempty#1#2@#3#4#5\@nil{% + \ifx#3#4\@xp\@firstoftwo\else\@xp\@secondoftwo\fi} +\long\def\@ifnotempty#1{\@ifempty{#1}{}} +\def\FN@{\futurelet\@let@token} +\def\DN@{\def\next@} +\def\RIfM@{\relax\ifmmode} +\def\setboxz@h{\setbox\z@\hbox} +\def\wdz@{\wd\z@} +\def\boxz@{\box\z@} +\def\relaxnext@{\let\@let@token\relax} +\long\def\new@ifnextchar#1#2#3{% + \let\reserved@d= #1% + \def\reserved@a{#2}\def\reserved@b{#3}% + \futurelet\@let@token\new@ifnch +} +\def\new@ifnch{% + \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi + \reserved@b +} +\def\@ifstar#1#2{\new@ifnextchar *{\def\reserved@a*{#1}\reserved@a}{#2}} +\@ifundefined{every@math@size}{% +\let\every@math@size=\every@size +\def\glb@settings{% + \expandafter\ifx\csname S@\f@size\endcsname\relax + \calculate@math@sizes + \fi + \csname S@\f@size\endcsname + \ifmath@fonts + \begingroup + \escapechar\m@ne + \csname mv@\math@version \endcsname + \globaldefs\@ne + \let \glb@currsize \f@size + \math@fonts + \endgroup + \the\every@math@size + \else + \fi +} +\def\set@fontsize#1#2#3{% + \@defaultunits\@tempdimb#2pt\relax\@nnil + \edef\f@size{\strip@pt\@tempdimb}% + \@defaultunits\@tempskipa#3pt\relax\@nnil + \edef\f@baselineskip{\the\@tempskipa}% + \edef\f@linespread{#1}% + \let\baselinestretch\f@linespread + \def\size@update{% + \baselineskip\f@baselineskip\relax + \baselineskip\f@linespread\baselineskip + \normalbaselineskip\baselineskip + \setbox\strutbox\hbox{% + \vrule\@height.7\baselineskip + \@depth.3\baselineskip + \@width\z@}% +%%% \the\every@size + \let\size@update\relax}% + } +}{}% end \@ifundefined test +\newdimen\ex@ +\addto@hook\every@math@size{\compute@ex@} +\def\compute@ex@{% + \begingroup + \dimen@-\f@size\p@ + \ifdim\dimen@<-20\p@ + \global\ex@ 1.5\p@ + \else + \advance\dimen@10\p@ \multiply\dimen@\tw@ + \edef\@tempa{\ifdim\dimen@>\z@ -\fi}% + \dimen@ \ifdim\dimen@<\z@ -\fi \dimen@ + \advance\dimen@-\@m sp % fudge factor + \vfuzz\p@ + \def\do{\ifdim\dimen@>\z@ + \vfuzz=.97\vfuzz + \advance\dimen@ -\p@ + \@xp\do \fi}% + \do + \dimen@\p@ \advance\dimen@-\vfuzz + \global\ex@\p@ + \global\advance\ex@ \@tempa\dimen@ + \fi + \endgroup +} +\def\@addpunct#1{\ifnum\spacefactor>\@m \else#1\fi} +\def\frenchspacing{\sfcode`\.1006\sfcode`\?1005\sfcode`\!1004% + \sfcode`\:1003\sfcode`\;1002\sfcode`\,1001 } +\def\nomath@env{\@amsmath@err{% + \string\begin{\@currenvir} allowed only in paragraph mode% +}\@ehb% "You've lost some text" +} +\def\Invalid@@{Invalid use of \string} +\endinput +%% +%% End of file `amsgen.sty'. diff --git a/Master/texmf-dist/tex/latex/amsmath/amsmath.sty b/Master/texmf-dist/tex/latex/amsmath/amsmath.sty new file mode 100644 index 00000000000..8d22f7aeb0f --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amsmath.sty @@ -0,0 +1,2670 @@ +%% +%% This is file `amsmath.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amsmath.dtx +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsmath.dtx", +%%% version = "2.13", +%%% date = "2000/07/18", +%%% time = "08:16:41 EDT", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 2000 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Publications Technical Group, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "38084 5829 21569 202795", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, amslatex, math, amsmath", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that provides a variety of +%%% extra mathematical features, largely derived from +%%% AMS-\TeX{}.", +%%% docstring = "The checksum field above contains a CRC-16 checksum +%%% as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of +%%% lines, words, and characters. This is produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must be December 1994 or later +\ProvidesPackage{amsmath}[2000/07/18 v2.13 AMS math features] +\edef\@temp{\catcode 96=\number\catcode 96 } +\catcode\string `\`=12 +\def\do#1{\catcode\number`#1=\number\catcode`#1} +\edef\@temp{% + \noexpand\AtEndOfPackage{% + \@temp + \do\"\do\'\do\(\do\)\do\*\do\+\do\,\do\-\do\.% + \do\/\do\<\do\=\do\>\do\[\do\]\do\^\do\_\relax + }% +} +\@temp +\def\do#1{\catcode\number`#1=12 } +\do\"\do\'\do\(\do\)\do\*\do\+\do\,\do\-\do\. +\do\/\do\<\do\=\do\>\do\[\do\] +\catcode`\^=7 \catcode`\_=8 +\DeclareOption{intlimits}{\let\ilimits@\displaylimits} +\DeclareOption{nointlimits}{\let\ilimits@\nolimits} +\DeclareOption{sumlimits}{\let\slimits@\displaylimits} +\DeclareOption{nosumlimits}{\let\slimits@\nolimits} +\DeclareOption{namelimits}{\PassOptionsToPackage{namelimits}{amsopn}} +\DeclareOption{nonamelimits}{% + \PassOptionsToPackage{nonamelimits}{amsopn}} +\newif\ifctagsplit@ +\newif\iftagsleft@ +\DeclareOption{leqno}{\tagsleft@true} +\DeclareOption{reqno}{\tagsleft@false} +\DeclareOption{centertags}{\ctagsplit@true} +\DeclareOption{tbtags}{\ctagsplit@false} +\DeclareOption{cmex10}{% + \ifnum\cmex@opt=\@ne \def\cmex@opt{0}% + \else \def\cmex@opt{10}\fi +} +\@ifundefined{cmex@opt}{\def\cmex@opt{7}}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\if@fleqn +\newskip\@mathmargin +\@mathmargin\@centering +\DeclareOption{fleqn}{% + \@fleqntrue + \@mathmargin = -1sp + \let\mathindent=\@mathmargin + \AtBeginDocument{% + \ifdim\@mathmargin= -1sp + \@mathmargin\leftmargini minus\leftmargini + \fi + }% +} +\DeclareOption{?}{} +\ExecuteOptions{nointlimits,sumlimits,namelimits,centertags} +\ProcessOptions\par +\@ifpackagewith{amsmath}{?}{% + \typeout{^^J% +Documentation for the amsmath package is found in amsldoc.dvi^^J% +(or .pdf or .tex).^^J% +^^J% +See also http://www.ams.org/tex/amslatex.html.^^J% +^^J% +Note: Using the first edition of The LaTeX Companion (1994) without^^J% +errata as a guide for amsmath use is not recommended.^^J% + }% +}{% + \typeout{% +For additional information on amsmath, use the \lq ?\rq\space option.% + }% +} +\ifnum\cmex@opt=7 \relax + \DeclareFontShape{OMX}{cmex}{m}{n}{% + <-8>cmex7<8>cmex8<9>cmex9% + <10><10.95><12><14.4><17.28><20.74><24.88>cmex10% + }{}% + \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax +\else + \ifnum\cmex@opt=\z@ % need to override cmex7 fontdef from amsfonts + \begingroup + \fontencoding{OMX}\fontfamily{cmex}% + \expandafter\let\csname OMX+cmex\endcsname\relax + \try@load@fontshape + \endgroup + \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax + \def\cmex@opt{10}% + \fi +\fi +\RequirePackage{amstext}[1995/01/25] +\RequirePackage{amsbsy}[1995/01/20] +\RequirePackage{amsopn}[1995/01/20] +\def\@amsmath@err{\PackageError{amsmath}} +\providecommand{\AmS}{{\protect\AmSfont + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +\newcommand{\AmSfont}{% + \usefont{OMS}{cmsy}{\if\@xp\@car\f@series\@nil bb\else m\fi}{n}} +\def\@mathmeasure#1#2#3{\setbox#1\hbox{\frozen@everymath\@emptytoks + \m@th$#2#3$}} +\@ifundefined{inf@bad}{% + \newcount\inf@bad \inf@bad=1000000 \relax +}{} +\DeclareRobustCommand{\tmspace}[3]{% + \ifmmode\mskip#1#2\else\kern#1#3\fi\relax} +\renewcommand{\,}{\tmspace+\thinmuskip{.1667em}} +\let\thinspace\, +\renewcommand{\!}{\tmspace-\thinmuskip{.1667em}} +\let\negthinspace\! +\renewcommand{\:}{\tmspace+\medmuskip{.2222em}} +\let\medspace\: +\newcommand{\negmedspace}{\tmspace-\medmuskip{.2222em}} +\renewcommand{\;}{\tmspace+\thickmuskip{.2777em}} +\let\thickspace\; +\newcommand{\negthickspace}{\tmspace-\thickmuskip{.2777em}} +\newcommand{\mspace}[1]{\mskip#1\relax} +\def\@tempa#1#2\@nil{% + \ifx\delimiter#1\@tempcnta#2\relax\else\@tempcnta\z@\fi +} +\@xp\@tempa\vert\@empty\@nil +\ifnum\@tempcnta>\z@ + \advance\@tempcnta "4000000 + \xdef\lvert{\delimiter\number\@tempcnta\space } + \advance\@tempcnta "1000000 + \xdef\rvert{\delimiter\number\@tempcnta\space } +\else + \ifx\@@undefined\lvert + % Fall back to cmex encoding since we don't know what else to do. + \DeclareMathDelimiter{\lvert} + {\mathopen}{symbols}{"6A}{largesymbols}{"0C} + \DeclareMathDelimiter{\rvert} + {\mathclose}{symbols}{"6A}{largesymbols}{"0C} + \fi +\fi +\@xp\@tempa\Vert\@empty\@nil +\ifnum\@tempcnta>\z@ + \advance\@tempcnta "4000000 + \xdef\lVert{\delimiter\number\@tempcnta\space } + \advance\@tempcnta "1000000 + \xdef\rVert{\delimiter\number\@tempcnta\space } +\else + \ifx\@@undefined\lVert + \DeclareMathDelimiter{\lVert} + {\mathopen}{symbols}{"6B}{largesymbols}{"0D} + \DeclareMathDelimiter{\rVert} + {\mathclose}{symbols}{"6B}{largesymbols}{"0D} + \fi +\fi +\@saveprimitive\over\@@over +\@saveprimitive\atop\@@atop +\@saveprimitive\above\@@above +\@saveprimitive\overwithdelims\@@overwithdelims +\@saveprimitive\atopwithdelims\@@atopwithdelims +\@saveprimitive\abovewithdelims\@@abovewithdelims +\DeclareRobustCommand{\primfrac}[1]{% + \PackageWarning{amsmath}{% +Foreign command \@backslashchar#1;\MessageBreak +\protect\frac\space or \protect\genfrac\space should be used instead% +\MessageBreak + } + \global\@xp\let\csname#1\@xp\endcsname\csname @@#1\endcsname + \csname#1\endcsname +} +\renewcommand{\over}{\primfrac{over}} +\renewcommand{\atop}{\primfrac{atop}} +\renewcommand{\above}{\primfrac{above}} +\renewcommand{\overwithdelims}{\primfrac{overwithdelims}} +\renewcommand{\atopwithdelims}{\primfrac{atopwithdelims}} +\renewcommand{\abovewithdelims}{\primfrac{abovewithdelims}} +\DeclareRobustCommand{\frac}[2]{{\begingroup#1\endgroup\@@over#2}} +\newcommand{\dfrac}{\genfrac{}{}{}0} +\newcommand{\tfrac}{\genfrac{}{}{}1} +\DeclareRobustCommand{\binom}{\genfrac()\z@{}} +\newcommand{\dbinom}{\genfrac(){0pt}0} +\newcommand{\tbinom}{\genfrac(){0pt}1} +\DeclareRobustCommand{\genfrac}[4]{% + \def\@tempa{#1#2}% + \edef\@tempb{\@nx\@genfrac\@mathstyle{#4}% + \csname @@\ifx @#3@over\else above\fi + \ifx\@tempa\@empty \else withdelims\fi\endcsname} + \@tempb{#1#2#3}} +\def\@genfrac#1#2#3#4#5{{#1{\begingroup#4\endgroup#2#3\relax#5}}} +\def\@mathstyle#1{% + \ifx\@empty#1\@empty\relax + \else\ifcase#1\displaystyle % case 0 + \or\textstyle\or\scriptstyle\else\scriptscriptstyle\fi\fi} +\begingroup +\edef\@tempa{\string\mathchar"} +\def\@tempb#1"#2\@nil{#1"} +\edef\@tempc{\expandafter\@tempb\meaning\coprod "\@nil} +\ifx\@tempa\@tempc + \global\let\coprod@\coprod + \gdef\coprod{\DOTSB\coprod@\slimits@} + \global\let\bigvee@\bigvee + \gdef\bigvee{\DOTSB\bigvee@\slimits@} + \global\let\bigwedge@\bigwedge + \gdef\bigwedge{\DOTSB\bigwedge@\slimits@} + \global\let\biguplus@\biguplus + \gdef\biguplus{\DOTSB\biguplus@\slimits@} + \global\let\bigcap@\bigcap + \gdef\bigcap{\DOTSB\bigcap@\slimits@} + \global\let\bigcup@\bigcup + \gdef\bigcup{\DOTSB\bigcup@\slimits@} + \global\let\prod@\prod + \gdef\prod{\DOTSB\prod@\slimits@} + \global\let\sum@\sum + \gdef\sum{\DOTSB\sum@\slimits@} + \global\let\bigotimes@\bigotimes + \gdef\bigotimes{\DOTSB\bigotimes@\slimits@} + \global\let\bigoplus@\bigoplus + \gdef\bigoplus{\DOTSB\bigoplus@\slimits@} + \global\let\bigodot@\bigodot + \gdef\bigodot{\DOTSB\bigodot@\slimits@} + \global\let\bigsqcup@\bigsqcup + \gdef\bigsqcup{\DOTSB\bigsqcup@\slimits@} +\fi +\endgroup +\newcommand{\leftroot}{\@amsmath@err{\Invalid@@\leftroot}\@eha} +\newcommand{\uproot}{\@amsmath@err{\Invalid@@\uproot}\@eha} +\newcount\uproot@ +\newcount\leftroot@ +\renewcommand{\root}{\relaxnext@ + \DN@{\ifx\@let@token\uproot\let\next@\nextii@\else + \ifx\@let@token\leftroot\let\next@\nextiii@\else + \let\next@\plainroot@\fi\fi\next@}% + \def\nextii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}% + \def\nextiv@{\ifx\@let@token\@sptoken\DN@. {\FN@\nextv@}\else + \DN@.{\FN@\nextv@}\fi\next@.}% + \def\nextv@{\ifx\@let@token\leftroot\let\next@\nextvi@\else + \let\next@\plainroot@\fi\next@}% + \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}% + \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}% + \def\nextvii@{\ifx\@let@token\@sptoken + \DN@. {\FN@\nextviii@}\else + \DN@.{\FN@\nextviii@}\fi\next@.}% + \def\nextviii@{\ifx\@let@token\uproot\let\next@\nextix@\else + \let\next@\plainroot@\fi\next@}% + \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}% + \bgroup\uproot@\z@\leftroot@\z@\FN@\next@} +\def\plainroot@#1\of#2{\setbox\rootbox\hbox{% + $\m@th\scriptscriptstyle{#1}$}% + \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}} + {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup} + +\@ifundefined{sqrtsign}{\let\sqrtsign\@@sqrt}{} +\def\r@@t#1#2{\setboxz@h{$\m@th#1\sqrtsign{#2}$}% + \dimen@\ht\z@\advance\dimen@-\dp\z@ + \setbox\@ne\hbox{$\m@th#1\mskip\uproot@ mu$}% + \advance\dimen@ by1.667\wd\@ne + \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox + \mkern-10mu\mkern\leftroot@ mu\boxz@} +\@ifundefined{varGamma}{% + \DeclareMathSymbol{\varGamma}{\mathord}{letters}{"00} + \DeclareMathSymbol{\varDelta}{\mathord}{letters}{"01} + \DeclareMathSymbol{\varTheta}{\mathord}{letters}{"02} + \DeclareMathSymbol{\varLambda}{\mathord}{letters}{"03} + \DeclareMathSymbol{\varXi}{\mathord}{letters}{"04} + \DeclareMathSymbol{\varPi}{\mathord}{letters}{"05} + \DeclareMathSymbol{\varSigma}{\mathord}{letters}{"06} + \DeclareMathSymbol{\varUpsilon}{\mathord}{letters}{"07} + \DeclareMathSymbol{\varPhi}{\mathord}{letters}{"08} + \DeclareMathSymbol{\varPsi}{\mathord}{letters}{"09} + \DeclareMathSymbol{\varOmega}{\mathord}{letters}{"0A} +}{} +\@saveprimitive\overline\@@overline +\DeclareRobustCommand{\overline}[1]{\@@overline{#1}} +\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}} +\newcommand{\implies}{\DOTSB\;\Longrightarrow\;} +\newcommand{\impliedby}{\DOTSB\;\Longleftarrow\;} +\def\And{\DOTSB\;\mathchar"3026 \;} +\newcommand{\nobreakdash}{\leavevmode + \toks@\@emptytoks \def\@tempa##1{\toks@\@xp{\the\toks@-}\FN@\next@}% + \DN@{\ifx\@let@token-\@xp\@tempa + \else\setboxz@h{\the\toks@\nobreak}\unhbox\z@\fi}% + \FN@\next@ +} +\renewcommand{\colon}{\nobreak\mskip2mu\mathpunct{}\nonscript + \mkern-\thinmuskip{:}\mskip6muplus1mu\relax} +\let\ifgtest@\iffalse % initial value +\def\gtest@true{\global\let\ifgtest@\iftrue} +\def\gtest@false{\global\let\ifgtest@\iffalse} +\let\DOTSI\relax +\let\DOTSB\relax +\let\DOTSX\relax +{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h + \uppercase{% + \gdef\math@#1#2#3#4#5#6\math@{\gtest@false\ifx 7#1\ifx 8#2% + \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\gtest@true + \fi\fi\fi\fi\fi}}} +{\uccode`7=`c \uccode`8=`h \uccode`9=`\" + \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\gtest@false + \ifx 7#1\ifx 8#2\ifx 9#5\gtest@true\xdef\meaning@{9#6}\fi\fi\fi}}} +\newcount\classnum@ +\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096 + \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or + \gdef\thedots@{\dotsb@}\fi} +{\uccode`4=`b \uccode`5=`i \uccode`6=`n + \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@ + \def\nextii@##1\mathbin@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\mathbin@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +{\uccode`4=`r \uccode`5=`e \uccode`6=`l + \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@ + \def\nextii@##1\mathrel@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\mathrel@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +{\uccode`5=`m \uccode`6=`a \uccode`7=`c + \uppercase{\gdef\macro@#1#2#3#4\macro@{\gtest@false + \ifx 5#1\ifx 6#2\ifx 7#3\gtest@true + \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}} +\def\macro@@#1->#2\macro@@{#2} +\newcount\DOTSCASE@ +{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S + \uppercase{\gdef\DOTS@#1#2#3#4#5{\gtest@false\DN@##1\DOTS@{}% + \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@ + \fi\fi\fi\fi\fi + \next@}}} +{\uccode`3=`B \uccode`4=`I \uccode`5=`X + \uppercase{\gdef\DOTS@@#1{\relaxnext@ + \def\nextii@##1\DOTS@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \DN@{\FN@\nextii@}% + \ifx 3#1\global\DOTSCASE@\z@\else + \ifx 4#1\global\DOTSCASE@\@ne\else + \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}% + \fi\fi\fi\next@}}} +{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t + \uppercase{\gdef\not@#1#2#3#4{\relaxnext@ + \def\nextii@##1\not@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\not@{}% + \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi + \fi\next@}}} +\def\keybin@{\gtest@true + \ifx\@let@token+\else\ifx\@let@token=\else + \ifx\@let@token<\else\ifx\@let@token>\else + \ifx\@let@token-\else\ifx\@let@token*\else\ifx\@let@token:\else + \gtest@false\fi\fi\fi\fi\fi\fi\fi} +\@ifundefined{@ldots}{\def\@ldots{\mathellipsis}}{} +\DeclareRobustCommand{\ldots}{% + \ifmmode \mathellipsis \else \textellipsis \fi +} +\DeclareRobustCommand{\dots}{% + \ifmmode \@xp\mdots@\else \@xp\textellipsis \fi +} +\def\tdots@{\leavevmode\unskip\relaxnext@ + \DN@{$\m@th\@ldots\, + \ifx\@let@token,\,$\else\ifx\@let@token.\,$\else + \ifx\@let@token;\,$\else\ifx\@let@token:\,$\else + \ifx\@let@token?\,$\else\ifx\@let@token!\,$\else + $ \fi\fi\fi\fi\fi\fi}% + \ \FN@\next@} +\def\mdots@{\FN@\mdots@@} +\def\mdots@@{\gdef\thedots@{\dotso@}% + \ifx\@let@token\boldsymbol \gdef\thedots@\boldsymbol{\boldsymboldots@}% + \else\ifx,\@let@token \gdef\thedots@{\dotsc}% + \else\ifx\not\@let@token \gdef\thedots@{\dotsb@}% + \else\keybin@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \else\xdef\meaning@{\meaning\@let@token..........}% + \xdef\meaning@@{\meaning@}% + \@xp\math@\meaning@\math@ + \ifgtest@ + \@xp\mathch@\meaning@\mathch@ + \ifgtest@\@xp\getmathch@\meaning@\getmathch@\fi + \else\@xp\macro@\meaning@@\macro@ + \ifgtest@ + \@xp\not@\meaning@\not@\ifgtest@\gdef\thedots@{\dotsb@}% + \else\@xp\DOTS@\meaning@\DOTS@ + \ifgtest@ + \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}% + \or\gdef\thedots@{\dotsi}\else\fi + \else\@xp\math@\meaning@\math@ + \ifgtest@\@xp\mathbin@\meaning@\mathbin@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \else\@xp\mathrel@\meaning@\mathrel@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \thedots@} +\def\boldsymboldots@#1{% + \bold@true\let\@let@token=#1\let\delayed@=#1\mdots@@ + \boldsymbol#1\bold@false} +\def\@cdots{\mathinner{\cdotp\cdotp\cdotp}} +\newcommand{\dotsi}{\!\@cdots} +\let\dotsb@\@cdots +\def\rightdelim@{\gtest@true + \ifx\@let@token)\else + \ifx\@let@token]\else + \ifx\@let@token\rbrack\else + \ifx\@let@token\}\else + \ifx\@let@token\rbrace\else + \ifx\@let@token\rangle\else + \ifx\@let@token\rceil\else + \ifx\@let@token\rfloor\else + \ifx\@let@token\rgroup\else + \ifx\@let@token\rmoustache\else + \ifx\@let@token\right\else + \ifx\@let@token\bigr\else + \ifx\@let@token\biggr\else + \ifx\@let@token\Bigr\else + \ifx\@let@token\Biggr\else\gtest@false + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\extra@{% + \rightdelim@\ifgtest@ + \else\ifx\@let@token$\gtest@true + \else\xdef\meaning@{\meaning\@let@token..........}% + \@xp\macro@\meaning@\macro@\ifgtest@ + \@xp\DOTS@\meaning@\DOTS@ + \ifgtest@ + \ifnum\DOTSCASE@=\tw@\gtest@true\else\gtest@false + \fi\fi\fi\fi\fi} +\newif\ifbold@ +\def\dotso@{\relaxnext@ + \ifbold@ + \let\@let@token\delayed@ + \def\nextii@{\extra@\@ldots\ifgtest@\,\fi}% + \else + \def\nextii@{\DN@{\extra@\@ldots\ifgtest@\,\fi}\FN@\next@}% + \fi + \nextii@} +\def\extrap@#1{% + \DN@{#1\,}% + \ifx\@let@token,\else + \ifx\@let@token;\else + \ifx\@let@token.\else\extra@ + \ifgtest@\else + \let\next@#1\fi\fi\fi\fi\next@} +\DeclareRobustCommand{\cdots}{\DN@{\extrap@\@cdots}\FN@\next@} +\let\dotsb\cdots +\let\dotsm\cdots +\DeclareRobustCommand{\dotso}{\relax + \ifmmode \DN@{\extrap@\@ldots}% + \else \let\next@\tdots@\fi + \FN@\next@} +\DeclareRobustCommand{\dotsc}{% + \DN@{\ifx\@let@token;\@ldots\,% + \else \ifx\@let@token.\@ldots\,% + \else \extra@\@ldots \ifgtest@\,\fi + \fi\fi}% + \FN@\next@} +\renewcommand{\longrightarrow}{% + \DOTSB\protect\relbar\protect\joinrel\rightarrow} +\renewcommand{\Longrightarrow}{% + \DOTSB\protect\Relbar\protect\joinrel\Rightarrow} +\renewcommand{\longleftarrow}{% + \DOTSB\leftarrow\protect\joinrel\protect\relbar} +\renewcommand{\Longleftarrow}{% + \DOTSB\Leftarrow\protect\joinrel\protect\Relbar} +\renewcommand{\longleftrightarrow}{\DOTSB\leftarrow\joinrel\rightarrow} +\renewcommand{\Longleftrightarrow}{\DOTSB\Leftarrow\joinrel\Rightarrow} +\renewcommand{\mapsto}{\DOTSB\mapstochar\rightarrow} +\renewcommand{\longmapsto}{\DOTSB\mapstochar\longrightarrow} +\renewcommand{\hookrightarrow}{\DOTSB\lhook\joinrel\rightarrow} +\renewcommand{\hookleftarrow}{\DOTSB\leftarrow\joinrel\rhook} +\renewcommand{\iff}{\DOTSB\;\Longleftrightarrow\;} +\renewcommand{\doteq}{% + \DOTSB\mathrel{\mathop{\kern0pt =}\limits^{\textstyle.}}} +\newif\if@display +\everydisplay\@xp{\the\everydisplay \@displaytrue} +\renewcommand{\int}{\DOTSI\intop\ilimits@} +\renewcommand{\oint}{\DOTSI\ointop\ilimits@} +\def\intkern@{\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}} +\def\intdots@{\mathchoice{\@cdots}% + {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}% + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}% + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}} +\newcommand{\iint}{\DOTSI\protect\MultiIntegral{2}} +\newcommand{\iiint}{\DOTSI\protect\MultiIntegral{3}} +\newcommand{\iiiint}{\DOTSI\protect\MultiIntegral{4}} +\newcommand{\idotsint}{\DOTSI\protect\MultiIntegral{0}} +\newcommand{\MultiIntegral}[1]{% + \edef\ints@c{\noexpand\intop + \ifnum#1=\z@\noexpand\intdots@\else\noexpand\intkern@\fi + \ifnum#1>\tw@\noexpand\intop\noexpand\intkern@\fi + \ifnum#1>\thr@@\noexpand\intop\noexpand\intkern@\fi + \noexpand\intop + \noexpand\ilimits@ + }% + \futurelet\@let@token\ints@a +} +\def\ints@a{% + \ifx\limits\@let@token \ints@b + \else \ifx\displaylimits\@let@token \ints@b + \else\ifx\ilimits@\displaylimits \ints@b + \fi\fi\fi + \ints@c +} +\def\ints@b{% + \mkern-7mu\mathchoice{\mkern-2mu}{}{}{}% + \mathop\bgroup + \mkern7mu\mathchoice{\mkern2mu}{}{}{}% + \let\ilimits@\egroup +}% +\newbox\Mathstrutbox@ +\setbox\Mathstrutbox@=\hbox{} +\def\Mathstrut@{\copy\Mathstrutbox@} +\def\resetMathstrut@{% + \setbox\z@\hbox{% + \mathchardef\@tempa\mathcode`\(\relax + \def\@tempb##1"##2##3{\the\textfont"##3\char"}% + \expandafter\@tempb\meaning\@tempa \relax + }% + \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@ +} +\addto@hook\every@math@size{\resetMathstrut@} +\newbox\strutbox@ +\def\strut@{\copy\strutbox@} +\def\reset@strutbox@{% + \global\setbox\strutbox@\hbox{% + \lower.5\normallineskiplimit + \vbox{\kern-\normallineskiplimit\copy\strutbox}}} +\addto@hook\every@math@size{\reset@strutbox@} +\AtBeginDocument{\reset@strutbox@} +\renewcommand{\big}{\bBigg@\@ne} +\renewcommand{\Big}{\bBigg@{1.5}} +\renewcommand{\bigg}{\bBigg@\tw@} +\renewcommand{\Bigg}{\bBigg@{2.5}} +\def\bBigg@#1#2{% + {\@mathmeasure\z@{\nulldelimiterspace\z@}% + {\left#2\vcenter to#1\big@size{}\right.}% + \box\z@}} +\addto@hook\every@math@size{% + \global\big@size 1.2\ht\Mathstrutbox@ + \global\advance\big@size 1.2\dp\Mathstrutbox@ } +\newdimen\big@size +\def\accentclass@{7} +\def\noaccents@{\def\accentclass@{0}} +\DeclareFontEncoding{OML}{}{\noaccents@} +\DeclareFontEncoding{OMS}{}{\noaccents@} +\newcommand{\dddot}[1]{% + {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\normalfont ...}\vss}}}} +\newcommand{\ddddot}[1]{% + {\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\normalfont....}\vss}}}} +\def\set@mathaccent#1#2#3#4{% + \xdef#2{\@nx\protect\@nx\mathaccentV + {\@xp\@gobble\string#2}\hexnumber@#1#4}% +} +\def\@tempa#1{\@xp\@tempb\meaning#1\@nil#1} +\def\@tempb#1>#2#3 #4\@nil#5{% + \@xp\ifx\csname#3\endcsname\mathaccent + \@tempc#4?"7777\@nil#5% + \else + \PackageWarningNoLine{amsmath}{% + Unable to redefine math accent \string#5}% + \fi +} +\def\@tempc#1"#2#3#4#5#6\@nil#7{% + \chardef\@tempd="#3\relax\set@mathaccent\@tempd{#7}{#2}{#4#5}} +\@tempa{\hat} +\@tempa{\check} +\@tempa{\tilde} +\@tempa{\acute} +\@tempa{\grave} +\@tempa{\dot} +\@tempa{\ddot} +\@tempa{\breve} +\@tempa{\bar} +\@tempa{\vec} +\@ifundefined{mathring}{% + \DeclareMathAccent{\mathring}{\mathalpha}{operators}{"17} +}{% + \@tempa{\mathring} +} +%%\@tempa\widetilde +%%\@tempa\widehat +\newcommand{\acc@check}{} +\newcommand{\acc@error}{} +\def\acc@check{\@ifnextchar\@empty\relax\acc@error} +\def\acc@error{% + \@amsmath@err{% + Improper argument for math accent:\MessageBreak + Extra braces must be added to prevent wrong output% + }\@ehc +} +\newcount\macc@depth +\long\def\@gobblethree#1#2#3{} +\def\mathaccentV#1#2#3#4#5{% + \ifmmode + \gdef\macc@tmp{\macc@depth\@ne}% + \setbox\z@\hbox{% + \let\mathaccentV\macc@test + \let\use@mathgroup\@gobbletwo \let\select@group\@gobblethree + \frozen@everymath{}$#5$% + }% + \macc@tmp + \ifnum\macc@depth=\@ne + \global\let\macc@nucleus\@empty + \mathaccent"\accentclass@ + \else + \@xp\macc@nested + \fi + #2#3#4{#5}% + \macc@nucleus + \else + \@xp\nonmatherr@\csname#1\endcsname + \fi +} +\def\macc@test#1#2#3#4{\xdef\macc@tmp{\macc@tmp\advance\macc@depth\@ne}} +\def\macc@group{-1} +\def\macc@nested#1#2#3#4{% + \begingroup + \let\math@bgroup\@empty \let\math@egroup\macc@set@skewchar + \mathsurround\z@ \frozen@everymath{\mathgroup\macc@group\relax}% + \macc@set@skewchar\relax + \let\mathaccentV\macc@nested@a + \macc@nested@a\relax#1#2#3{#4}% + \endgroup +} +\let\macc@palette\mathpalette +\def\macc@nested@a#1#2#3#4#5{% + \ifnum\macc@group=\mathgroup + \else \macc@set@skewchar\relax \edef\macc@group{\the\mathgroup}% + \fi + \mathchardef\macc@code "\accentclass@ #2#3#4\relax + \macc@palette\macc@a{#5}% +} +\def\macc@set@skewchar#1{% + \begingroup + \ifnum\mathgroup=\m@ne \let\@tempa\@ne + \else + \ifnum\skewchar\textfont\mathgroup=\m@ne \let\@tempa\@ne + \else \let\@tempa\mathgroup + \fi + \fi + \count@=\skewchar\textfont\@tempa + \advance\count@"7100 + \edef\@tempa{\endgroup + \mathchardef\noexpand\macc@skewchar=\number\count@\relax}% + \@tempa + #1% +} +\def\macc@a#1#2{% + \begingroup + \let\macc@style#1\relax + \def\macc@palette##1{##1\macc@style}% + \advance\macc@depth\m@ne + \ifnum\macc@depth=\z@ + \gdef\macc@nucleus{#2}% + \setbox\z@\hbox{$#1#2\@empty{}\macc@skewchar$}% + \setbox\tw@\hbox{$#1#2\@empty\macc@skewchar$}% + \dimen@\tw@\wd\tw@ \advance\dimen@-\tw@\wd\z@ + \xdef\macc@kerna{\the\dimen@\relax}% + \setbox4\hbox{$#1#2\acc@check\@empty$}% + \global\setbox\@ne\hbox to\wd4{}% + \ht\@ne\ht4 \dp\@ne\dp4 + \xdef\macc@kernb{\the\wd4\relax}% + \mathaccent\macc@code{\box\@ne\kern\macc@kerna}% + \else + \mathaccent\macc@code{\let\macc@adjust\@empty #1#2\@empty}% + \macc@adjust + \fi + \endgroup +} +\def\macc@adjust{% + \dimen@\macc@kerna\advance\dimen@\macc@kernb + \kern-\dimen@ +} +\def\Hat{\hat} +\def\Check{\check} +\def\Tilde{\tilde} +\def\Acute{\acute} +\def\Grave{\grave} +\def\Dot{\dot} +\def\Ddot{\ddot} +\def\Breve{\breve} +\def\Bar{\bar} +\def\Vec{\vec} +\def\nonmatherr@#1{\@amsmath@err{\protect + #1 allowed only in math mode}\@ehd} +\renewcommand{\bmod}{\nonscript\mskip-\medmuskip\mkern5mu\mathbin + {\operator@font mod}\penalty900 + \mkern5mu\nonscript\mskip-\medmuskip} +\newcommand{\pod}[1]{\allowbreak + \if@display\mkern18mu\else\mkern8mu\fi(#1)} +\renewcommand{\pmod}[1]{\pod{{\operator@font mod}\mkern6mu#1}} +\newcommand{\mod}[1]{\allowbreak\if@display\mkern18mu + \else\mkern12mu\fi{\operator@font mod}\,\,#1} +\newcommand{\cfrac}[3][c]{{\displaystyle\frac{% + \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}% + \kern-\nulldelimiterspace} +\newcommand{\overset}[2]{\binrel@{#2}% + \binrel@@{\mathop{\kern\z@#2}\limits^{#1}}} +\newcommand{\underset}[2]{\binrel@{#2}% + \binrel@@{\mathop{\kern\z@#2}\limits_{#1}}} +\newcommand{\sideset}[3]{% + \@mathmeasure\z@\displaystyle{#3}% + \global\setbox\@ne\vbox to\ht\z@{}\dp\@ne\dp\z@ + \setbox\tw@\box\@ne + \@mathmeasure4\displaystyle{\copy\tw@#1}% + \@mathmeasure6\displaystyle{#3\nolimits#2}% + \dimen@-\wd6 \advance\dimen@\wd4 \advance\dimen@\wd\z@ + \hbox to\dimen@{}\mathop{\kern-\dimen@\box4\box6}% +} +\renewcommand{\smash}[1][tb]{% + \def\mb@t{\ht}\def\mb@b{\dp}\def\mb@tb{\ht\z@\z@\dp}% + \edef\finsm@sh{\csname mb@#1\endcsname\z@\z@ \box\z@}% + \ifmmode \@xp\mathpalette\@xp\mathsm@sh + \else \@xp\makesm@sh + \fi +} +\mathchardef\std@minus\mathcode`\-\relax +\mathchardef\std@equal\mathcode`\=\relax +\AtBeginDocument{% + \mathchardef\std@minus\mathcode`\-\relax + \mathchardef\std@equal\mathcode`\=\relax +} +\def\relbar{\mathrel{\mathpalette\mathsm@sh\std@minus}} +\def\Relbar{\mathrel\std@equal} +\def\arrowfill@#1#2#3#4{% + $\m@th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip + \relax#4#1\mkern-7mu% + \cleaders\hbox{$#4\mkern-2mu#2\mkern-2mu$}\hfill + \mkern-7mu#3$% +} +\def\leftarrowfill@{\arrowfill@\leftarrow\relbar\relbar} +\def\rightarrowfill@{\arrowfill@\relbar\relbar\rightarrow} +\def\leftrightarrowfill@{\arrowfill@\leftarrow\relbar\rightarrow} +\def\Leftarrowfill@{\arrowfill@\Leftarrow\Relbar\Relbar} +\def\Rightarrowfill@{\arrowfill@\Relbar\Relbar\Rightarrow} +\def\Leftrightarrowfill@{\arrowfill@\Leftarrow\Relbar\Rightarrow} +\def\overarrow@#1#2#3{\vbox{\ialign{##\crcr#1#2\crcr + \noalign{\nointerlineskip}$\m@th\hfil#2#3\hfil$\crcr}}} +\renewcommand{\overrightarrow}{% + \mathpalette{\overarrow@\rightarrowfill@}} +\renewcommand{\overleftarrow}{% + \mathpalette{\overarrow@\leftarrowfill@}} +\newcommand{\overleftrightarrow}{% + \mathpalette{\overarrow@\leftrightarrowfill@}} +\def\underarrow@#1#2#3{% + \vtop{\ialign{##\crcr$\m@th\hfil#2#3\hfil$\crcr + \noalign{\nointerlineskip\kern1.3\ex@}#1#2\crcr}}} +\newcommand{\underrightarrow}{% + \mathpalette{\underarrow@\rightarrowfill@}} +\newcommand{\underleftarrow}{% + \mathpalette{\underarrow@\leftarrowfill@}} +\newcommand{\underleftrightarrow}{% + \mathpalette{\underarrow@\leftrightarrowfill@}} +\def\ext@arrow#1#2#3#4#5#6#7{% + \mathrel{\mathop{% + \setbox\z@\hbox{#5\displaystyle}% + \setbox\tw@\vbox{\m@th + \hbox{$\scriptstyle\mkern#3mu{#6}\mkern#4mu$}% + \hbox{$\scriptstyle\mkern#3mu{#7}\mkern#4mu$}% + \copy\z@ + }% + \hbox to\wd\tw@{\unhbox\z@}}% + \limits + \@ifnotempty{#7}{^{\if0#1\else\mkern#1mu\fi + #7\if0#2\else\mkern#2mu\fi}}% + \@ifnotempty{#6}{_{\if0#1\else\mkern#1mu\fi + #6\if0#2\else\mkern#2mu\fi}}}% +} +\newcommand{\xrightarrow}[2][]{\ext@arrow 0359\rightarrowfill@{#1}{#2}} +\newcommand{\xleftarrow}[2][]{\ext@arrow 3095\leftarrowfill@{#1}{#2}} +\newenvironment{subarray}[1]{% + \vcenter\bgroup + \Let@ \restore@math@cr \default@tag + \baselineskip\fontdimen10 \scriptfont\tw@ + \advance\baselineskip\fontdimen12 \scriptfont\tw@ + \lineskip\thr@@\fontdimen8 \scriptfont\thr@@ + \lineskiplimit\lineskip + \ialign\bgroup\ifx c#1\hfil\fi + $\m@th\scriptstyle##$\hfil\crcr +}{% + \crcr\egroup\egroup +} +\newcommand{\substack}[1]{\subarray{c}#1\endsubarray} +\newenvironment{smallmatrix}{\null\,\vcenter\bgroup + \Let@\restore@math@cr\default@tag + \baselineskip6\ex@ \lineskip1.5\ex@ \lineskiplimit\lineskip + \ialign\bgroup\hfil$\m@th\scriptstyle##$\hfil&&\thickspace\hfil + $\m@th\scriptstyle##$\hfil\crcr +}{% + \crcr\egroup\egroup\,% +} +\renewenvironment{matrix}{% + \matrix@check\matrix\env@matrix +}{% + \endarray \hskip -\arraycolsep +} +\def\env@matrix{\hskip -\arraycolsep + \let\@ifnextchar\new@ifnextchar + \array{*\c@MaxMatrixCols c}} +\newcount\c@MaxMatrixCols \c@MaxMatrixCols=10 +\def\matrix@check#1{% + \@xp\ifx\csname\@currenvir\endcsname#1% + \else\matrix@error#1% + \@xp\@gobble + \fi +} +\def\matrix@error#1{% + \@amsmath@err{% +Old form `\string#1' should be \string\begin{\@xp\@gobble\string#1}% + }{% +`\string#1{...}' is old Plain-TeX syntax whose use is +ill-advised in LaTeX.% + }% +} +\renewenvironment{pmatrix}{% + \left(% + \matrix@check\pmatrix\env@matrix +}{ + \endmatrix\right)% +} +\newenvironment{bmatrix}{\left[\env@matrix}{\endmatrix\right]} +\newenvironment{Bmatrix}{% + \left\lbrace\env@matrix +}{% + \endmatrix\right\rbrace +} +\newenvironment{vmatrix}{\left\lvert\env@matrix}{\endmatrix\right\rvert} +\newenvironment{Vmatrix}{\left\lVert\env@matrix}{\endmatrix\right\rVert} +\let\hdots\@ldots +\newcommand{\hdotsfor}[1]{% + \ifx[#1\@xp\shdots@for\else\hdots@for\@ne{#1}\fi} +\newmuskip\dotsspace@ +\def\shdots@for#1]{\hdots@for{#1}} +\def\hdots@for#1#2{\multicolumn{#2}c% + {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@ + \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}% + \hfill + \mkern-#1\dotsspace@}% + } +\renewenvironment{cases}{% + \matrix@check\cases\env@cases +}{% + \endarray\right.% +} +\def\env@cases{% + \let\@ifnextchar\new@ifnextchar + \left\lbrace + \def\arraystretch{1.2}% + \array{@{}l@{\quad}l@{}}% +} +\newcounter{parentequation}% Counter for ``parent equation''. +\@ifundefined{ignorespacesafterend}{% + \def\ignorespacesafterend{\global\@ignoretrue}% +}{} +\newenvironment{subequations}{% + \refstepcounter{equation}% + \protected@edef\theparentequation{\theequation}% + \setcounter{parentequation}{\value{equation}}% + \setcounter{equation}{0}% + \def\theequation{\theparentequation\alph{equation}}% + \ignorespaces +}{% + \setcounter{equation}{\value{parentequation}}% + \ignorespacesafterend +} +\newcommand{\numberwithin}[3][\arabic]{% + \@ifundefined{c@#2}{\@nocounterr{#2}}{% + \@ifundefined{c@#3}{\@nocnterr{#3}}{% + \@addtoreset{#2}{#3}% + \@xp\xdef\csname the#2\endcsname{% + \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}}}}% +} +\newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}} +\newcount\dspbrk@lvl +\dspbrk@lvl=-1 +\interdisplaylinepenalty\@M +\newcommand{\allowdisplaybreaks}[1][4]{% + \interdisplaylinepenalty\getdsp@pen{#1}\relax +} +\def\getdsp@pen#1{% + \ifcase #1\@M \or 9999 \or 6999 \or 2999 \or \z@\fi +} +\newcommand{\displaybreak}{\new@ifnextchar[\dspbrk@{\dspbrk@[4]}} +\chardef\dspbrk@context=\sixt@@n +\def\dspbrk@[#1]{% + \ifmeasuring@ + \else + \ifcase\dspbrk@context % case 0 --- OK + \global\dspbrk@lvl #1\relax + \or % case 1 --- inside a box + \nogood@displaybreak + \else % other cases --- outside of a display + \@amsmath@err{\Invalid@@\displaybreak}\@eha + \fi + \fi +} +\def\nogood@displaybreak{% + \@amsmath@err{\protect +\displaybreak\space cannot be applied here}% +{One of the enclosing environments creates an + unbreakable box\MessageBreak +(e.g., split, aligned, gathered, ...).}% +} +\def\math@cr{\relax\iffalse{\fi\ifnum0=`}\fi + \@ifstar{\global\@eqpen\@M\math@cr@}% + {\global\@eqpen + \ifnum\dspbrk@lvl <\z@ \interdisplaylinepenalty + \else -\@getpen\dspbrk@lvl \fi + \math@cr@}} +\def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}} +\def\math@cr@@[#1]{\ifnum0=`{\fi \iffalse}\fi\math@cr@@@ + \noalign{\vskip#1\relax}} +\def\Let@{\let\\\math@cr} +\def\restore@math@cr{\def\math@cr@@@{\cr}} +\restore@math@cr +\newcommand{\intertext}{\@amsmath@err{\Invalid@@\intertext}\@eha} +\def\intertext@{% + \def\intertext##1{% + \ifvmode\else\\\@empty\fi + \noalign{% + \penalty\postdisplaypenalty\vskip\belowdisplayskip + \vbox{\normalbaselines + \ifdim\linewidth=\columnwidth + \else \parshape\@ne \@totalleftmargin \linewidth + \fi + \noindent##1\par}% + \penalty\predisplaypenalty\vskip\abovedisplayskip% + }% +}} +\newhelp\tag@help + {tag cannot be used at this point.\space + If you don't understand why^^Jyou should consult + the documentation.^^JBut don't worry: just continue, and I'll + forget what happened.} +\def\gobble@tag{\@ifstar\@gobble\@gobble} +\def\invalid@tag#1{\@amsmath@err{#1}{\the\tag@help}\gobble@tag} +\def\dft@tag{\invalid@tag{\string\tag\space not allowed here}} +\def\default@tag{\let\tag\dft@tag} +\default@tag +\def\maketag@@{\@ifstar\maketag@@@\tagform@} +\def\maketag@@@#1{\hbox{\m@th\normalfont#1}} +\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}} +\iftagsleft@ + \def\@eqnnum{\hbox to1sp{}\rlap{\normalfont\normalcolor + \hskip -\displaywidth\tagform@\theequation}} +\else + \def\@eqnnum{{\normalfont\normalcolor \tagform@\theequation}} +\fi +\newcommand{\thetag}{\leavevmode\tagform@} +\let\df@tag\@empty +\def\make@df@tag{\@ifstar\make@df@tag@@\make@df@tag@@@} +\def\make@df@tag@@#1{% + \gdef\df@tag{\maketag@@@{#1}\def\@currentlabel{#1}}} +\def\make@df@tag@@@#1{\gdef\df@tag{\tagform@{#1}% + \toks@\@xp{\p@equation{#1}}\edef\@currentlabel{\the\toks@}}} +\let\ltx@label\label +\def\label@in@display{% + \ifx\df@label\@empty\else + \@amsmath@err{Multiple \string\label's: + label '\df@label' will be lost}\@eha + \fi + \gdef\df@label +} +\toks@\@xp{\@arrayparboxrestore \let\label\ltx@label}% +\edef\@arrayboxrestore{\the\toks@} +\let\df@label\@empty +\def\make@display@tag{% + \if@eqnsw \incr@eqnum \print@eqnum + \else \iftag@ \df@tag \global\let\df@tag\@empty \fi + \fi + \ifmeasuring@ + \else + \ifx\df@label\@empty + \else + \@xp\ltx@label\@xp{\df@label}% + \global\let\df@label\@empty + \fi + \fi +} +\def\tag@in@align{% + \relax + \iftag@ + \DN@{\invalid@tag{Multiple \string\tag}}% + \else + \global\tag@true + \nonumber + \let\next@\make@df@tag + \fi + \next@ +} +\newcommand{\raisetag}[1]{\skip@#1\relax + \xdef\raise@tag{\vskip\iftagsleft@\else-\fi\the\skip@\relax}% +} +\let\raise@tag\@empty +\newcommand{\notag}{\nonumber} +\renewcommand{\nonumber}{% + \if@eqnsw + \ifx\incr@eqnum\@empty \addtocounter{equation}\m@ne \fi + \fi + \let\print@eqnum\@empty \let\incr@eqnum\@empty + \global\@eqnswfalse +} +\def\print@eqnum{\tagform@\theequation} +\def\incr@eqnum{\refstepcounter{equation}\let\incr@eqnum\@empty} +\newif\ifinalign@ +\newif\ifingather@ +\@xp\def\@xp\@arrayparboxrestore\@xp{\@arrayparboxrestore + \ingather@false\inalign@false \default@tag + \let\spread@equation\@spread@equation + \let\reset@equation\@empty + \def\print@eqnum{\tagform@\theequation}% + \def\incr@eqnum{\refstepcounter{equation}\let\incr@eqnum\@empty}% +} +\newif\iftag@ +\newif\ifst@rred +\newif\ifmeasuring@ +\newif\ifshifttag@ +\newcount\row@ +\newcount\column@ +\def\column@plus{% + \global\advance\column@\@ne +} +\newcount\maxfields@ +\def\add@amp#1{\if m#1&\@xp\add@amp\fi} +\def\add@amps#1{% + \begingroup + \count@#1\advance\count@-\column@ + \edef\@tempa{\endgroup + \@xp\add@amp\romannumeral\number\count@ 000q}% + \@tempa +} +\newhelp\andhelp@ +{An extra & here is so disastrous that you should probably exit^^J +and fix things up.} +\newdimen\eqnshift@ +\newdimen\alignsep@ +\newdimen\tagshift@ +\newcommand{\mintagsep}{.5\fontdimen6\textfont\tw@} +\newcommand{\minalignsep}{10pt} +\newdimen\tagwidth@ +\newdimen\totwidth@ +\newdimen\lineht@ +\def\tag@width#1{% + \ifcase\@xp#1\tag@lengths\fi +} + +\def\savetaglength@{% + \begingroup + \let\or\relax + \xdef\tag@lengths{\tag@lengths\or \the\wdz@}% + \endgroup +} + +\def\shift@tag#1{% + \ifcase\@xp#1\tag@shifts\fi\relax +} + +\let\tag@shifts\@empty +\def\saveshift@#1{% + \begingroup + \let\or\relax + \xdef\tag@shifts{\or#1\tag@shifts}% + \endgroup +} +\def\spread@equation{\reset@strutbox@ + \openup\jot \let\spread@equation\@empty} +\let\@spread@equation\spread@equation +\def\displ@y{\@display@init{}} +\def\@display@init#1{% + \global\dt@ptrue \spread@equation + \everycr{% + \noalign{% + #1% + \ifdt@p + \global\dt@pfalse + \vskip-\lineskiplimit + \vskip\normallineskiplimit + \else + \penalty\@eqpen \global\dspbrk@lvl\m@ne + \fi + }% + }% +} +\def\displ@y@{\@display@init{% + \global\column@\z@ \global\dspbrk@lvl\m@ne + \global\tag@false \global\let\raise@tag\@empty +}} +\def\black@#1{% + \noalign{% + \ifdim#1>\displaywidth + \dimen@\prevdepth + \nointerlineskip + \vskip-\ht\strutbox@ + \vskip-\dp\strutbox@ + \vbox{\noindent\hbox to#1{\strut@\hfill}}% + \prevdepth\dimen@ + \fi + }% +} +\def\savecounters@{% + \begingroup + \def\@elt##1{% + \global\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \xdef\@gtempa{% + \cl@@ckpt + \let\@nx\restorecounters@\@nx\@empty + }% + \endgroup + \let\restorecounters@\@gtempa +} +\let\restorecounters@\@empty +\def\savealignstate@{% + \begingroup + \let\or\relax + \xdef\@gtempa{% + \global\totwidth@\the\totwidth@ + \global\row@\the\row@ + \gdef\@nx\tag@lengths{\tag@lengths}% + \let\@nx\restorealignstate@\@nx\@empty + }% + \endgroup + \let\restorealignstate@\@gtempa +} + +\let\restorealignstate@\@empty +\def\savecolumn@{% + \edef\restorecolumn@{% + \global\column@\number\column@ + \let\@nx\restorecolumn@\@nx\@empty + }% +} +\let\restorecolumn@\@empty +\newtoks\@envbody +\def\addto@envbody#1{\global\@envbody\@xp{\the\@envbody#1}} +\def\collect@body#1{% + \@envbody{\@xp#1\@xp{\the\@envbody}}% + \edef\process@envbody{\the\@envbody\@nx\end{\@currenvir}}% + \@envbody\@emptytoks \def\begin@stack{b}% + \begingroup + \@xp\let\csname\@currenvir\endcsname\collect@@body + \edef\process@envbody{\@xp\@nx\csname\@currenvir\endcsname}% + \process@envbody +} +\def\push@begins#1\begin#2{% + \ifx\end#2\else b\@xp\push@begins\fi +} +\def\collect@@body#1\end#2{% + \edef\begin@stack{\push@begins#1\begin\end \@xp\@gobble\begin@stack}% + \ifx\@empty\begin@stack + \endgroup + \@checkend{#2}% + \addto@envbody{#1}% + \else + \addto@envbody{#1\end{#2}}% + \fi + \process@envbody % A little tricky! Note the grouping +} +\def\math@cr@@@aligned{% + \ifodd\column@ \let\next@\@empty + \else \def\next@{&\kern-\alignsep@}% + \fi + \next@ \cr +} +\newcommand{\start@aligned}[2]{% + \RIfM@\else + \nonmatherr@{\begin{\@currenvir}}% + \fi + \savecolumn@ % Assumption: called inside a group + \null\,% + \if #1t\vtop \else \if#1b \vbox \else \vcenter \fi \fi \bgroup + \maxfields@#2\relax + \ifnum\maxfields@>\m@ne + \multiply\maxfields@\tw@ + \let\math@cr@@@\math@cr@@@alignedat + \alignsep@\z@skip + \else + \let\math@cr@@@\math@cr@@@aligned + \alignsep@\minalignsep + \fi + \Let@ \chardef\dspbrk@context\@ne + \default@tag + \spread@equation % no-op if already called + \global\column@\z@ + \ialign\bgroup + &\column@plus + \hfil + \strut@ + $\m@th\displaystyle{##}$% + \tabskip\z@skip + &\column@plus + $\m@th\displaystyle{{}##}$% + \hfil + \tabskip\alignsep@ + \crcr +} +\def\math@cr@@@alignedat{% + \ifnum\column@>\maxfields@ + \begingroup + \measuring@false + \@amsmath@err{Extra & on this line}% + {\the\andhelp@}% "An extra & here is disastrous" + \endgroup + \fi + \global\column@\z@ + \cr +} +\def\alignsafe@testopt#1#2{% + \relax\iffalse{\fi\ifnum`}=0\fi + \@ifnextchar[% + {\let\@let@token\relax \ifnum`{=\z@\fi\iffalse}\fi#1}% + {\let\@let@token\relax \ifnum`{=\z@\fi\iffalse}\fi#1[#2]}% +} +\newenvironment{aligned}{% + \let\@testopt\alignsafe@testopt + \aligned@a +}{% + \crcr\egroup + \restorecolumn@ + \egroup +} +\newcommand{\aligned@a}[1][c]{\start@aligned{#1}\m@ne} +\newenvironment{alignedat}{% + \let\@testopt\alignsafe@testopt + \alignedat@a +}{% + \endaligned +} +\newcommand{\alignedat@a}[1][c]{\start@aligned{#1}} +\newenvironment{gathered}[1][c]{% + \RIfM@\else + \nonmatherr@{\begin{gathered}}% + \fi + \null\,% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi \bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \spread@equation + \ialign\bgroup + \hfil\strut@$\m@th\displaystyle##$\hfil + \crcr +}{% + \endaligned +} +\def\start@gather#1{% + \RIfM@ + \nomath@env + \DN@{\@namedef{end\@currenvir}{}\@gobble}% + \else + $$% + #1% + \ifst@rred \else \global\@eqnswtrue \fi + \let\next@\gather@ + \fi + \collect@body\next@ +} +\newenvironment{gather}{% + \start@gather\st@rredfalse +}{% + \math@cr \black@\totwidth@ \egroup + $$\ignorespacesafterend +} + +\newenvironment{gather*}{% + \start@gather\st@rredtrue +}{% + \endgather +} +\def\gather@#1{% + \ingather@true \let\split\insplit@ + \let\tag\tag@in@align \let\label\label@in@display + \chardef\dspbrk@context\z@ + \intertext@ \displ@y@ \Let@ + \let\math@cr@@@\math@cr@@@gather + \gmeasure@{#1}% + \global\shifttag@false + \tabskip\z@skip + \global\row@\@ne + \halign to\displaywidth\bgroup + \strut@ + \setboxz@h{$\m@th\displaystyle{##}$}% + \calc@shift@gather + \set@gather@field + \tabskip\@centering + &\setboxz@h{\strut@{##}}% + \place@tag@gather + \tabskip \iftagsleft@ \gdisplaywidth@ \else \z@skip \span\fi + \crcr + #1% +} +\def\gmeasure@#1{% + \begingroup + \measuring@true + \totwidth@\z@ + \global\let\tag@lengths\@empty + \savecounters@ + \setbox\@ne\vbox{% + \everycr{\noalign{\global\tag@false + \global\let\raise@tag\@empty \global\column@\z@}}% + \let\label\@gobble + \halign{% + \setboxz@h{$\m@th\displaystyle{##}$}% + \ifdim\wdz@>\totwidth@ + \global\totwidth@\wdz@ + \fi + &\setboxz@h{\strut@{##}}% + \savetaglength@ + \crcr + #1% + \math@cr@@@ + }% + }% + \restorecounters@ + \if@fleqn + \global\advance\totwidth@\@mathmargin + \fi + \iftagsleft@ + \ifdim\totwidth@>\displaywidth + \global\let\gdisplaywidth@\totwidth@ + \else + \global\let\gdisplaywidth@\displaywidth + \fi + \fi + \endgroup +} +\def\math@cr@@@gather{% + \ifst@rred\nonumber\fi + &\relax + \make@display@tag + \ifst@rred\else\global\@eqnswtrue\fi + \global\advance\row@\@ne + \cr +} +\def\calc@shift@gather{% + \dimen@\mintagsep\relax + \tagwidth@\tag@width\row@\relax + \if@fleqn + \global\eqnshift@\@mathmargin + \ifdim\tagwidth@>\z@ + \advance\dimen@\tagwidth@ + \iftagsleft@ + \ifdim\dimen@>\@mathmargin + \global\shifttag@true + \fi + \else + \advance\dimen@\@mathmargin + \advance\dimen@\wdz@ + \ifdim\dimen@>\displaywidth + \global\shifttag@true + \fi + \fi + \fi + \else + \global\eqnshift@\displaywidth + \global\advance\eqnshift@-\wdz@ + \ifdim\tagwidth@>\z@ + \multiply\dimen@\tw@ + \advance\dimen@\wdz@ + \advance\dimen@\tagwidth@ + \ifdim\dimen@>\displaywidth + \global\shifttag@true + \else + \ifdim\eqnshift@<4\tagwidth@ + \global\advance\eqnshift@-\tagwidth@ + \fi + \fi + \fi + \global\divide\eqnshift@\tw@ + \iftagsleft@ + \global\eqnshift@-\eqnshift@ + \global\advance\eqnshift@\displaywidth + \global\advance\eqnshift@-\wdz@ + \fi + \ifdim\eqnshift@<\z@ + \global\eqnshift@\z@ + \fi + \fi +} +\def\place@tag@gather{% + \iftagsleft@ + \kern-\gdisplaywidth@ + \ifshifttag@ + \rlap{\vbox{% + \normalbaselines + \boxz@ + \vbox to\lineht@{}% + \raise@tag + }}% + \global\shifttag@false + \else + \rlap{\boxz@}% + \fi + \else + \ifdim\totwidth@>\displaywidth + \dimen@\totwidth@ + \advance\dimen@-\displaywidth + \kern-\dimen@ + \fi + \ifshifttag@ + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \boxz@ + }}% + \global\shifttag@false + \else + \llap{\boxz@}% + \fi + \fi +} +\def\set@gather@field{% + \iftagsleft@ + \global\lineht@\ht\z@ + \else + \global\lineht@\dp\z@ + \fi + \kern\eqnshift@ + \boxz@ + \hfil +} +\newif\ifxxat@ + +\newif\ifcheckat@ + +\let\xatlevel@\@empty +\def\start@align#1#2#3{% + \let\xatlevel@#1% always \z@, \@ne, or \tw@ + \maxfields@#3\relax + \ifnum\maxfields@>\m@ne + \checkat@true + \ifnum\xatlevel@=\tw@ + \xxat@true + \fi + \multiply\maxfields@\tw@ + \else + \checkat@false + \fi + \ifingather@ + \iffalse{\fi\ifnum0=`}\fi + \DN@{\vcenter\bgroup\savealignstate@\align@#2}% + \else + \ifmmode + \if@display + \DN@{\align@recover}% + \else + \nomath@env + \DN@{\@namedef{end\@currenvir}{}\@gobble}% + \fi + \else + $$% + \let\split\insplit@ + \DN@{\align@#2}% + \fi + \fi + \collect@body\next@ +} +\def\align@recover#1#2#3{% + \endgroup + \@amsmath@err{% +Erroneous nesting of equation structures;\MessageBreak +trying to recover with `aligned'% + }\@ehc + \begin{aligned}\relax#1\end{aligned}% +} +\newenvironment{alignat}{% + \start@align\z@\st@rredfalse +}{% + \endalign +} +\newenvironment{alignat*}{% + \start@align\z@\st@rredtrue +}{% + \endalign +} +\newenvironment{xalignat}{% + \start@align\@ne\st@rredfalse +}{% + \endalign +} +\newenvironment{xalignat*}{% + \start@align\@ne\st@rredtrue +}{% + \endalign +} +\newenvironment{xxalignat}{% + \start@align\tw@\st@rredtrue +}{% + \endalign +} +\newenvironment{align}{% + \start@align\@ne\st@rredfalse\m@ne +}{% + \math@cr \black@\totwidth@ + \egroup + \ifingather@ + \restorealignstate@ + \egroup + \nonumber + \ifnum0=`{\fi\iffalse}\fi + \else + $$% + \fi + \ignorespacesafterend +} +\newenvironment{align*}{% + \start@align\@ne\st@rredtrue\m@ne +}{% + \endalign +} +\newenvironment{flalign}{% + \start@align\tw@\st@rredfalse\m@ne +}{% + \endalign +} +\newenvironment{flalign*}{% + \start@align\tw@\st@rredtrue\m@ne +}{% + \endalign +} +\def\align@#1#2{% + \inalign@true \intertext@ \Let@ \chardef\dspbrk@context\z@ + \ifingather@\else\displ@y@\fi + \let\math@cr@@@\math@cr@@@align + \ifxxat@\else \let\tag\tag@in@align \fi + \let\label\label@in@display + #1% set st@r + \ifst@rred\else \global\@eqnswtrue \fi + \measure@{#2}% + \global\row@\z@ + \tabskip\eqnshift@ + \halign\bgroup + \span\align@preamble\crcr + #2% +} +\def\math@cr@@@align{% + \ifst@rred\nonumber\fi + \if@eqnsw \global\tag@true \fi + \global\advance\row@\@ne + \add@amps\maxfields@ + \omit + \kern-\alignsep@ + \iftag@ + \setboxz@h{\@lign\strut@{\make@display@tag}}% + \place@tag + \fi + \ifst@rred\else\global\@eqnswtrue\fi + \global\lineht@\z@ + \cr +} +\def\math@cr@@@align@measure{% + &\omit + \global\advance\row@\@ne + \ifst@rred\nonumber\fi + \if@eqnsw \global\tag@true \fi + \ifnum\column@>\maxfields@ + \ifcheckat@ + \begingroup + \measuring@false + \@amsmath@err{Extra & on this line}% + {\the\andhelp@}% "An extra & here is disastrous" + \endgroup + \else + \global\maxfields@\column@ + \fi + \fi + \setboxz@h{\@lign\strut@{% + \if@eqnsw + \stepcounter{equation}% + \tagform@\theequation + \else + \iftag@\df@tag\fi + \fi + }}% + \savetaglength@ + \ifst@rred\else\global\@eqnswtrue\fi + \cr +} +\let\field@lengths\@empty + +\def\savefieldlength@{% + \begingroup + \let\or\relax + \xdef\field@lengths{% + \field@lengths + \ifnum\column@=0 + \or + \else + ,% + \fi + \the\wdz@ + }% + \endgroup +} + +\def\fieldlengths@#1{% + \ifcase\@xp#1\field@lengths\fi +} +\let\maxcolumn@widths\@empty +\def\maxcol@width#1{% + \ifcase\@xp#1\maxcolumn@widths\fi\relax +} +\def\measure@#1{% + \begingroup + \measuring@true + \global\eqnshift@\z@ + \global\alignsep@\z@ + \global\let\tag@lengths\@empty + \global\let\field@lengths\@empty + \savecounters@ + \global\setbox0\vbox{% + \let\math@cr@@@\math@cr@@@align@measure + \everycr{\noalign{\global\tag@false + \global\let\raise@tag\@empty \global\column@\z@}}% + \let\label\@gobble + \global\row@\z@ + \tabskip\z@ + \halign{\span\align@preamble\crcr + #1% + \math@cr@@@ + \global\column@\z@ + \add@amps\maxfields@\cr + }% + }% + \restorecounters@ + \ifodd\maxfields@ + \global\advance\maxfields@\@ne + \fi + \ifnum\xatlevel@=\tw@ + \ifnum\maxfields@<\thr@@ + \let\xatlevel@\z@ + \fi + \fi + \setbox\z@\vbox{% + \unvbox\z@ \unpenalty \global\setbox\@ne\lastbox + }% + \global\totwidth@\wd\@ne + \if@fleqn \global\advance\totwidth@\@mathmargin \fi + \global\let\maxcolumn@widths\@empty + \begingroup + \let\or\relax + \loop + \global\setbox\@ne\hbox{% + \unhbox\@ne \unskip \global\setbox\thr@@\lastbox + }% + \ifhbox\thr@@ + \xdef\maxcolumn@widths{ \or \the\wd\thr@@ \maxcolumn@widths}% + \repeat + \endgroup + \dimen@\displaywidth + \advance\dimen@-\totwidth@ + \ifcase\xatlevel@ + \global\alignsep@\z@ + \let\minalignsep\z@ + \@tempcntb\z@ + \if@fleqn + \@tempcnta\@ne + \global\eqnshift@\@mathmargin + \else + \@tempcnta\tw@ + \global\eqnshift@\dimen@ + \global\divide\eqnshift@\@tempcnta + \fi + \or + \@tempcntb\maxfields@ + \divide\@tempcntb\tw@ + \@tempcnta\@tempcntb + \advance\@tempcntb\m@ne + \if@fleqn + \global\eqnshift@\@mathmargin + \global\alignsep@\dimen@ + \global\divide\alignsep@\@tempcnta + \else + \global\advance\@tempcnta\@ne + \global\eqnshift@\dimen@ + \global\divide\eqnshift@\@tempcnta + \global\alignsep@\eqnshift@ + \fi + \or + \@tempcntb\maxfields@ + \divide\@tempcntb\tw@ + \global\advance\@tempcntb\m@ne + \global\@tempcnta\@tempcntb + \global\eqnshift@\z@ + \global\alignsep@\dimen@ + \if@fleqn + \global\advance\alignsep@\@mathmargin\relax + \fi + \global\divide\alignsep@\@tempcntb + \fi + \ifdim\alignsep@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \ifdim\eqnshift@>\z@ + \if@fleqn\else + \global\eqnshift@\displaywidth + \global\advance\eqnshift@-\totwidth@ + \global\advance\eqnshift@-\@tempcntb\alignsep@ + \global\divide\eqnshift@\tw@ + \fi + \fi + \fi + \ifdim\eqnshift@<\z@ + \global\eqnshift@\z@ + \fi + \calc@shift@align + \global\tagshift@\totwidth@ + \global\advance\tagshift@\@tempcntb\alignsep@ + \if@fleqn + \ifnum\xatlevel@=\tw@ + \global\advance\tagshift@-\@mathmargin\relax + \fi + \else + \global\advance\tagshift@\eqnshift@ + \fi + \iftagsleft@ \else + \global\advance\tagshift@-\displaywidth + \fi + \dimen@\minalignsep\relax + \global\advance\totwidth@\@tempcntb\dimen@ + \ifdim\totwidth@>\displaywidth + \global\let\displaywidth@\totwidth@ + \else + \global\let\displaywidth@\displaywidth + \fi + \endgroup +} +\iftagsleft@\if@fleqn + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup + \@tempdima\@mathmargin\relax + \advance\@tempdima-\mintagsep\relax + \loop + \ifnum\row@>0 + \ifdim\tag@width\row@>\z@ + \x@calc@shift@lf + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } + \def\x@calc@shift@lf{% + \ifdim\eqnshift@=\z@ + \global\eqnshift@\@mathmargin\relax + \alignsep@\displaywidth + \advance\alignsep@-\totwidth@ + \global\divide\alignsep@\@tempcntb + \ifdim\alignsep@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \fi + \fi + \ifdim\tag@width\row@>\@tempdima + \saveshift@1% + \else + \saveshift@0% + \fi + } +\fi\fi +\iftagsleft@\else\if@fleqn + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup + \loop + \ifnum\row@>0 + \ifdim\tag@width\row@>\z@ + \x@calc@shift@rf + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } + \def\x@calc@shift@rf{% + \column@\z@ + \@tempdimb\z@ + \@tempdimc\z@ + \edef\@tempb{\fieldlengths@\row@}% + \@for\@tempa:=\@tempb\do{% + \advance\column@\@ne + \x@rcalc@width + }% + \begingroup + \advance\column@\m@ne + \divide\column@\tw@ + \ifnum\@tempcntb>\column@ + \advance\@tempcnta-\@tempcntb + \advance\@tempcnta\column@ + \@tempcntb\column@ + \fi + \tagwidth@\tag@width\row@\relax + \@tempdima\eqnshift@ + \advance\@tempdima\@tempdimc\relax + \advance\@tempdima\tagwidth@ + \dimen@\minalignsep\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\mintagsep\relax + \advance\dimen@\@tempdima + \ifdim\dimen@>\displaywidth + \saveshift@1% + \else + \saveshift@0% + \dimen@\alignsep@\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\@tempdima + \advance\dimen@\tagwidth@ + \ifdim\dimen@>\displaywidth + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \ifnum\xatlevel@=\tw@ + \advance\dimen@-\mintagsep\relax + \fi + \divide\dimen@\@tempcnta + \ifdim\dimen@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \else + \global\alignsep@\dimen@ + \fi + \fi + \fi + \endgroup + } +\fi\fi +\iftagsleft@\else\if@fleqn\else + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup + \loop + \ifnum\row@>0 + \ifdim\tag@width\row@>\z@ + \x@calc@shift@rc + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } + \def\x@calc@shift@rc{% + \column@\z@ + \@tempdimb\z@ + \@tempdimc\z@ + \edef\@tempb{\fieldlengths@\row@}% + \@for\@tempa:=\@tempb\do{% + \advance\column@\@ne + \x@rcalc@width + }% + \begingroup + \advance\column@\m@ne + \divide\column@\tw@ + \ifnum\@tempcntb>\column@ + \advance\@tempcnta-\@tempcntb + \advance\@tempcnta\column@ + \@tempcntb\column@ + \fi + \tagwidth@\tag@width\row@\relax + \@tempdima\@tempdimc + \advance\@tempdima\tagwidth@ + \dimen@\minalignsep\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\mintagsep\relax + \ifnum\xatlevel@=\tw@ \else + \advance\dimen@\mintagsep\relax + \fi + \advance\dimen@\@tempdima + \ifdim\dimen@>\displaywidth + \saveshift@1% + \else + \saveshift@0% + \dimen@\eqnshift@ + \advance\dimen@\@tempdima + \advance\dimen@\@tempcntb\alignsep@ + \advance\dimen@\tagwidth@ + \ifdim\dimen@>\displaywidth + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \ifnum\xatlevel@=\tw@ + \advance\dimen@-\mintagsep\relax + \fi + \divide\dimen@\@tempcnta + \ifdim\dimen@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \eqnshift@\displaywidth + \advance\eqnshift@-\@tempdima + \advance\eqnshift@-\@tempcntb\alignsep@ + \global\divide\eqnshift@\tw@ + \else + \ifdim\dimen@<\eqnshift@ + \ifdim\dimen@<\z@ + \global\eqnshift@\z@ + \else + \global\eqnshift@\dimen@ + \fi + \fi + \ifdim\dimen@<\alignsep@ + \global\alignsep@\dimen@ + \fi + \fi + \fi + \fi + \endgroup + } +\fi\fi +\iftagsleft@\else + \def\x@rcalc@width{% + \ifdim\@tempa > \z@ + \advance\@tempdimc\@tempdimb + \ifodd\column@ + \advance\@tempdimc\maxcol@width\column@ + \@tempdimb\z@ + \else + \advance\@tempdimc\@tempa\relax + \@tempdimb\maxcol@width\column@ + \advance\@tempdimb-\@tempa\relax + \fi + \else + \advance\@tempdimb\maxcol@width\column@\relax + \fi + } +\fi +\iftagsleft@\if@fleqn\else + \def\calc@shift@align{% + \global\let\tag@shifts\@empty + \begingroup + \loop + \ifnum\row@>\z@ + \ifdim\tag@width\row@>\z@ + \x@calc@shift@lc + \else + \saveshift@0% + \fi + \advance\row@\m@ne + \repeat + \endgroup + } + \def\x@calc@shift@lc{% + \column@\z@ + \@tempdima\z@ % ``width of equation'' + \@tempdimb\z@ % ``indent of equation'' + \edef\@tempb{\fieldlengths@\row@}% + \@for\@tempa:=\@tempb\do{% + \advance\column@\@ne + \x@lcalc@width + }% + \begingroup + \tagwidth@\tag@width\row@\relax + \@tempdima\totwidth@ + \advance\@tempdima-\@tempdimb + \advance\@tempdima\tagwidth@ + \dimen@\minalignsep\relax + \multiply\dimen@\@tempcntb + \advance\dimen@\mintagsep\relax + \ifnum\xatlevel@=\tw@ \else + \advance\dimen@\mintagsep\relax + \fi + \advance\dimen@\@tempdima + \ifdim\dimen@>\displaywidth + \saveshift@1% + \else + \saveshift@0% + \dimen@\alignsep@ + \multiply\dimen@\count@ + \advance\dimen@\eqnshift@ + \advance\dimen@\@tempdimb + \ifdim\dimen@<2\tagwidth@ + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \ifnum\xatlevel@=\tw@ + \advance\dimen@-\mintagsep\relax + \fi + \ifnum\@tempcnta>\z@ + \divide\dimen@\@tempcnta + \else \dimen@\z@ + \fi + \ifdim\dimen@<\minalignsep\relax + \global\alignsep@\minalignsep\relax + \dimen@\displaywidth + \advance\dimen@-\@tempdima + \advance\dimen@-\@tempcntb\alignsep@ + \global\divide\dimen@\tw@ + \else + \ifdim\dimen@<\alignsep@ + \global\alignsep@\dimen@ + \fi + \fi + \ifnum\xatlevel@=\tw@ + \dimen@\mintagsep\relax + \fi + \advance\dimen@\tagwidth@ + \advance\dimen@-\@tempdimb + \advance\dimen@-\count@\alignsep@ + \ifdim\dimen@>\eqnshift@ + \global\eqnshift@\dimen@ + \fi + \fi + \fi + \endgroup + } + \def\x@lcalc@width{% + \ifdim\@tempdima = \z@ + \ifdim\@tempa > \z@ + \@tempdima\p@ + \ifodd\column@ + \advance\@tempdimb \maxcol@width\column@ + \advance\@tempdimb-\@tempa + \fi + \count@\column@ + \advance\count@\m@ne + \divide\count@\tw@ + \advance\@tempcnta-\count@ + \advance\@tempcntb-\count@ + \else + \advance\@tempdimb \maxcol@width\column@\relax + \fi + \fi + } +\fi\fi +\def\place@tag{% + \iftagsleft@ + \kern-\tagshift@ + \if1\shift@tag\row@\relax + \rlap{\vbox{% + \normalbaselines + \boxz@ + \vbox to\lineht@{}% + \raise@tag + }}% + \else + \rlap{\boxz@}% + \fi + \kern\displaywidth@ + \else + \kern-\tagshift@ + \if1\shift@tag\row@\relax + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \boxz@ + }}% + \else + \llap{\boxz@}% + \fi + \fi +} +\def\align@preamble{% + &\hfil + \strut@ + \setboxz@h{\@lign$\m@th\displaystyle{##}$}% + \ifmeasuring@\savefieldlength@\fi + \set@field + \tabskip\z@skip + &\setboxz@h{\@lign$\m@th\displaystyle{{}##}$}% + \ifmeasuring@\savefieldlength@\fi + \set@field + \hfil + \tabskip\alignsep@ +} +\def\set@field{% + \column@plus + \iftagsleft@ + \ifdim\ht\z@>\lineht@ + \global\lineht@\ht\z@ + \fi + \else + \ifdim\dp\z@>\lineht@ + \global\lineht@\dp\z@ + \fi + \fi + \boxz@ +} +\edef\split@err#1{% + \@nx\@amsmath@err{% + \string\begin{split} won't work here% + }{% + \@xp\@nx\csname + Did you forget a preceding \string\begin{equation}?^^J% + If not, perhaps the `aligned' environment is what + you want.\endcsname}% +} +\newenvironment{split}{% + \if@display + \ifinner + \@xp\@xp\@xp\split@aligned + \else + \ifst@rred \else \global\@eqnswtrue \fi + \fi + \else \let\endsplit\@empty \@xp\collect@body\@xp\split@err + \fi + \collect@body\gather@split +}{% + \crcr + \egroup + \egroup + \iftagsleft@ \@xp\lendsplit@ \else \@xp\rendsplit@ \fi +} +\let\split@tag\relax % init +\def\gather@split#1#2#3{% + \@xp\endgroup \reset@equation % math@cr will handle equation numbering + \iftag@ + \toks@\@xp{\df@tag}% + \edef\split@tag{% + \gdef\@nx\df@tag{\the\toks@}% + \global\@nx\tag@true \@nx\nonumber + }% + \else \let\split@tag\@empty + \fi + \spread@equation + \vcenter\bgroup + \gather@{\split@tag \begin{split}#1\end{split}}% + \def\endmathdisplay@a{% + \math@cr \black@ \totwidth@ \egroup + \egroup + }% +} +\def\insplit@{% + \global\setbox\z@\vbox\bgroup + \Let@ \chardef\dspbrk@context\@ne \restore@math@cr + \default@tag % disallow use of \tag here + \ialign\bgroup + \hfil + \strut@ + $\m@th\displaystyle{##}$% + &$\m@th\displaystyle{{}##}$% + \hfill % Why not \hfil?---dmj, 1994/12/28 + \crcr +} +\def\rendsplit@{% + \ifinalign@ + \global\setbox9 \vtop{% + \unvcopy\z@ + \global\setbox8 \lastbox + \unskip + }% + \setbox\@ne\hbox{% + \unhcopy8 + \unskip + \global\setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \ifctagsplit@ + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}% + }% + \else + \global\setbox7 \hbox{\unhbox\tw@\unskip}% + \gdef\split@{% + \global\@tempcnta\column@ + &\setboxz@h{}% + \savetaglength@ + \global\advance\row@\@ne + \vbox{\moveleft\wd\thr@@\box9}% + \crcr + \noalign{\global\lineht@\z@}% + \add@amps\@tempcnta + \box\thr@@ + &\box7 + }% + \fi + \else + \ifctagsplit@ + \gdef\split@{\vcenter{\boxz@}}% + \else + \gdef\split@{% + \boxz@ + }% + \fi + \fi + \aftergroup\split@ +} +\def\lendsplit@{% + \global\setbox9\vtop{\unvcopy\z@}% + \ifinalign@ + \setbox\@ne\vbox{% + \unvcopy\z@ + \global\setbox8\lastbox + }% + \setbox\@ne\hbox{% + \unhcopy8% + \unskip + \setbox\tw@\lastbox + \unskip + \global\setbox\thr@@\lastbox + }% + \ifctagsplit@ + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vcenter{\vbox{\moveleft\wd\thr@@\box9}}% + }% + \else + \gdef\split@{% + \hbox to\wd\thr@@{}% + &\vbox{\moveleft\wd\thr@@\box9}% + }% + \fi + \else + \ifctagsplit@ + \gdef\split@{\vcenter{\box9}}% + \else + \gdef\split@{\box9}% + \fi + \fi + \aftergroup\split@ +} +\def\split@aligned#1#2{% + \iffalse{\fi\ifnum0=`}\fi + \collect@body\split@al@a} +\def\split@al@a#1#2#3{% + \split@warning + \endgroup + \toks@{\begin{aligned}}% + \if@fleqn \split@al@tagcheck \fi + \the\toks@\relax#1\end{aligned}% + \ifnum0=`{\fi\iffalse}\fi +} +\def\split@al@tagcheck{% + \ifctagsplit@ + \else + \iftagsleft@ \toks@\@xp{\the\toks@ [t]}% + \else \toks@\@xp{\the\toks@ [b]}% + \fi + \fi +} +\def\split@warning{% + \PackageWarning{amsmath}{% +Cannot use `split' here;\MessageBreak trying to recover with `aligned'}% +} +\newskip\multlinegap +\multlinegap10pt +\newskip\multlinetaggap +\multlinetaggap10pt +\def\start@multline#1{% + \RIfM@ + \nomath@env + \DN@{\@namedef{end\@currenvir}{}\@gobble}% + \else + $$% + #1% + \ifst@rred + \nonumber + \else + \global\@eqnswtrue + \fi + \let\next@\multline@ + \fi + \collect@body\next@ +} +\newenvironment{multline}{% + \start@multline\st@rredfalse +}{% + \iftagsleft@ \@xp\lendmultline@ \else \@xp\rendmultline@ \fi + \ignorespacesafterend +} +\newenvironment{multline*}{\start@multline\st@rredtrue}{\endmultline} +\def\multline@#1{% + \Let@ + \@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}% + \chardef\dspbrk@context\z@ + \restore@math@cr + \let\tag\tag@in@align + \global\tag@false \global\let\raise@tag\@empty + \mmeasure@{#1}% + \let\tag\gobble@tag \let\label\@gobble + \tabskip \if@fleqn \@mathmargin \else \z@skip \fi + \totwidth@\displaywidth + \if@fleqn + \advance\totwidth@-\@mathmargin + \fi + \halign\bgroup + \hbox to\totwidth@{% + \if@fleqn + \hskip \@centering \relax + \else + \hfil + \fi + \strut@ + $\m@th\displaystyle{}##\endmultline@math + \hfil + }% + \crcr + \if@fleqn + \hskip-\@mathmargin + \def\multline@indent{\hskip\@mathmargin}% put it back + \else + \hfilneg + \def\multline@indent{\hskip\multlinegap}% + \fi + \iftagsleft@ + \iftag@ + \begingroup + \ifshifttag@ + \rlap{\vbox{% + \normalbaselines + \hbox{% + \strut@ + \make@display@tag + }% + \vbox to\lineht@{}% + \raise@tag + }}% + \multline@indent + \else + \setbox\z@\hbox{\make@display@tag}% + \dimen@\@mathmargin \advance\dimen@-\wd\z@ + \ifdim\dimen@<\multlinetaggap + \dimen@\multlinetaggap + \fi + \box\z@ \hskip\dimen@\relax + \fi + \endgroup + \else + \multline@indent + \fi + \else + \multline@indent + \fi + #1% +} +\def\endmultline@math{$} +\def\lendmultline@{% + \hfilneg + \hskip\multlinegap + \math@cr + \egroup + $$% +} +\def\rendmultline@{% + \iftag@ + $\let\endmultline@math\relax + \ifshifttag@ + \hskip\multlinegap + \llap{\vtop{% + \raise@tag + \normalbaselines + \setbox\@ne\null + \dp\@ne\lineht@ + \box\@ne + \hbox{\strut@\make@display@tag}% + }}% + \else + \hskip\multlinetaggap + \make@display@tag + \fi + \else + \hskip\multlinegap + \fi + \hfilneg + \math@cr + \egroup$$% +} +\def\mmeasure@#1{% + \begingroup + \measuring@true + \def\label##1{% + \begingroup\measuring@false\label@in@display{##1}\endgroup}% + \def\math@cr@@@{\cr}% + \let\shoveleft\@iden \let\shoveright\@iden + \savecounters@ + \global\row@\z@ + \setbox\@ne\vbox{% + \global\let\df@tag\@empty + \halign{% + \setboxz@h{\@lign$\m@th\displaystyle{}##$}% + \iftagsleft@ + \ifnum\row@=\@ne + \global\totwidth@\wdz@ + \global\lineht@\ht\z@ + \fi + \else + \global\totwidth@\wdz@ + \global\lineht@\dp\z@ + \fi + \crcr + #1% + \crcr + }% + }% + \ifx\df@tag\@empty\else\global\tag@true\fi + \if@eqnsw\global\tag@true\fi + \iftag@ + \setboxz@h{% + \if@eqnsw + \stepcounter{equation}% + \tagform@\theequation + \else + \df@tag + \fi + }% + \global\tagwidth@\wdz@ + \dimen@\totwidth@ + \advance\dimen@\tagwidth@ + \advance\dimen@\multlinetaggap + \iftagsleft@\else + \if@fleqn + \advance\dimen@\@mathmargin + \fi + \fi + \ifdim\dimen@>\displaywidth + \global\shifttag@true + \else + \global\shifttag@false + \fi + \fi + \restorecounters@ + \endgroup +} +\iftagsleft@ + \def\shoveright#1{% + #1% + \hfilneg + \hskip\multlinegap + } +\else + \def\shoveright#1{% + #1% + \hfilneg + \iftag@ + \ifshifttag@ + \hskip\multlinegap + \else + \hskip\tagwidth@ + \hskip\multlinetaggap + \fi + \else + \hskip\multlinegap + \fi + } +\fi + +\if@fleqn + \def\shoveleft#1{#1}% +\else + \iftagsleft@ + \def\shoveleft#1{% + \setboxz@h{$\m@th\displaystyle{}#1$}% + \setbox\@ne\hbox{$\m@th\displaystyle#1$}% + \hfilneg + \iftag@ + \ifshifttag@ + \hskip\multlinegap + \else + \hskip\tagwidth@ + \hskip\multlinetaggap + \fi + \else + \hskip\multlinegap + \fi + \hskip.5\wd\@ne + \hskip-.5\wdz@ + #1% + } + \else + \def\shoveleft#1{% + \setboxz@h{$\m@th\displaystyle{}#1$}% + \setbox\@ne\hbox{$\m@th\displaystyle#1$}% + \hfilneg + \hskip\multlinegap + \hskip.5\wd\@ne + \hskip-.5\wdz@ + #1% + } + \fi +\fi +\@saveprimitive\leqno\@@leqno +\@saveprimitive\eqno\@@eqno +\def\eqno{\@@eqno\let\eqno\relax\let\leqno\relax} +\def\leqno{\@@leqno\let\leqno\relax\let\eqno\relax} +\let\veqno=\@@eqno +\iftagsleft@ \let\veqno=\@@leqno \fi +\@ifundefined{SK@@label}{% + \let\SK@@label\relax \let\SK@equationtrue\relax +}{} +\let\reset@equation\@empty +\let\alt@tag\@empty +\def\tag@in@display#1#{\relax\tag@in@display@a{#1}} +\def\tag@in@display@a#1#2{% + \iftag@ + \invalid@tag{Multiple \string\tag}\relax + \else + \global\tag@true \nonumber \reset@equation \st@rredtrue + \if *\string#1% + \gdef\alt@tag{\def\SK@tagform@{#2\@gobble}% + \ifx\SK@@label\relax \let\tagform@\SK@tagform@ \fi + }% + \make@df@tag@@{#2}% + \else + \make@df@tag@@@{#2}% + \fi + \fi +} +\let\restore@hfuzz\@empty +\def\mathdisplay#1{% + \ifmmode \@badmath + \else + $$\def\@currenvir{#1}% + \let\dspbrk@context\z@ + \let\tag\tag@in@display \let\label\label@in@display \SK@equationtrue + \global\let\df@label\@empty \global\let\df@tag\@empty + \global\tag@false + \let\mathdisplay@push\mathdisplay@@push + \let\mathdisplay@pop\mathdisplay@@pop + \if@fleqn + \edef\restore@hfuzz{\hfuzz\the\hfuzz\relax}% + \hfuzz\maxdimen + \setbox\z@\hbox to\displaywidth\bgroup + \let\split@warning\relax \restore@hfuzz + \everymath\@emptytoks \m@th $\displaystyle + \fi + \fi +} +\def\endmathdisplay#1{% + \ifmmode \else \@badmath \fi + \endmathdisplay@a + $$% + \global\let\df@label\@empty \global\let\df@tag\@empty + \global\tag@false \global\let\alt@tag\@empty + \global\@eqnswfalse +} +\def\endmathdisplay@a{% + \if@eqnsw \gdef\df@tag{\tagform@\theequation}\fi + \if@fleqn \@xp\endmathdisplay@fleqn + \else \ifx\df@tag\@empty \else \veqno \alt@tag \df@tag \fi + \ifx\df@label\@empty \else \@xp\ltx@label\@xp{\df@label}\fi + \fi + \ifnum\dspbrk@lvl>\m@ne + \postdisplaypenalty -\@getpen\dspbrk@lvl + \global\dspbrk@lvl\m@ne + \fi +} +\let\too@wide\@ne +\def\endmathdisplay@fleqn{% + $\hfil\hskip\@mathmargin\egroup + \ifnum\badness<\inf@bad \let\too@wide\@ne \else \let\too@wide\z@ \fi + \ifx\@empty\df@tag + \else + \setbox4\hbox{\df@tag + \ifx\df@label\@empty \else \@xp\ltx@label\@xp{\df@label}\fi + }% + \fi + \csname emdf@% + \ifx\df@tag\@empty U\else \iftagsleft@ L\else R\fi\fi + \endcsname +} +\def\emdf@U{% + \restore@hfuzz + \ifodd\too@wide % not too wide: just need to swap the glue around + \hbox to\displaywidth{\hskip\@mathmargin\unhbox\z@\unskip}% + \else % M+B > displaywidth + \emdf@Ua + \fi +} +\def\emdf@Ua{% + \hbox to\columnwidth{% + \ifdim\displayindent>\z@ + \hskip\displayindent minus\displayindent + \fi + \hskip\@mathmargin \unhbox\z@ \unskip + }% + \displayindent\z@ \displaywidth\columnwidth +} +\def\emdf@R{% + \setbox\tw@\hbox to\displaywidth{% + \hskip\@mathmargin \unhcopy\z@\unskip\hfil\hskip\mintagsep\copy4 + }% + \restore@hfuzz + \ifnum\badness<\inf@bad \box\tw@ \else \emdf@Ra \fi +} +\def\emdf@Ra{% + \skip@\displayindent minus\displayindent + \displayindent\z@ \displaywidth\columnwidth + \spread@equation \everycr{}\tabskip\z@skip + \halign{\hbox to\displaywidth{##}\cr + \relax + \ifdim\skip@>\z@ \hskip\skip@ \fi + \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr + \noalign{\raise@tag}% + \hfil\box4 \cr}% +} +\def\emdf@L{% + \@tempdima\@mathmargin + \advance\@tempdima-\wd4 \advance\@tempdima-\mintagsep + \skip@\@tempdima minus\@tempdima + \setbox\tw@\hbox to\displaywidth{% + \copy4\hskip\mintagsep + \ifdim\skip@>\z@ \hskip\skip@\fi + \unhcopy\z@\unskip + }% + \restore@hfuzz + \ifnum\badness<\inf@bad \box\tw@ \else \emdf@La \fi +} +\def\emdf@La{% + \spread@equation \everycr{}\tabskip\z@skip + \halign{\hbox to\displaywidth{##}\cr + \box4 \hfil \cr + \noalign{\raise@tag}% + \hskip\@mathmargin\unhbox\z@\unskip\hfil\cr}% +} +\newtoks\mathdisplay@stack +\let\mathdisplay@push\@empty +\def\mathdisplay@@push{% + \begingroup + \toks@\@xp{\df@label}\@temptokena\@xp{\df@tag}% + \toks8\@xp{\alt@tag}% + \edef\@tempa{% + \global\if@eqnsw\@nx\@eqnswtrue\else\@nx\@eqnswfalse\fi + \global\iftag@\@nx\tag@false\else\@nx\tag@true\fi + \gdef\@nx\df@label{\the\toks@}\gdef\@nx\df@tag{\the\@temptokena}% + \gdef\@nx\alt@tag{\the\toks8}% + \global\mathdisplay@stack{\the\mathdisplay@stack}% + }% + \global\mathdisplay@stack\@xp{\@tempa} + \endgroup +} +\let\mathdisplay@pop\@empty +\def\mathdisplay@@pop{\the\mathdisplay@stack} +\renewenvironment{equation}{% + \incr@eqnum + \mathdisplay@push + \st@rredfalse \global\@eqnswtrue + \mathdisplay{equation}% +}{% + \endmathdisplay{equation}% + \mathdisplay@pop + \ignorespacesafterend +} +\newenvironment{equation*}{% + \mathdisplay@push + \st@rredtrue \global\@eqnswfalse + \mathdisplay{equation*}% +}{% + \endmathdisplay{equation*}% + \mathdisplay@pop + \ignorespacesafterend +} +\DeclareRobustCommand{\[}{\begin{equation*}} +\DeclareRobustCommand{\]}{\end{equation*}} +\endinput +%% +%% End of file `amsmath.sty'. diff --git a/Master/texmf-dist/tex/latex/amsmath/amsopn.sty b/Master/texmf-dist/tex/latex/amsmath/amsopn.sty new file mode 100644 index 00000000000..76580233765 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amsopn.sty @@ -0,0 +1,132 @@ +%% +%% This is file `amsopn.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amsopn.dtx +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsopn.dtx", +%%% version = "2.01", +%%% date = "1999/12/14", +%%% time = "17:30:59 EST", +%%% checksum = "46904 254 1037 9431", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "operator name, amsopn, DeclareMathOperator", +%%% supported = "yes", +%%% abstract = "This is a \LaTeX{} package that provides a +%%% DeclareMathOperator command for defining named +%%% operators like sin and lim.", +%%% docstring = "The checksum field above contains a CRC-16 checksum +%%% as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of +%%% lines, words, and characters. This is produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must December 1994 or later +\ProvidesPackage{amsopn}[1999/12/14 v2.01 operator names] +\def\nolimits@{\@ifnextchar\limits{\nolimits\@gobble}{\nolimits}} +\begingroup \catcode`\"=12 +\gdef\newmcodes@{\mathcode`\'39\mathcode`\*42\mathcode`\."613A% + \ifnum\mathcode`\-=45 \else + \mathchardef\std@minus\mathcode`\-\relax + \fi + \mathcode`\-45\mathcode`\/47\mathcode`\:"603A\relax} +\endgroup +\DeclareRobustCommand{\operatorname}{% + \@ifstar{\qopname\newmcodes@ m}% + {\qopname\newmcodes@ o}}% +\DeclareRobustCommand{\qopname}[3]{% + \mathop{#1\kern\z@\operator@font#3}% + \csname n#2limits@\endcsname} +\newcommand{\DeclareMathOperator}{% + \@ifstar{\@declmathop m}{\@declmathop o}} +\long\def\@declmathop#1#2#3{% + \@ifdefinable{#2}{% + \DeclareRobustCommand{#2}{\qopname\newmcodes@#1{#3}}}} +\@onlypreamble\DeclareMathOperator +\@onlypreamble\@declmathop +\def\arccos{\qopname\relax o{arccos}} +\def\arcsin{\qopname\relax o{arcsin}} +\def\arctan{\qopname\relax o{arctan}} +\def\arg{\qopname\relax o{arg}} +\def\cos{\qopname\relax o{cos}} +\def\cosh{\qopname\relax o{cosh}} +\def\cot{\qopname\relax o{cot}} +\def\coth{\qopname\relax o{coth}} +\def\csc{\qopname\relax o{csc}} +\def\deg{\qopname\relax o{deg}} +\def\det{\qopname\relax m{det}} +\def\dim{\qopname\relax o{dim}} +\def\exp{\qopname\relax o{exp}} +\def\gcd{\qopname\relax m{gcd}} +\def\hom{\qopname\relax o{hom}} +\def\inf{\qopname\relax m{inf}} +\def\injlim{\qopname\relax m{inj\,lim}} +\def\ker{\qopname\relax o{ker}} +\def\lg{\qopname\relax o{lg}} +\def\lim{\qopname\relax m{lim}} +\def\liminf{\qopname\relax m{lim\,inf}} +\def\limsup{\qopname\relax m{lim\,sup}} +\def\ln{\qopname\relax o{ln}} +\def\log{\qopname\relax o{log}} +\def\max{\qopname\relax m{max}} +\def\min{\qopname\relax m{min}} +\def\Pr{\qopname\relax m{Pr}} +\def\projlim{\qopname\relax m{proj\,lim}} +\def\sec{\qopname\relax o{sec}} +\def\sin{\qopname\relax o{sin}} +\def\sinh{\qopname\relax o{sinh}} +\def\sup{\qopname\relax m{sup}} +\def\tan{\qopname\relax o{tan}} +\def\tanh{\qopname\relax o{tanh}} +\def\operator@font{\mathgroup\symoperators} +\def\operatorfont{\operator@font} +\def\operatornamewithlimits{\operatorname*} +\def\varlim@#1#2{% + \vtop{\m@th\ialign{##\cr + \hfil$#1\operator@font lim$\hfil\cr + \noalign{\nointerlineskip\kern1.5\ex@}#2\cr + \noalign{\nointerlineskip\kern-\ex@}\cr}}% +} +\def\varinjlim{% + \mathop{\mathpalette\varlim@{\rightarrowfill@\textstyle}}\nmlimits@ +} +\def\varprojlim{% + \mathop{\mathpalette\varlim@{\leftarrowfill@\textstyle}}\nmlimits@ +} +\def\varliminf{\mathop{\mathpalette\varliminf@{}}\nmlimits@} +\def\varliminf@#1{\@@underline{\vrule\@depth.2\ex@\@width\z@ + \hbox{$#1\m@th\operator@font lim$}}} +\def\varlimsup{\mathop{\mathpalette\varlimsup@{}}\nmlimits@} +\def\varlimsup@#1{\@@overline{\hbox{$#1\m@th\operator@font lim$}}} +\let\nmlimits@\displaylimits +\DeclareOption{namelimits}{\let\nmlimits@\displaylimits} +\DeclareOption{nonamelimits}{\let\nmlimits@\nolimits} +\ProcessOptions\relax +\RequirePackage{amsgen}\relax +\endinput +%% +%% End of file `amsopn.sty'. diff --git a/Master/texmf-dist/tex/latex/amsmath/amstex.sty b/Master/texmf-dist/tex/latex/amsmath/amstex.sty new file mode 100644 index 00000000000..f67435c5829 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amstex.sty @@ -0,0 +1,2043 @@ +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amstex.sty", +%%% version = "1.2f", +%%% date = "1999/11/15", +%%% time = "14:07:07 EST", +%%% checksum = "05218 2043 3020 71018", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@math.ams.org (Internet)", +%%% keywords = "latex, amslatex, ams-latex, math, amstex, ams-tex", +%%% supported = "yes", +%%% abstract = "This package provides a variety of extra +%%% mathematical features, largely derived from +%%% AMS-\TeX{}. It was superseded in 1995 by the +%%% amsmath package.", +%%% docstring = "The checksum field above contains a CRC-16 checksum +%%% as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of +%%% lines, words, and characters. This is produced by +%%% Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +% This file was generated from version 1.2beta of amstex.dtx and then +% underwent additional hand-editing. +\if@compatibility \else \catcode`\%=9 \fi +%\PackageError{amstex}{% +%Package `amstex' is obsolete, substituting `amsmath'}{You +%should use \string\usepackage{amsmath} instead. If +%that does not give satisfactory results, rename your previous copy +%of amstex.sty to amstex12beta.sty and call it with +%\string\usepackage{amstex12beta}.} +%\catcode`\%=14 \relax \input{amsmath.sty}\endinput +% +\ProvidesPackage{amstex}[1999/11/15 v1.2f AMS extra math features] +\let\@amsfonts=T +\DeclareOption{noamsfonts}{\let\@amsfonts=F} +\DeclareOption{psamsfonts}{\let\@amsfonts=P} +\DeclareOption{intlimits}{\let\ilimits@\displaylimits} +\DeclareOption{nointlimits}{\let\ilimits@\nolimits} +\DeclareOption{sumlimits}{\let\slimits@\displaylimits} +\DeclareOption{nosumlimits}{\let\slimits@\nolimits} +\DeclareOption{namelimits}{\let\nlimits@\displaylimits} +\DeclareOption{nonamelimits}{\let\nlimits@\nolimits} +\newif\ifctagsplit@ +\newif\iftagsleft@ +\DeclareOption{leqno}{\tagsleft@true} +\DeclareOption{reqno}{\tagsleft@false} +\DeclareOption{centertags}{\ctagsplit@true} +\DeclareOption{tbtags}{\ctagsplit@false} +\newif\if@fleqn +\newskip\@mathmargin +\@mathmargin\@centering +\DeclareOption{fleqn}{% + \@fleqntrue + \@mathmargin\m@ne sp + \AtBeginDocument{% + \ifdim\@mathmargin=\m@ne sp + \@mathmargin\leftmargini + \fi + }% +} +\DeclareOption{righttag}{\tagsleft@false} +\DeclareOption{ctagsplt}{\ctagsplit@true} +\DeclareOption{intlim}{\let\ilimits@\displaylimits} +\DeclareOption{nosumlim}{\let\slimits@\nolimits} +\DeclareOption{nonamelm}{\let\nlimits@\nolimits} +\ExecuteOptions{nointlimits,sumlimits,namelimits,centertags} +\ProcessOptions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% In this section \RequirePackage statements were replaced with the +%% contents of the referenced files. +%%% filename = "amsgen.dtx", +%%% version = "1.2beta", +%%% date = "1994/12/13", +\providecommand{\@saveprimitive}[2]{\begingroup\escapechar`\\\relax + \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}% + \ifx\@tempa\@tempb \global\let#2#1% + \else + \edef\@tempb{\meaning#2}% + \ifx\@tempa\@tempb + \else + \@latex@error{Unable to properly define \string#2; primitive + \noexpand#1no longer primitive}\@eha + \fi + \fi + \endgroup} +\let\@xp=\expandafter +\let\@nx=\noexpand +\newtoks\@emptytoks +\def\@oparg#1[#2]{\@ifnextchar[{#1}{#1[#2]}} +\def\@ifempty#1{\@xifempty#1@@..\@nil} +\long\def\@xifempty#1#2@#3#4#5\@nil{% + \ifx#3#4\@xp\@firstoftwo\else\@xp\@secondoftwo\fi} +\long\def\@ifnotempty#1{\@ifempty{#1}{}} +\def\FN@{\futurelet\@let@token} +\def\DN@{\def\next@} +\def\RIfM@{\relax\ifmmode} +\def\setboxz@h{\setbox\z@\hbox} +\def\wdz@{\wd\z@} +\def\boxz@{\box\z@} +\def\relaxnext@{\let\@let@token\relax} +\def\new@ifnextchar#1#2#3{% + \let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}\futurelet + \@tempc\new@ifnch} +\def\new@ifnch{\ifx\@tempc \@tempe \let\@tempd\@tempa + \else\let\@tempd\@tempb\fi\@tempd} +\def\new@ifstar#1#2{\new@ifnextchar *{\def\@tempa*{#1}\@tempa}{#2}} +\@ifundefined{every@math@size}{% +\let\every@math@size=\every@size +\def\glb@settings{% + \expandafter\ifx\csname S@\f@size\endcsname\relax + \calculate@math@sizes + \fi + \csname S@\f@size\endcsname + \ifmath@fonts + \begingroup + \escapechar\m@ne + \csname mv@\math@version \endcsname + \globaldefs\@ne + \let \glb@currsize \f@size + \math@fonts + \endgroup + \the\every@math@size + \else + \fi +} +\def\set@fontsize#1#2#3{% + \@defaultunits\@tempdimb#2pt\relax\@nnil + \edef\f@size{\strip@pt\@tempdimb}% + \@defaultunits\@tempskipa#3pt\relax\@nnil + \edef\f@baselineskip{\the\@tempskipa}% + \edef\f@linespread{#1}% + \let\baselinestretch\f@linespread + \def\size@update{% + \baselineskip\f@baselineskip\relax + \baselineskip\f@linespread\baselineskip + \normalbaselineskip\baselineskip + \setbox\strutbox\hbox{% + \vrule\@height.7\baselineskip + \@depth.3\baselineskip + \@width\z@}% +%%% \the\every@size + \let\size@update\relax}% + } +}{}% end \@ifundefined test +\newdimen\ex@ +\addto@hook\every@math@size{\compute@ex@} +\def\compute@ex@{% + \begingroup + \dimen@-\f@size\p@ + \ifdim\dimen@<-20\p@ + \global\ex@ 1.5\p@ + \else + \advance\dimen@10\p@ \multiply\dimen@\tw@ + \edef\@tempa{\ifdim\dimen@>\z@ -\fi}% + \dimen@ \ifdim\dimen@<\z@ -\fi \dimen@ + \advance\dimen@-\@m sp % fudge factor + \vfuzz\p@ + \def\do{\ifdim\dimen@>\z@ + \vfuzz=.97\vfuzz + \advance\dimen@ -\p@ + \@xp\do \fi}% + \do + \dimen@\p@ \advance\dimen@-\vfuzz + \global\ex@\p@ + \global\advance\ex@ \@tempa\dimen@ + \fi + \endgroup +} +\def\@addpunct#1{\ifnum\spacefactor>\@m \else#1\fi} +\def\frenchspacing{\sfcode`\.1006\sfcode`\?1005\sfcode`\!1004% + \sfcode`\:1003\sfcode`\;1002\sfcode`\,1001 } +\def\@mathmeasure#1#2#3{\setbox#1\hbox{\frozen@everymath\@emptytoks + \m@th$#2#3$}} +\def\nomath@env{\PackageError{amstex}{% + \string\begin{\@currenvir} allowed only in paragraph mode% +}\@ehb% "You've lost some text" +} +\def\Invalid@@{Invalid use of \string} +\def\nonmatherr@#1{\PackageError{amsfonts}% + {\noexpand#1allowed only in math mode}\@ehd} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% filename = "amstext.dtx", +%%% version = "1.2beta", +%%% date = "1994/12/13", +\DeclareRobustCommand{\text}{% + \ifmmode\expandafter\text@\else\expandafter\mbox\fi} +\let\nfss@text\text +\def\text@#1{\mathchoice + {\textdef@\displaystyle\f@size{#1}}% + {\textdef@\textstyle\tf@size{\firstchoice@false #1}}% + {\textdef@\textstyle\sf@size{\firstchoice@false #1}}% + {\textdef@\textstyle \ssf@size{\firstchoice@false #1}}% + \check@mathfonts +} +\def\textdef@#1#2#3{\hbox{{% + \everymath{#1}% + \let\f@size#2\selectfont + #3}}} +\newif\iffirstchoice@ +\firstchoice@true +\def\stepcounter#1{% + \iffirstchoice@ + \global\expandafter\advance\csname c@#1\endcsname \@ne + \begingroup + \let\@elt\@stpelt + \csname cl@#1\endcsname + \endgroup + \fi} +\toks@{\iffirstchoice@\else\@xp\@gobblefour\fi\protect} +\edef\GenericInfo{\the\toks@ + \@xp\@nx\csname GenericInfo \endcsname} +\edef\GenericWarning{\the\toks@ + \@xp\@nx\csname GenericWarning \endcsname} +\toks@{\iffirstchoice@\else + \@xp\@xp\@xp\@gobblefour + \@xp\@gobbletwo\fi\protect} +\edef\GenericError{\the\toks@ + \@xp\@nx\csname GenericError \endcsname} +\def\label#1{\@bsphack\iffirstchoice@\if@filesw {\let\thepage\relax + \def\protect{\noexpand\noexpand\noexpand}% +\xdef\@gtempa{\write\@auxout{\string + \newlabel{#1}{{\@currentlabel}{\thepage}}}}}\@gtempa + \if@nobreak \ifvmode\nobreak\fi\fi\fi\fi\@esphack} +\begingroup \catcode`\"=12 +\gdef\mathhexbox#1#2#3{\text{$\m@th\mathchar"#1#2#3$}} +\endgroup +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% filename = "amsfonts.dtx", +%%% version = "1.2beta", +%%% date = "1994/12/13", +\newbox\Mathstrutbox@ +\setbox\Mathstrutbox@=\hbox{} +\def\Mathstrut@{\copy\Mathstrutbox@} +\addto@hook\every@math@size{\setbox\z@\hbox{\normalfont(}% + \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@} +\newbox\strutbox@ +\def\strut@{\copy\strutbox@} +\addto@hook\every@math@size{% + \global\setbox\strutbox@\hbox{\lower.5\normallineskiplimit + \vbox{\kern-\normallineskiplimit\copy\strutbox}}} +\def\big{\bBigg@\@ne} +\def\Big{\bBigg@{1.5}} +\def\bigg{\bBigg@\tw@} +\def\Bigg{\bBigg@{2.5}} +\def\bBigg@#1#2{% + {% + \hbox{$\left#2\vcenter to#1\big@size{}\right.% + \n@space + $}}} +\addto@hook\every@math@size{% + \global\big@size 1.2\ht\Mathstrutbox@ + \global\advance\big@size 1.2\dp\Mathstrutbox@ } +\newdimen\big@size +%% msam, msbm, eufm fonts dealt with at end of file +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% filename = "amsbsy.dtx", +%%% version = "1.2beta", +%%% date = "1994/10/27", +\DeclareRobustCommand{\boldsymbol}[1]{% + \begingroup + \let\@nomath\@gobble \mathversion{bold}% + \math@atom{#1}{% + \mathchoice% + {\hbox{$\m@th\displaystyle#1$}}% + {\hbox{$\m@th\textstyle#1$}}% + {\hbox{$\m@th\scriptstyle#1$}}% + {\hbox{$\m@th\scriptscriptstyle#1$}}}% + \endgroup} +\def\math@atom#1#2{% + \binrel@{#1}\binrel@@{#2}} +\DeclareRobustCommand{\pmb}{% + \ifmmode\else \expandafter\pmb@@\fi\mathpalette\pmb@} +\def\pmb@@#1#2#3{\leavevmode\setboxz@h{#3}% + \dimen@-\wdz@ + \kern-.5\ex@\copy\z@ + \kern\dimen@\kern.25\ex@\raise.4\ex@\copy\z@ + \kern\dimen@\kern.25\ex@\box\z@ +} +\newdimen\pmbraise@ +\def\pmb@#1#2{\setbox8\hbox{$\m@th#1{#2}$}% + \setboxz@h{$\m@th#1\mkern.5mu$}\pmbraise@\wdz@ + \binrel@{#2}% + \dimen@-\wd8 % + \binrel@@{% + \mkern-.8mu\copy8 % + \kern\dimen@\mkern.4mu\raise\pmbraise@\copy8 % + \kern\dimen@\mkern.4mu\box8 }% +} +\def\binrel@#1{\begingroup + \setboxz@h{\thinmuskip0mu + \medmuskip\m@ne mu\thickmuskip\@ne mu + \setbox\tw@\hbox{$#1\m@th$}\kern-\wd\tw@ + ${}#1{}\m@th$}% + \edef\@tempa{\endgroup\let\noexpand\binrel@@ + \ifdim\wdz@<\z@ \mathbin + \else\ifdim\wdz@>\z@ \mathrel + \else \relax\fi\fi}% + \@tempa +} +\let\binrel@@\relax +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\AmSTeX{\protect\AmS-\protect\TeX{}} +\def\AmS{{\protect\AmSfont + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +\def\AmSfont{% + \usefont{OMS}{cmsy}{\if\@xp\@car\f@series\@nil bb\else m\fi}{n}} +\def\prim@s{\prime\futurelet\@let@token\pr@m@s} +\def\pr@m@s{% + \ifx\@let@token'\DN@##1{\prim@s}\else\let\next@\egroup\fi\next@} +\let\@prime=\prime +\renewcommand{\prime}{{\kern\z@\@prime}} +\DeclareRobustCommand{\mspace}[3]{% + \ifmmode\mskip#1#2\else\kern#1#3\fi\relax} +\renewcommand{\,}{\mspace+\thinmuskip{.1667em}} +\let\thinspace\, +\renewcommand{\!}{\mspace-\thinmuskip{.1667em}} +\let\negthinspace\! +\renewcommand{\:}{\mspace+\medmuskip{.2222em}} +\let\medspace\: +\newcommand{\negmedspace}{\mspace-\medmuskip{.2222em}} +\renewcommand{\;}{\mspace+\thickmuskip{.2777em}} +\let\thickspace\; +\newcommand{\negthickspace}{\mspace-\thickmuskip{.2777em}} +\def\implies{\DOTSB\;\Longrightarrow\;} +\def\impliedby{\DOTSB\;\Longleftarrow\;} +\begingroup \catcode`\"=12 % in case activated by a preceding package +\gdef\And{\DOTSB\;\mathchar"3026 \;} +\gdef\lvert{\delimiter"426A30C } +\gdef\rvert{\delimiter"526A30C } +\gdef\lVert{\delimiter"426B30D } +\gdef\rVert{\delimiter"526B30D } +\endgroup % restore " +\DeclareRobustCommand{\frac}{\new@ifnextchar[{\frfrac{}}{\frfrac{}[]}} +\def\frfrac#1[#2]#3#4{\def\next@{#2}% + \ifx\next@\@empty \def\next@{#1{#3\over#4}}% + \else \def\next@{{#1{#3\above#2\relax#4}}}% + \fi + \next@} +\def\dfrac{\protect\frfrac\displaystyle[]} +\def\tfrac{\protect\frfrac\textstyle[]} +\DeclareRobustCommand{\binom}{\frbinom{}} +\def\frbinom#1#2#3{{#1{#2\atopwithdelims()#3}}} +\def\dbinom{\protect\frbinom\displaystyle} +\def\tbinom{\protect\frbinom\textstyle} +\def\colon{\nobreak\mskip2mu\mathpunct{}\nonscript + \mkern-\thinmuskip{:}\mskip6muplus1mu\relax} +\begingroup \catcode`\"=12 +\DeclareMathSymbol{\coprod@}{\mathop}{largesymbols}{"60} +\gdef\coprod{\DOTSB\coprod@\slimits@} +\DeclareMathSymbol{\bigvee@}{\mathop}{largesymbols}{"57} +\gdef\bigvee{\DOTSB\bigvee@\slimits@} +\DeclareMathSymbol{\bigwedge@}{\mathop}{largesymbols}{"56} +\gdef\bigwedge{\DOTSB\bigwedge@\slimits@} +\DeclareMathSymbol{\biguplus@}{\mathop}{largesymbols}{"55} +\gdef\biguplus{\DOTSB\biguplus@\slimits@} +\DeclareMathSymbol{\bigcap@}{\mathop}{largesymbols}{"54} +\gdef\bigcap{\DOTSB\bigcap@\slimits@} +\DeclareMathSymbol{\bigcup@}{\mathop}{largesymbols}{"53} +\gdef\bigcup{\DOTSB\bigcup@\slimits@} +\DeclareMathSymbol{\prod@}{\mathop}{largesymbols}{"51} +\gdef\prod{\DOTSB\prod@\slimits@} +\DeclareMathSymbol{\sum@}{\mathop}{largesymbols}{"50} +\gdef\sum{\DOTSB\sum@\slimits@} +\DeclareMathSymbol{\bigotimes@}{\mathop}{largesymbols}{"4E} +\gdef\bigotimes{\DOTSB\bigotimes@\slimits@} +\DeclareMathSymbol{\bigoplus@}{\mathop}{largesymbols}{"4C} +\gdef\bigoplus{\DOTSB\bigoplus@\slimits@} +\DeclareMathSymbol{\bigodot@}{\mathop}{largesymbols}{"4A} +\gdef\bigodot{\DOTSB\bigodot@\slimits@} +\DeclareMathSymbol{\bigsqcup@}{\mathop}{largesymbols}{"46} +\gdef\bigsqcup{\DOTSB\bigsqcup@\slimits@} +\endgroup +\def\dddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\normalfont ...}\vss}}}} +\def\ddddot#1{{\mathop{#1}\limits^{\vbox to-1.4\ex@{\kern-\tw@\ex@ + \hbox{\normalfont....}\vss}}}} +\def~{\nobreakspace} +\DeclareRobustCommand{\nobreakspace}{\unskip\nobreak\ \ignorespaces} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\if@display +\everydisplay\expandafter{\the\everydisplay \@displaytrue} +\def\int{\DOTSI\intop\ilimits@} +\def\oint{\DOTSI\ointop\ilimits@} +\def\intkern@{\mkern-6mu\mathchoice{\mkern-3mu}{}{}{}} +\def\intdots@{\mathchoice{\@cdots}% + {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}% + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}% + {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}} + +\def\iint{\DOTSI\protect\ints@\tw@} +\def\iiint{\DOTSI\protect\ints@\thr@@} +\def\iiiint{\DOTSI\protect\ints@{4}} +\def\idotsint{\DOTSI\protect\ints@\z@} + +\def\ints@#1{% + \mkern-7mu\mathchoice{\mkern-2mu}{}{}{}% + \mathop{\mkern7mu\mathchoice{\mkern2mu}{}{}{}% + \intop\ifnum#1=\z@\intdots@ + \else\intkern@\fi + \ifnum#1>\tw@\intop\intkern@\fi + \ifnum#1>\thr@@\intop\intkern@\fi + \intop + }\ilimits@ +} +\def\nolimits@{% + \DN@{\nolimits\ifx\@let@token\limits\expandafter\@gobble\fi}% + \FN@\next@} +\begingroup \catcode`\"=12 +\gdef\newmcodes@{\mathcode`\'39\mathcode`\*42\mathcode`\."613A% + \mathcode`\-45\mathcode`\/47\mathcode`\:"603A\relax} +\endgroup +\DeclareRobustCommand{\operatorname}{% + \@ifstar{\qopname\newmcodes@ n}% + {\qopname\newmcodes@{no}}}% +\DeclareRobustCommand{\qopname}[3]{\mathop{#1\kern\z@\operator@font#3}% + \csname #2limits@\endcsname} +\def\arccos{\qopname\relax{no}{arccos}} +\def\arcsin{\qopname\relax{no}{arcsin}} +\def\arctan{\qopname\relax{no}{arctan}} +\def\arg{\qopname\relax{no}{arg}} +\def\cos{\qopname\relax{no}{cos}} +\def\cosh{\qopname\relax{no}{cosh}} +\def\cot{\qopname\relax{no}{cot}} +\def\coth{\qopname\relax{no}{coth}} +\def\csc{\qopname\relax{no}{csc}} +\def\deg{\qopname\relax{no}{deg}} +\def\det{\qopname\relax n{det}} +\def\dim{\qopname\relax{no}{dim}} +\def\exp{\qopname\relax{no}{exp}} +\def\gcd{\qopname\relax n{gcd}} +\def\hom{\qopname\relax{no}{hom}} +\def\inf{\qopname\relax n{inf}} +\def\injlim{\qopname\relax n{inj\,lim}} +\def\ker{\qopname\relax{no}{ker}} +\def\lg{\qopname\relax{no}{lg}} +\def\lim{\qopname\relax n{lim}} +\def\liminf{\qopname\relax n{lim\,inf}} +\def\limsup{\qopname\relax n{lim\,sup}} +\def\ln{\qopname\relax{no}{ln}} +\def\log{\qopname\relax{no}{log}} +\def\max{\qopname\relax n{max}} +\def\min{\qopname\relax n{min}} +\def\Pr{\qopname\relax n{Pr}} +\def\projlim{\qopname\relax n{proj\,lim}} +\def\sec{\qopname\relax{no}{sec}} +\def\sin{\qopname\relax{no}{sin}} +\def\sinh{\qopname\relax{no}{sinh}} +\def\sup{\qopname\relax n{sup}} +\def\tan{\qopname\relax{no}{tan}} +\def\tanh{\qopname\relax{no}{tanh}} +\def\operator@font{\mathgroup\symoperators} +\def\operatornamewithlimits{\operatorname*} +\def\varlim@#1#2{\mathop{\vtop{\ialign{##\crcr + \hfil$#1\m@th\operator@font lim$\hfil\crcr + \noalign{\nointerlineskip\kern\ex@}#2#1\crcr + \noalign{\nointerlineskip\kern-\ex@}\crcr}}}} +\def\varinjlim{\mathpalette\varlim@\rightarrowfill@} +\def\varprojlim{\mathpalette\varlim@\leftarrowfill@} +\def\varliminf{\mathpalette\varliminf@{}} +\def\varliminf@#1{\mathop{\@@underline{\vrule\@depth.2\ex@\@width\z@ + \hbox{$#1\m@th\operator@font lim$}}}} +\def\varlimsup{\mathpalette\varlimsup@{}} +\def\varlimsup@#1{\mathop{\@@overline + {\hbox{$#1\m@th\operator@font lim$}}}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\numberwithin#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}{% + \@ifundefined{c@#2}{\@nocnterr{#2}}{% + \@addtoreset{#1}{#2}% + \toks@\expandafter\expandafter\expandafter{\csname the#1\endcsname}% + \expandafter\xdef\csname the#1\endcsname + {\expandafter\noexpand\csname the#2\endcsname + .\the\toks@}}}} +\def\eqref#1{\textup{\tagform@{\ref{#1}}}} +\def\bmod{\mskip-\medmuskip\mkern5mu\mathbin + {\operator@font mod}\penalty900 + \mkern5mu\mskip-\medmuskip} +\def\pod#1{\allowbreak\if@display\mkern18mu\else\mkern8mu\fi(#1)} +\def\pmod#1{\pod{{\operator@font mod}\mkern6mu#1}} +\def\mod#1{\allowbreak\if@display\mkern18mu + \else\mkern12mu\fi{\operator@font mod}\,\,#1} +\newcommand{\cfrac}[3][c]{{\displaystyle\frac{% + \strut\ifx r#1\hfill\fi#2\ifx l#1\hfill\fi}{#3}}% + \kern-\nulldelimiterspace} +\def\lcfrac{\cfrac[l]} +\def\rcfrac{\cfrac[r]} +\def\overset#1#2{\binrel@{#2}% + \binrel@@{\mathop{\kern\z@#2}\limits^{#1}}} +\def\underset#1#2{\binrel@{#2}% + \binrel@@{\mathop{\kern\z@#2}\limits_{#1}}} +\def\sideset#1#2#3{% + \setbox\z@\hbox{$\displaystyle{\vphantom{#3}}#1{#3}\m@th$}% + \setbox\tw@\hbox{$\displaystyle{#3}#2\m@th$}% + \hskip\wd\z@\hskip-\wd\tw@\mathop{\hskip\wd\tw@\hskip-\wd\z@ + {\vphantom{#3}}#1{#3}#2}} +\renewcommand{\smash}[2][tb]{% + \def\smash@{#1}% + \ifmmode\expandafter\mathpalette\expandafter\mathsm@sh\else + \expandafter\makesm@sh\fi{#2}} +\def\finsm@sh{\def\mb@t{\ht\z@\z@}\def\mb@b{\dp\z@\z@}% + \def\mb@tb{\mb@t\mb@b}% + {\csname mb@\smash@\endcsname}% + \leavevmode\boxz@} +\def\rightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\copy\z@\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\leftarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill + \mkern-6mu\box\z@$} +\def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@ + $#1\mathord\leftarrow\mkern-6mu\cleaders + \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill + \mkern-6mu\mathord\rightarrow$} +\def\overarrow@#1#2#3{\vbox{\ialign{##\crcr#1#2\crcr + \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#2#3\hfil$\crcr}}} +\def\overrightarrow{\mathpalette{\overarrow@\rightarrowfill@}} +\def\overleftarrow{\mathpalette{\overarrow@\leftarrowfill@}} +\def\overleftrightarrow{\mathpalette{\overarrow@\leftrightarrowfill@}} +\def\underarrow@#1#2#3{% + \vtop{\ialign{##\crcr$\m@th\hfil#2#3\hfil$\crcr + \noalign{\nointerlineskip\kern-.5\ex@}#1#2\crcr}}} +\def\underrightarrow{\mathpalette{\underarrow@\rightarrowfill@}} +\def\underleftarrow{\mathpalette{\underarrow@\leftarrowfill@}} +\def\underleftrightarrow{\mathpalette{\underarrow@\leftrightarrowfill@}} +\let\ifgtest@\iffalse % initial value +\def\gtest@true{\global\let\ifgtest@\iftrue} +\def\gtest@false{\global\let\ifgtest@\iffalse} +\let\DOTSI\relax +\let\DOTSB\relax +\let\DOTSX\relax +{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`!=`h + \uppercase{% + \gdef\math@#1#2#3#4#5#6\math@{\gtest@false\ifx 7#1\ifx 8#2% + \ifx 9#3\ifx 0#4\ifx !#5\xdef\meaning@{#6}\gtest@true + \fi\fi\fi\fi\fi}}} +{\uccode`7=`c \uccode`8=`h \uccode`9=`\" + \uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\gtest@false + \ifx 7#1\ifx 8#2\ifx 9#5\gtest@true\xdef\meaning@{9#6}\fi\fi\fi}}} +\newcount\classnum@ +\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096 + \ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or + \gdef\thedots@{\dotsb@}\fi} +{\uccode`4=`b \uccode`5=`i \uccode`6=`n + \uppercase{\gdef\mathbin@#1#2#3{\relaxnext@ + \def\nextii@##1\mathbin@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\mathbin@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +{\uccode`4=`r \uccode`5=`e \uccode`6=`l + \uppercase{\gdef\mathrel@#1#2#3{\relaxnext@ + \def\nextii@##1\mathrel@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\mathrel@{}% + \ifx 4#1\ifx 5#2\ifx 6#3\DN@{\FN@\nextii@}\fi\fi\fi\next@}}} +{\uccode`5=`m \uccode`6=`a \uccode`7=`c + \uppercase{\gdef\macro@#1#2#3#4\macro@{\gtest@false + \ifx 5#1\ifx 6#2\ifx 7#3\gtest@true + \xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}} +\def\macro@@#1->#2\macro@@{#2} +\newcount\DOTSCASE@ +{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S + \uppercase{\gdef\DOTS@#1#2#3#4#5{\gtest@false\DN@##1\DOTS@{}% + \ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next@\DOTS@@ + \fi\fi\fi\fi\fi + \next@}}} +{\uccode`3=`B \uccode`4=`I \uccode`5=`X + \uppercase{\gdef\DOTS@@#1{\relaxnext@ + \def\nextii@##1\DOTS@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \DN@{\FN@\nextii@}% + \ifx 3#1\global\DOTSCASE@\z@\else + \ifx 4#1\global\DOTSCASE@\@ne\else + \ifx 5#1\global\DOTSCASE@\tw@\else\DN@##1\DOTS@{}% + \fi\fi\fi\next@}}} +{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t + \uppercase{\gdef\not@#1#2#3#4{\relaxnext@ + \def\nextii@##1\not@{\ifx\@sptoken\@let@token\gtest@true\fi}% + \gtest@false\DN@##1\not@{}% + \ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\DN@{\FN@\nextii@}\fi\fi\fi + \fi\next@}}} +\def\keybin@{\gtest@true + \ifx\@let@token+\else\ifx\@let@token=\else\ifx\@let@token<% + \else\ifx\@let@token>\else\ifx\@let@token-\else\ifx\@let@token*% + \else\ifx\@let@token:\else\gtest@false\fi\fi\fi\fi\fi\fi\fi} +\@ifundefined{@ldots}{\def\@ldots{\mathellipsis}}{} +\DeclareRobustCommand{\dots}{\relax + \csname\ifmmode m\else t\fi dots@\endcsname} +\def\tdots@{\leavevmode\unskip\relaxnext@ + \DN@{$\m@th\@ldots\, + \ifx\@let@token,\,$\else\ifx\@let@token.\,$\else\ifx\@let@token;\,$% + \else\ifx\@let@token:\,$\else\ifx\@let@token?\,$% + \else\ifx\@let@token!\,$\else$ \fi\fi\fi\fi\fi\fi}% + \ \FN@\next@} +\def\mdots@{\FN@\mdots@@} +\def\mdots@@{\gdef\thedots@{\dotso@}% + \ifx\@let@token\boldsymbol\gdef\thedots@\boldsymbol{\boldsymboldots@}% + \else\ifx,\@let@token\gdef\thedots@{\dotsc}% + \else\ifx\not\@let@token\gdef\thedots@{\dotsb@}% + \else\keybin@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \else\xdef\meaning@{\meaning\@let@token..........}% + \xdef\meaning@@{\meaning@}% + \expandafter\math@\meaning@\math@ + \ifgtest@ + \expandafter\mathch@\meaning@\mathch@ + \ifgtest@\expandafter\getmathch@\meaning@\getmathch@\fi + \else\expandafter\macro@\meaning@@\macro@ + \ifgtest@ + \expandafter\not@\meaning@\not@\ifgtest@\gdef\thedots@{\dotsb@}% + \else\expandafter\DOTS@\meaning@\DOTS@ + \ifgtest@ + \ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}% + \or\gdef\thedots@{\dotsi}\else\fi + \else\expandafter\math@\meaning@\math@ + \ifgtest@\expandafter\mathbin@\meaning@\mathbin@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \else\expandafter\mathrel@\meaning@\mathrel@ + \ifgtest@\gdef\thedots@{\dotsb@}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \thedots@} +\def\boldsymboldots@#1{% + \bold@true\let\@let@token=#1\let\delayed@=#1\mdots@@ + \boldsymbol#1\bold@false} +\def\@cdots{\mathinner{\cdotp\cdotp\cdotp}} +\def\dotsi{\!\@cdots} +\let\dotsb@\@cdots +\def\rightdelim@{\gtest@true + \ifx\@let@token)\else + \ifx\@let@token]\else + \ifx\@let@token\rbrack\else + \ifx\@let@token\}\else + \ifx\@let@token\rbrace\else + \ifx\@let@token\rangle\else + \ifx\@let@token\rceil\else + \ifx\@let@token\rfloor\else + \ifx\@let@token\rgroup\else + \ifx\@let@token\rmoustache\else + \ifx\@let@token\right\else + \ifx\@let@token\bigr\else + \ifx\@let@token\biggr\else + \ifx\@let@token\Bigr\else + \ifx\@let@token\Biggr\else\gtest@false + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\extra@{% + \rightdelim@\ifgtest@ + \else\ifx\@let@token$\gtest@true + \else\xdef\meaning@{\meaning\@let@token..........}% + \expandafter\macro@\meaning@\macro@\ifgtest@ + \expandafter\DOTS@\meaning@\DOTS@ + \ifgtest@ + \ifnum\DOTSCASE@=\tw@\gtest@true\else\gtest@false + \fi\fi\fi\fi\fi} +\newif\ifbold@ +\def\dotso@{\relaxnext@ + \ifbold@ + \let\@let@token\delayed@ + \def\nextii@{\extra@\@ldots\ifgtest@\,\fi}% + \else + \def\nextii@{\DN@{\extra@\@ldots\ifgtest@\,\fi}\FN@\next@}% + \fi + \nextii@} +\def\extrap@#1{% + \DN@{#1\,}% + \ifx\@let@token,\else + \ifx\@let@token;\else + \ifx\@let@token.\else\extra@ + \ifgtest@\else + \let\next@#1\fi\fi\fi\fi\next@} +\DeclareRobustCommand{\ldots}{\relax + \ifmmode \DN@{\extrap@\@ldots}% + \else \let\next@\tdots@\fi + \FN@\next@} +\DeclareRobustCommand{\cdots}{\DN@{\extrap@\@cdots}\FN@\next@} +\let\dotso\ldots +\let\dotsb\cdots +\let\dotsm\dotsb +\DeclareRobustCommand{\dotsc}{% + \DN@{\ifx\@let@token;\@ldots\,% + \else \ifx\@let@token.\@ldots\,% + \else \extra@\@ldots \ifgtest@\,\fi + \fi\fi}% + \FN@\next@} +\def\longrightarrow{\DOTSB\relbar\joinrel\rightarrow} +\def\Longrightarrow{\DOTSB\Relbar\joinrel\Rightarrow} +\def\longleftarrow{\DOTSB\leftarrow\joinrel\relbar} +\def\Longleftarrow{\DOTSB\Leftarrow\joinrel\Relbar} +\def\longleftrightarrow{\DOTSB\leftarrow\joinrel\rightarrow} +\def\Longleftrightarrow{\DOTSB\Leftarrow\joinrel\Rightarrow} +\def\mapsto{\DOTSB\mapstochar\rightarrow} +\def\longmapsto{\DOTSB\mapstochar\longrightarrow} +\def\hookrightarrow{\DOTSB\lhook\joinrel\rightarrow} +\def\hookleftarrow{\DOTSB\leftarrow\joinrel\rhook} +\def\doteq{\DOTSB\buildrel\textstyle.\over=} +\def\iff{\DOTSB\;\Longleftrightarrow\;} +\begingroup \catcode`\"=12 +\mathchardef\@tempa="7000 +\ifx\@tempa\Gamma + \DeclareMathSymbol{\Gamma}{\mathord}{operators}{"00} + \DeclareMathSymbol{\Delta}{\mathord}{operators}{"01} + \DeclareMathSymbol{\Theta}{\mathord}{operators}{"02} + \DeclareMathSymbol{\Lambda}{\mathord}{operators}{"03} + \DeclareMathSymbol{\Xi}{\mathord}{operators}{"04} + \DeclareMathSymbol{\Pi}{\mathord}{operators}{"05} + \DeclareMathSymbol{\Sigma}{\mathord}{operators}{"06} + \DeclareMathSymbol{\Upsilon}{\mathord}{operators}{"07} + \DeclareMathSymbol{\Phi}{\mathord}{operators}{"08} + \DeclareMathSymbol{\Psi}{\mathord}{operators}{"09} + \DeclareMathSymbol{\Omega}{\mathord}{operators}{"0A} + \DeclareMathSymbol{\varGamma}{\mathord}{letters}{"00} + \DeclareMathSymbol{\varDelta}{\mathord}{letters}{"01} + \DeclareMathSymbol{\varTheta}{\mathord}{letters}{"02} + \DeclareMathSymbol{\varLambda}{\mathord}{letters}{"03} + \DeclareMathSymbol{\varXi}{\mathord}{letters}{"04} + \DeclareMathSymbol{\varPi}{\mathord}{letters}{"05} + \DeclareMathSymbol{\varSigma}{\mathord}{letters}{"06} + \DeclareMathSymbol{\varUpsilon}{\mathord}{letters}{"07} + \DeclareMathSymbol{\varPhi}{\mathord}{letters}{"08} + \DeclareMathSymbol{\varPsi}{\mathord}{letters}{"09} + \DeclareMathSymbol{\varOmega}{\mathord}{letters}{"0A} +\fi +\endgroup +\def\accentclass@{7} +\def\noaccents@{\def\accentclass@{0}} +\DeclareFontEncoding{OML}{}{\noaccents@} +\DeclareFontEncoding{OMS}{}{\noaccents@} +\edef\@tempa#1#2{\def#1{\mathaccent\string"\noexpand\accentclass@#2 }} +\@tempa\hat{05E}\@tempa\check{014}\@tempa\tilde{07E}\@tempa\acute{013} +\@tempa\grave{012}\@tempa\dot{05F}\@tempa\ddot{07F}\@tempa\breve{015} +\@tempa\bar{016} +\newcount\skewcharcount@ +\newcount\familycount@ +\def\theskewchar@{\familycount@\@ne + \global\skewcharcount@\the\skewchar\textfont\@ne + \ifnum\mathgroup>\m@ne\ifnum\mathgroup<16 + \global\familycount@\the\mathgroup\relax + \global\skewcharcount@\the\skewchar\textfont\the\mathgroup\relax\fi\fi + \ifnum\skewcharcount@>\m@ne + \ifnum\skewcharcount@<128 + \multiply\familycount@256 + \global\advance\skewcharcount@\familycount@ + \global\advance\skewcharcount@28672 + \mathchar\skewcharcount@\else + \global\skewcharcount@\m@ne\fi\else + \global\skewcharcount@\m@ne\fi} +\newcount\pointcount@ +\def\getpoints@#1.#2\getpoints@{\pointcount@#1 } +\newdimen\accentdimen@ +\newcount\accentmu@ +\def\dimentomu@{\multiply\accentdimen@ 100 + \expandafter\getpoints@\the\accentdimen@\getpoints@ + \multiply\pointcount@18 + \divide\pointcount@\@m + \global\accentmu@\pointcount@} +\def\mathaccent@#1#2{\ifnum\mathgroup=\m@ne\xdef\thefam@{1}\else + \xdef\thefam@{\the\mathgroup}\fi + \accentdimen@\z@ + \setboxz@h{\unbracefonts@$\m@th\mathgroup\thefam@\relax#2$}% + \ifdim\accentdimen@=\z@\DN@{\mathaccent#1{#2}}% + \setbox\@ne\hbox{\unbracefonts@ + $\m@th\mathgroup\thefam@\relax#2\theskewchar@$} + \setbox\tw@\hbox{$\m@th\ifnum\skewcharcount@=\m@ne\else + \mathchar\skewcharcount@\fi$}% + \global\accentdimen@\wd\@ne\global\advance\accentdimen@-\wdz@ + \global\advance\accentdimen@-\wd\tw@ + \global\multiply\accentdimen@\tw@ + \dimentomu@\global\advance\accentmu@\@ne + \else\DN@{{\mathaccent#1{#2\mkern\accentmu@ mu}% + \mkern-\accentmu@ mu}{}}\fi + \next@} +\def\unbracefonts@{\let\math@bgroup\@empty\let\math@egroup\@empty} +\begingroup \catcode`\"=12 +\def\@tempa#1#2{\gdef#1{\RIfM@\DN@{\mathaccent@{"\accentclass@#2 }}% + \else\DN@{\nonmatherr@{#1}}\fi\next@}} +\@tempa\Hat{05E}\@tempa\Check{014}\@tempa\Tilde{07E}\@tempa\Acute{013} +\@tempa\Grave{012}\@tempa\Dot{05F}\@tempa\Ddot{07F}\@tempa\Breve{015} +\@tempa\Bar{016} +\gdef\Vec{\RIfM@\DN@{\mathaccent@{"017E }}\else + \DN@{\nonmatherr@\Vec}\fi\next@} +\endgroup +\begingroup \catcode`\"=12 +\gdef\@@sqrt#1{\radical"270370 {#1}} +\endgroup +\@saveprimitive\overline\@@overline +\def\overline#1{\@@overline{#1}} +\def\boxed#1{\fbox{\m@th$\displaystyle#1$}} +\def\setb@ck{\iffirstchoice@\global\advance\c@equation\m@ne\fi} +\newcount\dspbrk@lvl +\dspbrk@lvl=-1 +\interdisplaylinepenalty\@M +\def\allowdisplaybreaks{% + \new@ifnextchar[\allowdspbrks@{\allowdspbrks@[4]}} +\def\allowdspbrks@[#1]{% + \interdisplaylinepenalty\getdsp@pen{#1}} +\def\getdsp@pen#1{% + \ifcase #1\relax \@M + \or 9999 + \or 6999 + \or 2999 + \or \z@\fi} +\def\displaybreak{\PackageError{amstex}{\Invalid@@\displaybreak}\@eha} +\def\displaybreak@{% + \def\displaybreak{\new@ifnextchar[\dspbrk@{\dspbrk@[4]}}} +\def\dspbrk@[#1]{\global\dspbrk@lvl #1\relax} +\def\math@cr{{\ifnum0=`}\fi + \new@ifstar{\global\@eqpen\@M\math@cr@}% + {\global\@eqpen + \ifnum\dspbrk@lvl <\z@ \interdisplaylinepenalty + \else -\@getpen\dspbrk@lvl \fi + \math@cr@}} +\def\math@cr@{\new@ifnextchar[\math@cr@@{\math@cr@@[\z@]}} +\def\math@cr@@[#1]{\ifnum0=`{\fi}\math@cr@@@ + \noalign{\vskip#1\relax}} +\def\Let@{\let\\\math@cr} +\def\restore@math@cr{\def\math@cr@@@{\cr}} +\restore@math@cr +\def\intertext{\PackageError{amstex}{\Invalid@@\intertext}\@eha} +\def\intertext@{\def\intertext##1{\noalign{% + \penalty\postdisplaypenalty\vskip\belowdisplayskip + \vbox{\normalbaselines\noindent##1}% + \penalty\predisplaypenalty\vskip\abovedisplayskip}}} +\newhelp\tag@help + {tag cannot be used at this point.\space + If you don't understand why^^Jyou should consult + the documentation.^^JBut don't worry: just continue, and I'll + forget what happened.} +\def\gobble@tag{\new@ifstar\@gobble\@gobble} +\def\invalid@tag#1{\PackageError{amstex}{#1}{\the\tag@help}\gobble@tag} +\def\dft@tag{\invalid@tag{\string\tag\space not allowed here}} +\def\default@tag{\let\tag\dft@tag} +\default@tag +\def\maketag@@{\new@ifstar\maketag@@@\tagform@} +\def\maketag@@@#1{\hbox{\m@th\normalfont#1}} +\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip)}} +\def\thetag{\leavevmode\tagform@} +\def\make@df@tag{\new@ifstar\make@df@tag@@\make@df@tag@@@} +\def\make@df@tag@@#1{% + \def\@currentlabel{#1}% + \gdef\df@tag{\maketag@@@{#1}}} +\def\make@df@tag@@@#1{\@seteqlabel{#1}\gdef\df@tag{\tagform@{#1}}} +\def\@seteqlabel#1{\toks@\@xp{\p@equation{#1}}% + \edef\@currentlabel{\the\toks@}} +\def\notag{\nonumber} +\iftagsleft@ +\def\@eqnnum{\hbox to1sp{}\rlap{\normalfont + \hskip -\displaywidth\tagform@\theequation}} +\fi + +\let\@adjusttag\@empty + +\def\adjusttag#1{\skip@#1\relax\gdef\@adjusttag{#1}} + +\def\@movetag{% + \ifx\@adjusttag\@empty \else + \vskip\@adjusttag\relax + \global\let\@adjusttag\@empty + \fi +} +\def\multilimits@{\bgroup + \Let@ + \restore@math@cr + \default@tag + \baselineskip\fontdimen10 \scriptfont\tw@ + \advance\baselineskip\fontdimen12 \scriptfont\tw@ + \lineskip\thr@@\fontdimen8 \scriptfont\thr@@ + \lineskiplimit\lineskip + \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr} +\def\Sb{_\multilimits@} +\def\Sp{^\multilimits@} +\def\endSb{\crcr\egroup\egroup\egroup} +\let\endSp=\endSb +\def\smallmatrix{\null\,\vcenter\bgroup + \Let@\restore@math@cr\default@tag + \baselineskip6\ex@ \lineskip1.5\ex@ \lineskiplimit\lineskip + \ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil&&\thickspace\hfil + $\m@th\scriptstyle{##}$\hfil\crcr} +\def\endsmallmatrix{\crcr\egroup\egroup\,} +\newcount\c@MaxMatrixCols +\c@MaxMatrixCols=10 + +\def\matrix{\hskip -\arraycolsep\array{*\c@MaxMatrixCols c}} +\def\endmatrix{\endarray \hskip -\arraycolsep} +\@ifundefined{prepnext@tok}{% + \def\@array[#1]#2{% + \setbox\@arstrutbox\hbox{\vrule\@height\arraystretch\ht\strutbox + \@depth\arraystretch\dp\strutbox \@width\z@}% + \@mkpream{#2}\edef\@preamble{\ialign \noexpand\@halignto + \bgroup \tabskip\z@ \@arstrut \@preamble \tabskip\z@ \cr}% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup \let\par\@empty + \let\@sharp##\let\protect\relax + \lineskip\z@\baselineskip\z@\@preamble}% +\begingroup \lccode`\~=`\@ \catcode`\~=\active % just to be sure! +\lowercase{% +\gdef\@xexpast#1*#2#3#4\@@{\begingroup + \def~{@}\edef\reserved@a{#1}\@tempcnta#2\relax + \ifnum\@tempcnta >\z@ + \@whilenum\@tempcnta >\z@\do + {\edef\reserved@a{\reserved@a#3}\advance\@tempcnta \m@ne}% + \let\reserved@b\@xexpast + \else \let\reserved@b\@xexnoop\fi + \expandafter\reserved@b \reserved@a #4\@@ + \expandafter\endgroup + \expandafter\def\expandafter\reserved@a\expandafter{\reserved@a}% + \let\@tempa\reserved@a +}% End of \@xexpast +}% End of \lowercase +\endgroup +}{}% End of \@ifundefined test. +\def\pmatrix{\left(\matrix} +\def\endpmatrix{\endmatrix\right)} +\def\bmatrix{\left[\matrix} +\def\endbmatrix{\endmatrix\right]} +\def\vmatrix{\left|\matrix} +\def\endvmatrix{\endmatrix\right|} +\def\Vmatrix{\left\|\matrix} +\def\endVmatrix{\endmatrix\right\|} +\let\hdots\@ldots +\def\hdotsfor#1{\if\noexpand#1[\expandafter\shdots@for\else + \hdots@for\@ne{#1}\fi} +\newmuskip\dotsspace@ +\def\shdots@for#1]{\hdots@for{#1}} +\def\hdots@for#1#2{\multicolumn{#2}c% + {\m@th\dotsspace@1.5mu\mkern-#1\dotsspace@ + \xleaders\hbox{$\m@th\mkern#1\dotsspace@.\mkern#1\dotsspace@$}% + \hfill + \mkern-#1\dotsspace@}% + } +\def\cases{\left\{\def\arraystretch{1.2}\hskip-\arraycolsep + \array{l@{\quad}l}} +\def\endcases{\endarray\hskip-\arraycolsep\right.} +\newif\ifinany@ +\newif\ifinalign@ +\newif\ifingather@ +\newcount\and@ +\newif\iftag@ +\newhelp\andhelp@ +{An extra & here is so disastrous that you should probably exit^^J +and fix things up.} +\newif\ifst@rred +\newtoks\@envbody +\def\addto@envbody#1{\@envbody\expandafter{\the\@envbody#1}} +\def\collect@body#1{% + \@envbody{}% + \def\process@envbody{% + \expandafter#1\expandafter{\the\@envbody}}% + \expandafter\let\csname\@currenvir\endcsname\collect@@body + \csname\@currenvir\endcsname} +\def\collect@@body#1\end#2{% + \def\@tempa{#2}% + \ifx\@tempa\@currenvir + \addto@envbody{#1}% + \expandafter\edef\csname\@currenvir\endcsname + {\noexpand\process@envbody\noexpand\end{\@tempa}}% + \else + \addto@envbody{#1\end{#2}}% + \fi + \csname\@currenvir\endcsname} +\newenvironment{aligned}{% + \relax\ifmmode\else\nonmatherr@{\begin{aligned}}\fi + \null\,\new@ifnextchar[{\aligned@}{\aligned@[c]}% +}{% + \crcr\egroup\egroup +} +\def\aligned@[#1]{% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup + \Let@\restore@math@cr + \default@tag + \ifinany@\else\openup\jot\fi + \ialign\bgroup\hfil\strut@$\m@th\displaystyle{##}$&% + $\m@th\displaystyle{{}##}$\hfil\crcr} +\newtoks\hashtoks@ +\hashtoks@{#} +\newcount\atcount@ +\def\doat@#1{\toks@{\hfil\strut@$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle + {{}\the\hashtoks@}$\hfil}% + \atcount@#1\relax\advance\atcount@\m@ne + \loop\ifnum\atcount@>\z@\toks@\expandafter{\the\toks@&\hfil$\m@th + \displaystyle{\the\hashtoks@}$&$\m@th + \displaystyle{{}\the\hashtoks@}$\hfil}\advance + \atcount@\m@ne\repeat + \xdef\preamble@{\the\toks@}\xdef\preamble@@{\preamble@}} +\newenvironment{alignedat}[2][c]{% + \null\,% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup\doat@{#2}\Let@ \restore@math@cr\default@tag + \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr +}{% + \endaligned +} +\newenvironment{gathered}[1][c]{% + \relax\ifmmode\else\nonmatherr@{\begin{gathered}}\fi + \null\,% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup\Let@\restore@math@cr + \ifinany@\else\openup\jot\fi\ialign + \bgroup\hfil\strut@$\m@th\displaystyle##$\hfil\crcr +}{% + \endaligned +} +\def\tag@in@align{\relax + \iftag@\DN@{\invalid@tag{Multiple \string\tag}}\else + \global\tag@true + \if@eqnsw\global\@eqnswfalse\fi + \let\next@\make@df@tag\fi + \next@} +\def\math@cr@@@align{% + \if@eqnsw\global\tag@true\fi + \iftag@ + \ifcase\and@ + \DN@{&&}\else + \DN@{&}\fi\else + \let\next@\relax\fi + \next@ + \relax + \if@eqnsw\tagform@\theequation\stepcounter{equation}\else + \iftag@\df@tag\fi\fi + \global\@eqnswtrue\cr} +\def\Tag@{\relax\iftag@\else\firstchoice@true + \PackageError{amstex}{% + Extra & on this line% + }{\the\andhelp@% "An extra & here is disastrous" +}\fi} +\newdimen\lwidth@ +\newdimen\rwidth@ +\newdimen\maxlwidth@ +\newdimen\maxrwidth@ +\newdimen\totwidth@ +\def\measure@#1{\lwidth@\z@\rwidth@\z@\maxlwidth@\z@\maxrwidth@\z@ + \global\and@\z@ + \setbox\@ne\vbox{% + \everycr{\noalign{\global\tag@false\global\and@\z@}}\Let@ + \let\tag\gobble@tag + \let\notag\@empty \let\nonumber\@empty + \firstchoice@false + \halign{\setboxz@h{$\m@th\displaystyle{\@lign##}$}% + \global\lwidth@\wdz@ + \ifdim\lwidth@>\maxlwidth@\global\maxlwidth@\lwidth@\fi + \global\advance\and@\@ne + &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}% + \global\rwidth@\wdz@ + \ifdim\rwidth@>\maxrwidth@\global\maxrwidth@\rwidth@\fi + \global\advance\and@\@ne + &\Tag@\@gobble{##}\crcr#1\crcr}}% + \totwidth@\maxlwidth@\advance\totwidth@\maxrwidth@} +\def\displ@y{\global\dt@ptrue\openup\jot\m@th + \everycr{\noalign{\ifdt@p \global\dt@pfalse + \vskip-\lineskiplimit \vskip\normallineskiplimit + \else \penalty\@eqpen \fi}}} +\def\displ@y@{\global\dt@ptrue\openup\jot + \everycr{\noalign{\global\tag@false + \global\and@\z@ + \global\dspbrk@lvl\m@ne + \ifdt@p\global\dt@pfalse + \vskip-\lineskiplimit\vskip\normallineskiplimit\else + \penalty\@eqpen\fi}}} +\def\black@#1{\noalign{\ifdim#1>\displaywidth + \dimen@\prevdepth\nointerlineskip + \vskip-\ht\strutbox@\vskip-\dp\strutbox@ + \vbox{\noindent\hbox to#1{\strut@\hfill}}% + \prevdepth\dimen@ + \fi}} +\def\align{\ifingather@ + {\ifnum0=`}\fi + \DN@{\@nameuse{align (in \string\gather)}}% + \else \ifmmode\nomath@env + \DN@{\let\endalign\relax\@gobble}\else + $$\stepcounter{equation}% + \st@rredfalse\let\next@\align@\fi\fi + \collect@body\next@} +\@namedef{align*}{\ifingather@ + {\ifnum0=`}\fi + \DN@{\@nameuse{align* (in \string\gather)}}\else + \ifmmode\nomath@env + \DN@{\@namedef{endalign*}{}\@gobble}\else + $$\st@rredtrue + \let\next@\align@\fi\fi + \collect@body\next@} +\newdimen\lineht@ +\def\align@{\inalign@true\inany@true + \displaybreak@\intertext@ + \let\math@cr@@@\math@cr@@@align + \let\tag\tag@in@align + \global\and@\z@\global\dspbrk@lvl\m@ne + \iftagsleft@\DN@{\@nameuse{align }}\else + \DN@{\@nameuse{align \space}}\fi\next@} +\@namedef{align }#1{% + \measure@{#1}% + \global\and@\z@ + \global\dspbrk@lvl\m@ne + \if@fleqn %%*F + \advance\totwidth@\@mathmargin %%*F + \fi %%*F + \ifdim\totwidth@>\displaywidth + \let\displaywidth@\totwidth@ + \else + \let\displaywidth@\displaywidth + \fi + \ifingather@ + \everycr{% + \noalign{% + \global\and@\z@ + \global\dspbrk@lvl\m@ne + }% + }% + \else + \displ@y@ + \fi + \Let@ + \ifst@rred\else\@seteqlabel\theequation\fi + \tabskip\@mathmargin %%*F + \dimen@\displaywidth %%*F + \if@fleqn %%*F + \ifingather@ %%*F + \tabskip\z@skip %%*F + \advance\dimen@-\@mathmargin %%*F + \fi %%*F + \fi %%*F + \halign to\dimen@\bgroup %%*F + \ifst@rred\nonumber\fi + \hfil + \strut@ + \setboxz@h{\global\tag@false$\m@th\displaystyle{\@lign##}$}% + \global\lwidth@\wdz@ + \global\lineht@\ht\z@ + \boxz@ + \global\advance\and@\@ne + \tabskip\z@skip + &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}% + \global\rwidth@\wdz@ + \ifdim\ht\z@>\lineht@ + \global\lineht@\ht\z@ + \fi + \boxz@ + \hfil + \global\advance\and@\@ne + \tabskip\@centering + &\kern-\displaywidth@ + \setboxz@h{\@lign\strut@{##}}% + \if@fleqn %%*F + \dimen@\@mathmargin %%*F + \advance\dimen@\maxlwidth@ %%*F + \advance\dimen@-\lwidth@ %%*F + \else %%*F + \dimen@\displaywidth + \advance\dimen@-\totwidth@ + \divide\dimen@\tw@ + \advance\dimen@\maxlwidth@ + \advance\dimen@-\lwidth@ + \fi %%*F + \ifdim\dimen@<\tw@\wdz@ + \rlap{\vbox{\normalbaselines\boxz@\vbox to\lineht@{}}}% + \else + \rlap{\boxz@}% + \fi + \tabskip\displaywidth@ + \crcr + #1% +} +\@namedef{align \space}#1{% + \measure@{#1}% + \if@fleqn %%*F + \advance\totwidth@\@mathmargin %%*F + \fi %%*F + \global\and@\z@ + \global\dspbrk@lvl\m@ne + \ifingather@ + \everycr{\noalign{\global\and@\z@\global\dspbrk@lvl\m@ne}}% + \else + \displ@y@ + \fi + \Let@ + \ifst@rred\else\@seteqlabel\theequation\fi + \tabskip\@mathmargin %%*F + \dimen@\displaywidth %%*F + \if@fleqn %%* + \ifingather@ %%*F + \tabskip\z@skip %%*F + \advance\dimen@-\@mathmargin %%*F + \fi %%*F + \fi %%*F + \halign to\dimen@\bgroup %%*F + \ifst@rred\nonumber\fi + \hfil + \strut@ + \setboxz@h{\global\tag@false$\m@th\displaystyle{\@lign##}$}% + \global\lwidth@\wdz@\boxz@ + \global\advance\and@\@ne + \tabskip\z@skip + &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}% + \global\rwidth@\wdz@ + \boxz@ + \hfill + \global\advance\and@\@ne + \tabskip\@centering + &\setboxz@h{\@lign\strut@{##}}% + \dimen@\displaywidth + \advance\dimen@-\totwidth@ + \divide\dimen@\tw@ + \advance\dimen@\maxrwidth@ + \advance\dimen@-\rwidth@ + \ifdim\dimen@<\tw@\wdz@ + \llap{\vtop{\@movetag\normalbaselines\null\boxz@}}%%*T + \else + \llap{\boxz@}% + \fi + \tabskip\z@skip + \crcr#1% +} +\def\endalign{\math@cr@@@align + \black@\totwidth@ + \egroup$$\global\@ignoretrue\setb@ck} + +\@namedef{endalign*}{\math@cr@@@align\black@\totwidth@ + \egroup$$\global\@ignoretrue} +\@namedef{align (in \string\gather)}{% + \ifst@rred\stepcounter{equation}\fi + \def\endalign{\@nameuse{endalign (in \string\gather)}\ifnum0=`{\fi}}% + \vcenter\bgroup\st@rredfalse + \collect@body\align@} +\@namedef{endalign (in \string\gather)}{% + \math@cr@@@align\black@\totwidth@ + \egroup\egroup + \ifst@rred\setb@ck\fi% this ifst@rred is set by the enclosing gather + \global\tag@false\global\@eqnswfalse} +\@namedef{align* (in \string\gather)}{% + \@namedef{endalign*}{\@nameuse{endalign* (in \string\gather)}% + \ifnum0=`{\fi}}% + \vcenter\bgroup\st@rredtrue + \collect@body\align@} +\@namedef{endalign* (in \string\gather)}{% + \math@cr@@@align\black@\totwidth@\egroup\egroup + \global\tag@false\global\@eqnswfalse} +\newif\ifxat@ +\def\alignat#1{% + \ifmmode\nomath@env\DN@{\let\endalignat\relax\@gobble}\else$$% + \st@rredfalse\stepcounter{equation}\@seteqlabel\theequation + \DN@{\@nameuse{alignat }#1}\fi + \collect@body\next@} +\@namedef{alignat*}#1{% + \ifmmode\nomath@env\DN@{\@namedef{endalignat*}{}\@gobble}\else$$% + \st@rredtrue + \DN@{\@nameuse{alignat }#1}\fi + \collect@body\next@} +\newif\ifmeasuring@ +\newbox\savealignat@ +\def\math@cr@@@alignat{% + \if@eqnsw\global\tag@true\fi + \iftag@ + \multiply\count@\tw@ + \xdef\next@{}\loop\ifnum\count@>\and@\xdef\next@{&\next@}% + \advance\count@\m@ne\repeat\else + \let\next@\relax\fi + \next@ + \relax + \if@eqnsw\tagform@\theequation\stepcounter{equation}\else + \iftag@\df@tag\fi\fi + \global\@eqnswtrue\cr}% +\@namedef{alignat }#1#2{% + \inany@true + \xat@false + \let\tag\tag@in@align + \def\math@cr@@@{\count@#1\relax \math@cr@@@alignat}% + \displaybreak@ + \intertext@ + \displ@y@ + \ifst@rred + \global\@eqnswfalse + \else + \global\@eqnswtrue + \fi + \measuring@true + \setbox\savealignat@\hbox{% + $\m@th\displaystyle\Let@ + \attag@{#1}% + \vbox{\firstchoice@false\halign{\span\preamble@@\crcr#2\crcr}}$% + }% + \measuring@false + \Let@ + \attag@{#1}% + \tabskip\@mathmargin %%*F + \halign to\displaywidth\bgroup + \span\preamble@@\crcr + #2% +} +\def\endalignat{\math@cr@@@\black@{\wd\savealignat@}% + \egroup\setb@ck$$\global\@ignoretrue} +\@namedef{endalignat*}{\math@cr@@@\black@{\wd\savealignat@}\egroup + $$\global\@ignoretrue} +\def\xalignat#1{% + \ifmmode\nomath@env\DN@{\let\endxalignat\relax\@gobble}\else$$% + \st@rredfalse\stepcounter{equation}\@seteqlabel\theequation + \DN@{\@nameuse{xalignat }#1}\fi + \collect@body\next@} +\@namedef{xalignat*}#1{% + \ifmmode\nomath@env\DN@{\@namedef{endxalignat*}{}\@gobble}\else$$% + \st@rredtrue + \DN@{\@nameuse{xalignat }#1}\fi + \collect@body\next@} +\let\endxalignat=\endalignat + +\expandafter\let\csname endxalignat*\expandafter + \endcsname\csname endalignat*\endcsname +\@namedef{xalignat }#1#2{% + \inany@true + \xat@true + \let\tag\tag@in@align + \def\math@cr@@@{\count@#1\relax\math@cr@@@alignat}% + \displaybreak@ + \intertext@ + \displ@y@ + \measuring@true + \setbox\savealignat@\hbox{% + $\m@th\displaystyle\Let@ + \attag@{#1}% + \vbox{% + \firstchoice@false + \halign{\span\preamble@@\crcr#2\crcr}% + }% + $% + }% + \measuring@false + \Let@ + \attag@{#1}% + \tabskip\@mathmargin %%*F + \halign to\displaywidth\bgroup + \span\preamble@@\crcr#2% +} +\def\attag@#1{% + \let\TAG@\Tag@\let\Tag@0% + \ifmeasuring@\def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}% + \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}\else + \let\llap@\llap\let\rlap@\rlap\fi + \toks@{\hfil\strut@$\m@th\displaystyle{\@lign\the\hashtoks@}$% + \tabskip\z@skip + \global\advance\and@\@ne + &$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil + \ifxat@\tabskip\@centering\fi\global\advance\and@\@ne}% + \iftagsleft@ + \@temptokena{\tabskip\@centering&\Tag@\kern-\displaywidth + \rlap@{\@lign + \the\hashtoks@ + }% + \global\advance\and@\@ne\tabskip\displaywidth}\else + \@temptokena{\tabskip\@centering&\Tag@\llap@{\@lign + \the\hashtoks@ + }\global\advance\and@\@ne\tabskip\z@skip}\fi + \atcount@#1\relax\advance\atcount@\m@ne + \loop\ifnum\atcount@>\z@ + \toks@\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign + \the\hashtoks@}$\global\advance\and@\@ne + \tabskip\z@skip + &$\m@th\displaystyle{{}\@lign\the\hashtoks@}$\hfil\ifxat@ + \tabskip\@centering\fi\global\advance\and@\@ne}\advance\atcount@\m@ne + \repeat + \xdef\preamble@{\the\toks@\the\@temptokena}% + \xdef\preamble@@{\ifst@rred\noexpand\nonumber\fi\preamble@}% + \let\Tag@\TAG@} +\def\xxalignat#1{% + \ifmmode\nomath@env\DN@{\let\endxxalignat\relax\@gobble}\else$$% + \DN@{\@nameuse{xxalignat }#1}\fi + \collect@body\next@} +\@namedef{xxalignat }#1#2{\inany@true + \displaybreak@\intertext@ + \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@ + \xxattag@{#1}% + \vbox{\firstchoice@false\halign{\span\preamble@@\crcr#2\crcr}}$}% + \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth\bgroup + \span\preamble@@\crcr#2} +\expandafter\let\expandafter\endxxalignat\csname endxalignat*\endcsname +\def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@ + $\m@th\displaystyle{\the\hashtoks@}$&% + $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\@centering&}% + \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@ + \toks@ + \expandafter + {\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$% + \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil + \tabskip\@centering}\advance\atcount@\m@ne\repeat + \xdef\preamble@{\the\toks@\tabskip\z@skip}\xdef\preamble@@{\preamble@}} +\newdimen\gwidth@ +\newdimen\gmaxwidth@ +\def\gmeasure@#1{\gwidth@\z@\gmaxwidth@\z@\setbox\@ne\vbox{\Let@ + \firstchoice@false\let\tag\gobble@tag + \halign{\setboxz@h{$\m@th\displaystyle{##}$}\global\gwidth@\wdz@ + \ifdim\gwidth@>\gmaxwidth@\global\gmaxwidth@\gwidth@\fi + &\@gobble{##}\crcr#1\crcr}}} +\def\math@cr@@@gather{% + \if@eqnsw\global\tag@true\fi + \iftag@ + \DN@{&\relax \if@eqnsw + \tagform@\theequation \stepcounter{equation}% + \else\iftag@\df@tag\fi\fi}% + \else + \expandafter\@gobble\fi + \next@ + \global\@eqnswtrue\cr} +\def\gather{% + \ifmmode\nomath@env\DN@{\let\endgather\relax\@gobble}\else $$% + \ingather@true\inany@true + \stepcounter{equation}% + \let\tag\tag@in@align\st@rredfalse + \displaybreak@\intertext@ + \displ@y + \Let@\@seteqlabel\theequation + \let\math@cr@@@\math@cr@@@gather + \iftagsleft@\DN@{\@nameuse{gather }}\else + \DN@{\@nameuse{gather \space}}\fi\fi + \collect@body\next@} +\@namedef{gather*}{% + \ifmmode\nomath@env\DN@{\@namedef{endgather*}{}\@gobble}\else $$% + \ingather@true\inany@true + \let\tag\tag@in@align\st@rredtrue + \displaybreak@\intertext@ + \displ@y\Let@ + \let\math@cr@@@\math@cr@@@gather + \iftagsleft@\DN@{\@nameuse{gather }}\else + \DN@{\@nameuse{gather \space}}\fi\fi + \collect@body\next@} +\newdimen\glineht@ +\@namedef{gather \space}#1{% + \gmeasure@{#1}% + \if@fleqn %%*F + \advance\gmaxwidth@\@mathmargin %%*F + \fi %%*F + \global\dt@ptrue + \tabskip\@mathmargin %%*F + \halign to\displaywidth\bgroup + \ifst@rred\nonumber\else\global\@eqnswtrue\fi + \if@fleqn\else\hfil\fi %%*F + \strut@ + \setboxz@h{\global\tag@false$\m@th\displaystyle{##}$}% + \global\gwidth@\wdz@\boxz@ + \hfil + \tabskip\@centering %%*F + &\setboxz@h{\strut@{##}}% + \dimen@\displaywidth + \advance\dimen@-\gwidth@ + \if@fleqn %%*F + \advance\dimen@-\@mathmargin %%*F + \else %%*F + \divide\dimen@\tw@ %%*B + \fi %%*F + \ifdim\dimen@<\tw@\wdz@ %%* + \llap{\vtop{\@movetag\normalbaselines\null\boxz@}}%%*T %%* + \else + \llap{\boxz@}% %%* + \fi + \tabskip\z@skip + \crcr + #1% +} +\def\endgather{\math@cr + \black@\gmaxwidth@\egroup $$\setb@ck\global\@ignoretrue} + +\@namedef{endgather*}{\math@cr + \black@\gmaxwidth@\egroup $$\global\@ignoretrue} +\@namedef{gather }#1{% + \gmeasure@{#1}% + \global\dt@ptrue + \if@fleqn %%*F + \advance\gmaxwidth@\@mathmargin %%*F + \fi %%*F + \ifdim\gmaxwidth@>\displaywidth + \let\gdisplaywidth@\gmaxwidth@ + \else + \let\gdisplaywidth@\displaywidth + \fi + \tabskip\@mathmargin %%*F + \halign to\displaywidth\bgroup + \ifst@rred\nonumber\else\global\@eqnswtrue\fi + \if@fleqn\else\hfil\fi %%*F + \strut@ + \setboxz@h{\global\tag@false$\m@th\displaystyle{##}$}% + \global\gwidth@\wdz@ + \global\glineht@\ht\z@ + \boxz@ + \hfil + \tabskip\@centering %%*F + &\kern-\gdisplaywidth@ + \setboxz@h{\strut@{##}}% + \if@fleqn %%*F + \dimen@\@mathmargin %%*F + \else %%*F + \dimen@\displaywidth + \advance\dimen@-\gwidth@ + \divide\dimen@\tw@ %%*B + \fi %%*F + \ifdim\dimen@<\tw@\wdz@ %%* + \rlap{\vbox{\normalbaselines\boxz@\vbox to\glineht@{}}}% %%* + \else + \rlap{\boxz@}% %%* + \fi + \tabskip\gdisplaywidth@ + \crcr + #1% +} +\def\split{% + \ifinany@\let\next@\insplit@\else + \DN@{\PackageError{amstex}{\string\begin{split} is not allowed + here. Try the `aligned' environment.}\@ehb}\fi + \next@} +\def\insplit@{\global\setbox\z@\vbox\bgroup + \Let@ \restore@math@cr \default@tag % disallow use of \tag here + \ialign\bgroup \hfil\strut@ + $\m@th\displaystyle{##}$&$\m@th\displaystyle{{}##}$\hfill\crcr} +\def\endsplit{\crcr\egroup\egroup + \iftagsleft@\expandafter\lendsplit@\else + \expandafter\rendsplit@\fi} +\def\rendsplit@{\global\setbox9 \vbox + {\unvcopy\z@\global\setbox8 \lastbox\unskip}% + \setbox\@ne\hbox{\unhcopy8 \unskip\global\setbox\tw@\lastbox + \unskip\global\setbox\thr@@\lastbox}% + \global\setbox7 \hbox{\unhbox\tw@\unskip}% + \ifinalign@\ifctagsplit@ + \gdef\split@{\hbox to\wd\thr@@{}& + \vcenter{\vbox{\moveleft\wd\thr@@\boxz@}}}% + \else\gdef\split@{&\vbox{\moveleft\wd\thr@@\box9}\crcr + \box\thr@@&\box7}\fi + \else + \ifctagsplit@\gdef\split@{\vcenter{\boxz@}}\else + \gdef\split@{\box9\crcr\hbox{\box\thr@@\box7}}\fi + \fi + \aftergroup\split@} +\def\lendsplit@{\global\setbox9\vtop{\unvcopy\z@}% + \setbox\@ne\vbox{\unvcopy\z@\global\setbox8\lastbox}% + \setbox\@ne\hbox{\unhcopy8\unskip\setbox\tw@\lastbox + \unskip\global\setbox\thr@@\lastbox}% + \ifinalign@\ifctagsplit@ + \gdef\split@{\hbox to\wd\thr@@{}& + \vcenter{\vbox{\moveleft\wd\thr@@\box9}}}% + \else + \gdef\split@{\hbox to\wd\thr@@{}&\vbox{\moveleft\wd\thr@@\box9}}\fi + \else + \ifctagsplit@\gdef\split@{\vcenter{\box9}}\else + \gdef\split@{\box9}\fi + \fi\aftergroup\split@} +\newdimen\multlinegap +\multlinegap10pt +\newdimen\multlinetaggap@ +\multlinetaggap@10pt +\def\multline{% + \ifmmode\nomath@env\DN@{\let\endmultline\relax\@gobble}% + \else $$\DN@{\collect@body\multline@}\fi + \st@rredfalse\@eqnswtrue \@seteqlabel\theequation + \stepcounter{equation}\next@} +\@namedef{multline*}{% + \ifmmode\nomath@env\DN@{\@namedef{endmultline*}{}\@gobble}% + \else $$\DN@{\collect@body\multline@}\fi + \st@rredtrue\@eqnswfalse \let\@currentlabel\@empty + \next@} +\def\multline@{\inany@true\displaybreak@ + \global\tag@false + \def\tag{\ifst@rred\else + \global\advance\c@equation\m@ne\fi\tag@in@align}% + \iftagsleft@ + \expandafter\lmultline@@\else + \expandafter\rmultline@@\fi} +\newdimen\mwidth@ +\def\rmmeasure@#1{% + \def\shoveleft##1{##1}\def\shoveright##1{##1}% + \setbox\@ne\vbox{\firstchoice@false\Let@\halign{\setboxz@h + {$\m@th\@lign\displaystyle{}##$}\global\mwidth@\wdz@ + \crcr#1\crcr}}} +\newdimen\mlineht@ +\newif\ifzerocr@ +\newif\ifonecr@ +\def\lmmeasure@#1{\global\zerocr@true\global\onecr@false + \everycr{\noalign{\ifonecr@\global\onecr@false\fi + \ifzerocr@\global\zerocr@false\global\onecr@true\fi}}% + \def\shoveleft##1{##1}\def\shoveright##1{##1}% + \setbox\@ne\vbox{\Let@\firstchoice@false\halign{\setboxz@h + {$\m@th\@lign\displaystyle{}##$}\ifonecr@\global\mwidth@\wdz@ + \global\mlineht@\ht\z@\fi\crcr#1\crcr}}} +\newbox\mtagbox@ +\newdimen\ltwidth@ +\newdimen\rtwidth@ +\def\lmultline@@#1{% + \lmmeasure@{#1}% + \setbox\mtagbox@\hbox{% + \iftag@ + \df@tag + \else + \if@eqnsw + \global\tag@true + \tagform@\theequation + \fi + \fi + }% + \dimen@\mwidth@ + \advance\dimen@\wd\mtagbox@ + \advance\dimen@\multlinetaggap@ + \if@fleqn %%*F + \advance\dimen@\@mathmargin %%*F + \fi %%*F + \ifdim\dimen@>\displaywidth + \ltwidth@\z@ + \else + \ltwidth@\wd\mtagbox@ + \fi + \lmultline@@@#1 +} +\def\lmultline@@@{% + \displ@y + \def\shoveright##1{##1\hfilneg\hskip\multlinegap}% + \if@fleqn %%*F + \def\shoveleft##1{##1}% %%*F + \else %%*F + \def\shoveleft##1{% + \setboxz@h{$\m@th\displaystyle{}##1$}% + \setbox\@ne\hbox{$\m@th\displaystyle##1$}% + \hfilneg + \iftag@ + \ifdim\ltwidth@>\z@ + \hskip\ltwidth@ + \hskip\multlinetaggap@ + \fi + \else + \hskip\multlinegap + \fi + \hskip.5\wd\@ne + \hskip-.5\wdz@##1% + }% + \fi %%*F + \if@fleqn %%*F + \tabskip\@mathmargin %%*F + \else %%*F + \tabskip\z@skip %%* + \fi %%*F + \totwidth@\displaywidth %%*F + \if@fleqn %%*F + \advance\totwidth@-\@mathmargin %%*F + \fi %%*F + \halign\bgroup + \Let@ + \let\tag\gobble@tag + \hbox to\totwidth@{% %%*F + \strut@$\m@th\displaystyle + \if@fleqn %%*F + \hskip 0pt plus 1000pt %%*F + \else %%*F + \hfil + \fi %%*F + {}##\hfil$% + }% + \crcr + \if@fleqn %%*F + \hskip-\@mathmargin %%*F + \else %%*F + \hfilneg + \fi %%*F + \iftag@ + \ifdim\ltwidth@>\z@ + \box\mtagbox@ + \hskip\multlinetaggap@ + \else + \rlap{% + \vbox{% + \normalbaselines + \hbox{\strut@\box\mtagbox@}% + \vbox to\mlineht@{}% + }% + }% + \hskip\multlinegap %%* + \fi + \else + \hskip\multlinegap + \fi +} +\def\rmultline@@#1{% + \rmmeasure@{#1}% + \setbox\mtagbox@\hbox{% + \iftag@ + \df@tag + \else + \if@eqnsw + \global\tag@true + \tagform@\theequation + \fi + \fi + }% + \dimen@\mwidth@ + \advance\dimen@\wd\mtagbox@ + \advance\dimen@\multlinetaggap@ + \if@fleqn %%*F + \advance\dimen@\@mathmargin %%*F + \fi %%*F + \ifdim\dimen@>\displaywidth + \rtwidth@\z@ + \else + \rtwidth@\wd\mtagbox@ + \fi + \rmultline@@@#1 +} +\def\rmultline@@@{% + \displ@y + \def\shoveright##1{% + ##1% + \hfilneg + \iftag@ + \ifdim\rtwidth@>\z@ + \hskip\rtwidth@ + \hskip\multlinetaggap@ + \fi + \else + \hskip\multlinegap + \fi + }% + \if@fleqn %%*F + \def\shoveleft##1{##1}% %%*F + \else %%*F + \def\shoveleft##1{% + \setboxz@h{$\m@th\displaystyle{}##1$}% + \setbox\@ne\hbox{$\m@th\displaystyle##1$}% + \hfilneg + \hskip\multlinegap + \hskip.5\wd\@ne + \hskip-.5\wdz@ + ##1% + }% + \fi %%*F + \if@fleqn %%*F + \tabskip\@mathmargin %%*F + \else %%*F + \tabskip\z@skip %%* + \fi %%*F + \totwidth@\displaywidth %%*F + \if@fleqn %%*F + \advance\totwidth@-\@mathmargin %%*F + \fi %%*F + \halign\bgroup + \Let@ + \let\tag\gobble@tag + \hbox to\totwidth@{% + \strut@$\m@th\displaystyle + \if@fleqn %%*F + \hskip 0pt plus 1000pt %%*F + \else %%*F + \hfil + \fi %%*F + {}##\hfil$% + }% + \crcr + \if@fleqn %%*F + \hskip-\@mathmargin %%*F + \else %%*F + \hfilneg + \fi %%*F + \hskip\multlinegap +} +\def\endmultline{\iftagsleft@\expandafter\lendmultline@\else + \expandafter\rendmultline@\fi\global\@ignoretrue} +\expandafter\let\csname endmultline*\endcsname=\endmultline +\def\lendmultline@{\hfilneg\hskip\multlinegap\crcr\egroup$$} +\def\rendmultline@{% + \iftag@ + \ifdim\rtwidth@>\z@ + \hskip\multlinetaggap@ + \box\mtagbox@ + \else + \hskip\multlinegap %%* + \llap{% + \vtop{% + \@movetag %%*T + \normalbaselines\null\hbox{\strut@\box\mtagbox@}% + }% + }% + \fi + \else + \hskip\multlinegap + \fi + \hfilneg + \crcr + \egroup$$% +} +\expandafter\def + \expandafter\@arrayparboxrestore + \expandafter{\@arrayparboxrestore + \inany@false\ingather@false\inalign@false + \default@tag} +\def\equation{\gather\def\\{\PackageError{amstex}{\Invalid@@\\}\@eha}} +\def\endequation{\endgather} +\newenvironment{equation*}{% + \equation +}{% + \nonumber\endequation +} +\newcounter{parentequation}% Counter for ``parent equation''. +\newenvironment{subequations}{% + \refstepcounter{equation}% + \begingroup % conservative approach + \let\protect\@nx + \edef\@tempa{\def\@nx\theparentequation{\theequation}}% + \@xp\endgroup\@tempa + \setcounter{parentequation}{\value{equation}}% + \setcounter{equation}{0}% + \def\theequation{\theparentequation\alph{equation}}% + \ignorespaces +}{% + \setcounter{equation}{\value{parentequation}}% + \global\@ignoretrue +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\atdef@#1{\expandafter\def\csname\space @\string#1\endcsname} +\begingroup \catcode`\@=\active +\gdef @{\Iat} +\endgroup +\DeclareRobustCommand{\Iat}{\FN@\at@} +\def\at@{\let\next@\at@@ + \ifcat\noexpand\@let@token a\else + \ifcat\noexpand\@let@token0\else + \ifcat\noexpand\@let@token\relax\else + \let\@let@token@\at@@@\fi\fi\fi\next@} +\def\at@@#1{\expandafter + \@ifundefined{ @\string#1}% + {\DN@{\at@@@#1}}% + {\DN@{\csname\space @\string#1\endcsname}}% + \next@}% +\def\at@@@{\PackageError{amstex}{\Invalid@@ @}% + {\the\athelp@}% "I'll assume you wanted @@" + \char64\relax} +\newhelp\athelp@ +{Only certain combinations beginning with @ make sense to me.^^J% +I'll assume you wanted @@ for a printed @.} +\atdef@ @{{\atchar}}% to define @@ +\chardef\atchar=64 +\def\makeatother{\catcode64=\active} +\def\@tempa#1#2#3#4#5#6{% + {#1}{#2}\ifnum0#6=0{13}\@xp\@gobblefour + \else{#3}\fi\@tempa{#4}{#5}{#6}}% +\xdef\@currnamestack{\@xp\@tempa\@currnamestack{}{}{0}} +{\def\@makeother{\noexpand\@makeother\noexpand} +\xdef\@sanitize{\@sanitize\@makeother\@}} +{\def\do{\noexpand\do\noexpand} +\xdef\dospecials{\dospecials\do\@}} +\atdef@,{\ifmmode\mskip.1\thinmuskip\else \nonmatherr@{@,}\fi} +\atdef@!{\RIfM@\mskip-.1\thinmuskip\else \nonmatherr@{@!}\fi} + +\@ifpackageloaded{amscd}{% +}{% +\atdef@>#1>#2>{% + \global\bigaw@\minaw@ + \setboxz@h{$\m@th\scriptstyle\;{#1}\;\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;{#2}\;\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% +}% end of @>>> +\atdef@<#1<#2<{% + \global\bigaw@\minaw@ + \setboxz@h{$\m@th\scriptstyle\;\;{#1}\;$}% + \ifdim\wdz@>\bigaw@ \global\bigaw@\wdz@ \fi + \@ifnotempty{#2}{\setbox\@ne\hbox{$\m@th\scriptstyle\;\;{#2}\;$}% + \ifdim\wd\@ne>\bigaw@ \global\bigaw@\wd\@ne \fi}% + \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill@\displaystyle}}% + \limits^{#1}\@ifnotempty{#2}{_{#2}}}% +}% end of @<<< +}% end of @ifpackageloaded +\@ifundefined{minaw@}{\newdimen\minaw@}{} +\minaw@11.111pt +\@ifundefined{bigaw@}{\newdimen\bigaw@}{} +\atdef@-{\let\next-%% + \DN@{\ifx\next-%% + \def\next-{\setbox\z@\hbox{-}\unhbox\z@\FN@\next@}%% + \expandafter\next \else\nobreak\fi}%% + \next@-}%% +\def\leftroot{\PackageError{amstex}{\Invalid@@\leftroot}\@eha} +\def\uproot{\PackageError{amstex}{\Invalid@@\uproot}\@eha} +\newcount\uproot@ +\newcount\leftroot@ +\def\root{\relaxnext@ + \DN@{\ifx\@let@token\uproot\let\next@\nextii@\else + \ifx\@let@token\leftroot\let\next@\nextiii@\else + \let\next@\plainroot@\fi\fi\next@}% + \def\nextii@\uproot##1{\uproot@##1\relax\FN@\nextiv@}% + \def\nextiv@{\ifx\@let@token\@sptoken\DN@. {\FN@\nextv@}\else + \DN@.{\FN@\nextv@}\fi\next@.}% + \def\nextv@{\ifx\@let@token\leftroot\let\next@\nextvi@\else + \let\next@\plainroot@\fi\next@}% + \def\nextvi@\leftroot##1{\leftroot@##1\relax\plainroot@}% + \def\nextiii@\leftroot##1{\leftroot@##1\relax\FN@\nextvii@}% + \def\nextvii@{\ifx\@let@token\@sptoken + \DN@. {\FN@\nextviii@}\else + \DN@.{\FN@\nextviii@}\fi\next@.}% + \def\nextviii@{\ifx\@let@token\uproot\let\next@\nextix@\else + \let\next@\plainroot@\fi\next@}% + \def\nextix@\uproot##1{\uproot@##1\relax\plainroot@}% + \bgroup\uproot@\z@\leftroot@\z@\FN@\next@} +\def\plainroot@#1\of#2{\setbox\rootbox\hbox{% + $\m@th\scriptscriptstyle{#1}$}% + \mathchoice{\r@@t\displaystyle{#2}}{\r@@t\textstyle{#2}} + {\r@@t\scriptstyle{#2}}{\r@@t\scriptscriptstyle{#2}}\egroup} +\def\r@@t#1#2{\setboxz@h{$\m@th#1\@@sqrt{#2}$}% + \dimen@\ht\z@\advance\dimen@-\dp\z@ + \setbox\@ne\hbox{$\m@th#1\mskip\uproot@ mu$}% + \advance\dimen@ by1.667\wd\@ne + \mkern-\leftroot@ mu\mkern5mu\raise.6\dimen@\copy\rootbox + \mkern-10mu\mkern\leftroot@ mu\boxz@} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Fragment from old amsfonts.sty to deal with msam, msbm, eufm fonts; +%% omit if `noamsfonts' option was specified. +\ifx F\@amsfonts \endinput \fi +\DeclareSymbolFont{AMSa}{U}{msa}{m}{n} +\DeclareSymbolFont{AMSb}{U}{msb}{m}{n} +\ifx P\@amsfonts + \DeclareFontFamily{U}{msa}{}% + \DeclareFontShape{U}{msa}{m}{n}{<-6>msam5<6-8>msam7<8->msam10}{}% + \DeclareFontFamily{U}{msb}{}% + \DeclareFontShape{U}{msb}{m}{n}{<-6>msbm5<6-8>msbm7<8->msbm10}{}% + \DeclareFontFamily{U}{euf}{}% + \DeclareFontShape{U}{euf}{m}{n}{<-6>eufm5<6-8>eufm7<8->eufm10}{}% + \DeclareFontShape{U}{euf}{b}{n}{<-6>eufb5<6-8>eufb7<8->eufb10}{}% +\fi +\@ifundefined{yen}{% + \edef\yen{\noexpand\mathhexbox{\hexnumber@\symAMSa}55} +}{} +\@ifundefined{checkmark}{% + \edef\checkmark{\noexpand\mathhexbox{\hexnumber@\symAMSa}58} +}{} +\@ifundefined{circledR}{% + \edef\circledR{\noexpand\mathhexbox{\hexnumber@\symAMSa}72} +}{} +\@ifundefined{maltese}{% + \edef\maltese{\noexpand\mathhexbox{\hexnumber@\symAMSa}7A} +}{} +\begingroup \catcode`\"=12 +\DeclareMathDelimiter\ulcorner{\mathopen} {AMSa}{"70}{AMSa}{"70} +\DeclareMathDelimiter\urcorner{\mathclose}{AMSa}{"71}{AMSa}{"71} +\DeclareMathDelimiter\llcorner{\mathopen} {AMSa}{"78}{AMSa}{"78} +\DeclareMathDelimiter\lrcorner{\mathclose}{AMSa}{"79}{AMSa}{"79} +\xdef\widehat#1{\noexpand\@mathmeasure\z@\textstyle{#1}% + \noexpand\ifdim\noexpand\wdz@>\tw@ em% + \mathaccent"0\hexnumber@\symAMSb 5B{#1}% + \noexpand\else\mathaccent"0362{#1}\noexpand\fi} +\xdef\widetilde#1{\noexpand\@mathmeasure\z@\textstyle{#1}% + \noexpand\ifdim\noexpand\wdz@>\tw@ em% + \mathaccent"0\hexnumber@\symAMSb 5D{#1}% + \noexpand\else\mathaccent"0365{#1}\noexpand\fi} +\DeclareMathSymbol\dabar@{\mathord}{AMSa}{"39} +\xdef\dashrightarrow{\mathrel{\dabar@\dabar@ + \mathchar"0\hexnumber@\symAMSa 4B}}% +\xdef\dashleftarrow{\mathrel{\mathchar"0\hexnumber@\symAMSa 4C\dabar@ + \dabar@}}% +\global\let\dasharrow\dashrightarrow +\global\let\rightleftharpoons\undefined +\DeclareMathSymbol\rightleftharpoons{\mathrel}{AMSa}{"0A} +\global\let\angle\undefined +\DeclareMathSymbol\angle {\mathord}{AMSa}{"5C} +\global\let\hbar\undefined +\DeclareMathSymbol\hbar {\mathord}{AMSb}{"7E} +\global\let\sqsubset\undefined +\DeclareMathSymbol\sqsubset {\mathrel}{AMSa}{"40} +\global\let\sqsupset\undefined +\DeclareMathSymbol\sqsupset {\mathrel}{AMSa}{"41} +\global\let\mho\undefined +\DeclareMathSymbol\mho {\mathord}{AMSb}{"66} +\DeclareMathSymbol\square {\mathord}{AMSa}{"03} +\DeclareMathSymbol\lozenge {\mathord}{AMSa}{"06} +\DeclareMathSymbol\vartriangleright {\mathrel}{AMSa}{"42} +\DeclareMathSymbol\vartriangleleft {\mathrel}{AMSa}{"43} +\DeclareMathSymbol\trianglerighteq {\mathrel}{AMSa}{"44} +\DeclareMathSymbol\trianglelefteq {\mathrel}{AMSa}{"45} +\DeclareMathSymbol\rightsquigarrow {\mathrel}{AMSa}{"20} +\def\@tempa{\not@base\lhd} +\ifx\lhd\@tempa + \global\let\lhd\vartriangleleft + \global\let\unlhd\trianglelefteq + \global\let\rhd\vartriangleright + \global\let\unrhd\trianglerighteq + \global\let\Box\square + \global\let\Diamond\lozenge + \global\let\leadsto\rightsquigarrow +\xdef\Join{\mathrel{\mathchar"0\hexnumber@\symAMSb 6F\mkern-13.8mu% + \mathchar"0\hexnumber@\symAMSb 6E}} +\fi +\endgroup +\DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} +\SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} +\DeclareSymbolFontAlphabet{\mathbb}{AMSb} +\DeclareFontEncodingDefaults{\relax}{\def\accentclass@{7}} +\def\frak{\mathfrak} +\def\Bbb{\mathbb} +\def\bold{\mathbf} +\begingroup \catcode`\"=12 \relax +\gdef\newsymbol#1#2#3#4#5{% + \@ifdefinable#1{% + \edef\next@ + {\ifcase #2 \or + \hexnumber@\symAMSa\or + \hexnumber@\symAMSb\fi}% + \ifx\next@\@empty + \PackageError{amsfonts}{\Invalid@@\newsymbol}\@ehd% + \else + \global\mathchardef#1"#3\next@#4#5 + \fi}} +\endgroup +%% Some odds and ends +\def\sphat{^{\mathchoice{}{}% + {\,\,\smash[b]{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}% + {\,\smash[b]{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}} +\def\spcheck{^\vee} +\def\sptilde{^\sim} +\def\spdot{^{\hbox{\raise\ex@\hbox{\normalfont .}}}} +\def\spddot{^{\hbox{\raise\ex@\hbox{\normalfont ..}}}} +\def\spdddot{^{\hbox{\raise\ex@\hbox{\normalfont...}}}} +\def\spbreve{^{\!\smash[b]{\hbox{\lower4\ex@\hbox{\u{}}}}}} +\def\fracwithdelims#1#2{\new@ifnextchar[{\fracwithdelims@#1#2}% + {\fracwithdelims@#1#2[\@empty]}} +\def\fracwithdelims@#1#2[#3]#4#5{\relax + \ifx\@empty#3{#4\overwithdelims#1#2#5}\else + {#4\abovewithdelims#1#2#3\relax#5}\fi} +\def\accentedsymbol#1#2{% + \expandafter\newbox + \csname\expandafter\@gobble\string#1@box\endcsname + \expandafter\setbox + \csname\expandafter\@gobble\string#1@box\endcsname + \hbox{$\m@th#2$}% + \newcommand{#1}{% + \expandafter\copy + \csname\expandafter\@gobble\string#1@box\endcsname{}}% +} +\def~{\nobreakspace} +\DeclareRobustCommand{\nobreakspace}{\unskip\nobreak\ \ignorespaces} +%% +%% End of file `amstex.sty'. diff --git a/Master/texmf-dist/tex/latex/amsmath/amstext.sty b/Master/texmf-dist/tex/latex/amsmath/amstext.sty new file mode 100644 index 00000000000..6c3c1692d89 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amstext.sty @@ -0,0 +1,101 @@ +%% +%% This is file `amstext.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amstext.dtx +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amstext.dtx", +%%% version = "2.01", +%%% date = "2000/06/29", +%%% time = "08:34:33 EDT", +%%% checksum = "09860 314 1647 12368", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% supported = "yes", +%%% keywords = "latex, math, text", +%%% abstract = "This is a \LaTeX{} package that defines a +%%% \cn{\text} macro, which makes it easy to +%%% incorporate fragments of text inside a displayed +%%% equation or a sub or superscript. Font sizes +%%% are automatically scaled in sub/superscripts.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) +[1994/12/01]% LaTeX date must be December 1994 or later +\ProvidesPackage{amstext}[2000/06/29 v2.01] +\RequirePackage{amsgen} +\DeclareRobustCommand{\text}{% + \ifmmode\expandafter\text@\else\expandafter\mbox\fi} +\let\nfss@text\text +\def\text@#1{{\mathchoice + {\textdef@\displaystyle\f@size{#1}}% + {\textdef@\textstyle\f@size{\firstchoice@false #1}}% + {\textdef@\textstyle\sf@size{\firstchoice@false #1}}% + {\textdef@\textstyle \ssf@size{\firstchoice@false #1}}% + \check@mathfonts + }% +} +\def\textdef@#1#2#3{\hbox{{% + \everymath{#1}% + \let\f@size#2\selectfont + #3}}} +\newif\iffirstchoice@ +\firstchoice@true +\def\stepcounter#1{% + \iffirstchoice@ + \addtocounter{#1}\@ne + \begingroup \let\@elt\@stpelt \csname cl@#1\endcsname \endgroup + \fi +} +\def\addtocounter#1#2{% + \iffirstchoice@ + \@ifundefined {c@#1}{\@nocounterr {#1}}% + {\global \advance \csname c@#1\endcsname #2\relax}% + \fi} +\let\m@gobble\@empty +\@xp\let\csname m@gobble4\endcsname\@gobblefour +\long\@xp\def\csname m@gobble6\endcsname#1#2#3#4#5#6{} +\toks@{% + \csname m@gobble\iffirstchoice@\else 4\fi\endcsname + \protect} +\edef\GenericInfo{\the\toks@ + \@xp\@nx\csname GenericInfo \endcsname} +\edef\GenericWarning{\the\toks@ + \@xp\@nx\csname GenericWarning \endcsname} +\toks@{% + \csname m@gobble\iffirstchoice@\else 6\fi\endcsname + \protect} +\edef\GenericError{\the\toks@ + \@xp\@nx\csname GenericError \endcsname} +\begingroup \catcode`\"=12 +\gdef\mathhexbox#1#2#3{\text{$\m@th\mathchar"#1#2#3$}} +\endgroup +\endinput +%% +%% End of file `amstext.sty'. diff --git a/Master/texmf-dist/tex/latex/amsmath/amsxtra.sty b/Master/texmf-dist/tex/latex/amsmath/amsxtra.sty new file mode 100644 index 00000000000..10a65df4a20 --- /dev/null +++ b/Master/texmf-dist/tex/latex/amsmath/amsxtra.sty @@ -0,0 +1,80 @@ +%% +%% This is file `amsxtra.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% amsxtra.dtx +%% +%%% ==================================================================== +%%% @LaTeX-file{ +%%% filename = "amsxtra.dtx", +%%% version = "1.2c", +%%% date = "1999/11/15", +%%% time = "14:15:41 EST", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright 1995, 1999 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% checksum = "41382 136 533 5124", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, accentedsymbol, fracwithdelims, sphat", +%%% supported = "yes", +%%% abstract = "This package contains some seldom-used commands +%%% ported from AMS-TeX in 1989.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\ProvidesPackage{amsxtra}[1999/11/15 v1.2c] +\@ifpackageloaded{amstex}{}{% + \RequirePackage{amsmath}[1996/10/01 v1.2]} +\def\sphat{^{\mathchoice{}{}% + {\,\,\smash[b]{\hbox{\lower4\ex@\hbox{$\m@th\widehat{\null}$}}}}% + {\,\smash[b]{\hbox{\lower3\ex@\hbox{$\m@th\hat{\null}$}}}}}} +\def\spcheck{^\vee} +\def\sptilde{^\sim} +\def\spdot{^{\hbox{\raise\ex@\hbox{\normalfont .}}}} +\def\spddot{^{\hbox{\raise\ex@\hbox{\normalfont ..}}}} +\def\spdddot{^{\hbox{\raise\ex@\hbox{\normalfont...}}}} +\def\spbreve{^{\!\smash[b]{\hbox{\lower4\ex@\hbox{\u{}}}}}} +\@ifpackageloaded{amstex}{% +\def\fracwithdelims#1#2{\new@ifnextchar[{\fracwithdelims@#1#2}% + {\fracwithdelims@#1#2[\@empty]}} +\def\fracwithdelims@#1#2[#3]#4#5{\relax + \ifx\@empty#3{#4\overwithdelims#1#2#5}\else + {#4\abovewithdelims#1#2#3\relax#5}\fi} +}{} +\def\accentedsymbol#1#2{% + \expandafter\newbox + \csname\expandafter\@gobble\string#1@box\endcsname + \expandafter\setbox + \csname\expandafter\@gobble\string#1@box\endcsname + \hbox{$\m@th#2$}% + \newcommand{#1}{% + \expandafter\copy + \csname\expandafter\@gobble\string#1@box\endcsname{}}% +} +\def~{\nobreakspace} +\DeclareRobustCommand{\nobreakspace}{\unskip\nobreak\ \ignorespaces} +\endinput +%% +%% End of file `amsxtra.sty'. diff --git a/Master/texmf-dist/tpm/amsmath.tpm b/Master/texmf-dist/tpm/amsmath.tpm new file mode 100644 index 00000000000..e057d187ba4 --- /dev/null +++ b/Master/texmf-dist/tpm/amsmath.tpm @@ -0,0 +1,61 @@ +<!DOCTYPE rdf:RDF SYSTEM "../../support/tpm.dtd"> +<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:TPM="http://texlive.dante.de/"> + <rdf:Description about="http://texlive.dante.de/texlive/Package/amsmath.zip"> + <TPM:Name>amsmath</TPM:Name> + <TPM:Type>Package</TPM:Type> + <TPM:Date>2006/08/26 16:19:36</TPM:Date> + <TPM:Version></TPM:Version> + <TPM:Creator>karl</TPM:Creator> + <TPM:Title>The amsmath package.</TPM:Title> + <TPM:Description></TPM:Description> + <TPM:Author></TPM:Author> + <TPM:Size>3434956</TPM:Size> + <TPM:Build/> + <TPM:RunFiles size="180640"> +texmf-dist/tex/latex/amsmath/amsbsy.sty +texmf-dist/tex/latex/amsmath/amscd.sty +texmf-dist/tex/latex/amsmath/amsgen.sty +texmf-dist/tex/latex/amsmath/amsmath.sty +texmf-dist/tex/latex/amsmath/amsopn.sty +texmf-dist/tex/latex/amsmath/amstex.sty +texmf-dist/tex/latex/amsmath/amstext.sty +texmf-dist/tex/latex/amsmath/amsxtra.sty +texmf-dist/tpm/amsmath.tpm + </TPM:RunFiles> + <TPM:DocFiles size="2751948"> +texmf-dist/doc/latex/amsmath/amsbsy.pdf +texmf-dist/doc/latex/amsmath/amscd.pdf +texmf-dist/doc/latex/amsmath/amsgen.pdf +texmf-dist/doc/latex/amsmath/amsldoc.pdf +texmf-dist/doc/latex/amsmath/amsmath.pdf +texmf-dist/doc/latex/amsmath/amsopn.pdf +texmf-dist/doc/latex/amsmath/amstext.pdf +texmf-dist/doc/latex/amsmath/amsxtra.pdf +texmf-dist/doc/latex/amsmath/diffs-m.txt +texmf-dist/doc/latex/amsmath/subeqn.pdf +texmf-dist/doc/latex/amsmath/technote.pdf +texmf-dist/doc/latex/amsmath/testmath.pdf + </TPM:DocFiles> + <TPM:SourceFiles size="504746"> +texmf-dist/source/latex/amsmath/00readme.txt +texmf-dist/source/latex/amsmath/ams-m1.ins +texmf-dist/source/latex/amsmath/amsbsy.dtx +texmf-dist/source/latex/amsmath/amscd.dtx +texmf-dist/source/latex/amsmath/amsdtx.cls +texmf-dist/source/latex/amsmath/amsgen.dtx +texmf-dist/source/latex/amsmath/amsldoc.cls +texmf-dist/source/latex/amsmath/amsldoc.tex +texmf-dist/source/latex/amsmath/amsmath.dtx +texmf-dist/source/latex/amsmath/amsopn.dtx +texmf-dist/source/latex/amsmath/amstext.dtx +texmf-dist/source/latex/amsmath/amsxtra.dtx +texmf-dist/source/latex/amsmath/install.txt +texmf-dist/source/latex/amsmath/manifest.txt +texmf-dist/source/latex/amsmath/subeqn.tex +texmf-dist/source/latex/amsmath/technote.tex +texmf-dist/source/latex/amsmath/testmath.tex + </TPM:SourceFiles> + <TPM:Provides>Package/amsmath</TPM:Provides> + </rdf:Description> +</rdf:RDF> + |