Compare commits
2061 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f3fd06ef7a | |||
| d97721f38b | |||
| 8d3ec8605e | |||
| 7517389072 | |||
| b7011139cf | |||
| 6e8a68dd0d | |||
| 4e8309d3e4 | |||
| 371ab21d16 | |||
| cbcbc4bc3f | |||
| dc9b2e1766 | |||
| 334df62651 | |||
| 046353cf7e | |||
| 51f2f032d7 | |||
| 70360edb96 | |||
| 2b12ab9206 | |||
| 87a01e04ce | |||
| 5f04200bd0 | |||
| aa823b5a2d | |||
| 9012dee888 | |||
| 81d5f1a8bb | |||
| d2b0a22a8f | |||
| 355e6b1f18 | |||
| 7a2c9107c3 | |||
| 127473fff8 | |||
| 9a79b0a800 | |||
| ca13298d00 | |||
| eaf82e6367 | |||
| cae290ded7 | |||
| a22208a0be | |||
| bc877dc9dc | |||
| 40b1775d42 | |||
| c2dc605adb | |||
| a1e1af07a4 | |||
| 76948130f6 | |||
| f71ba31bfe | |||
| b7caa228e6 | |||
| 0101dd2f65 | |||
| c8baa61fe3 | |||
| 104335706a | |||
| 7c60841bad | |||
| f6a7c57175 | |||
| 730acee609 | |||
| b7295df662 | |||
| aba3ec37d9 | |||
| 020c98bfad | |||
| d33d11e086 | |||
| 2e41751cf6 | |||
| f493150825 | |||
| 68d0dd0cd5 | |||
| 38fc7e69c1 | |||
| 5b7b9f40ae | |||
| 17162aa091 | |||
| 0c89aa2b3e | |||
| 1980e39876 | |||
| 2b949014b8 | |||
| b399496ec2 | |||
| 8433327926 | |||
| bb207f43d0 | |||
| 333af9b76c | |||
| 18a16665cc | |||
| 6c0796733d | |||
| 97ed5a7c57 | |||
| c87c8c446e | |||
| bfbfb21c17 | |||
| 137728cdab | |||
| 3f7fd21d4a | |||
| 2204cef0ef | |||
| 29ad7127d1 | |||
| 123518b940 | |||
| dbe849707a | |||
| 986a76cf8e | |||
| 42439033c8 | |||
| 421ff18788 | |||
| 519a275ff0 | |||
| 5a95f79b32 | |||
| 627ee5bbbe | |||
| a9d300341c | |||
| 6b7e912010 | |||
| 4feae80814 | |||
| 5f5730fe2e | |||
| 5f784f5e10 | |||
| 35a44efafd | |||
| b32dcfa8dd | |||
| 38fc32bbdd | |||
| 6c7b12ae5e | |||
| 649e19bdb1 | |||
| a4266170ea | |||
| 6e6d9d8c1f | |||
| e49758334f | |||
| 580068212d | |||
| 504278d9ba | |||
| 214056a88a | |||
| e310f76030 | |||
| 83abe62125 | |||
| 8e7a714991 | |||
| 4f67710ed2 | |||
| 8ec8be5db3 | |||
| 92da563211 | |||
| 2eb5a7e4b8 | |||
| 23110d5f05 | |||
| 18de3272e3 | |||
| 1e81c42818 | |||
| ef6e0e8a07 | |||
| ba575b886d | |||
| c8f856109d | |||
| 4035c579c7 | |||
| 8bab3de510 | |||
| 9ab4bbb17c | |||
| ae024eb3b3 | |||
| db84653bf2 | |||
| d8ebba114f | |||
| b9d7375dba | |||
| 676811206d | |||
| ff1baf0036 | |||
| 3d12aeb8b2 | |||
| 5a8750a975 | |||
| 0cb303f09f | |||
| edc7d0b50b | |||
| 2c268a9f8c | |||
| d61a09d421 | |||
| 0eee014a8b | |||
| 76f6b6e81c | |||
| 40215c3da2 | |||
| 1056d5cf16 | |||
| f74c6c1706 | |||
| 821614e45a | |||
| 32e8618ed4 | |||
| e123611fed | |||
| 5c3394c227 | |||
| da6708e61d | |||
| c99da8ff34 | |||
| 9ab308412c | |||
| 4efcba6ceb | |||
| ca7c708bf9 | |||
| 1f70dca752 | |||
| d32c5a88f7 | |||
| b209127000 | |||
| 6e37601b25 | |||
| 23b97daa84 | |||
| 7329b7595d | |||
| f0bb300e03 | |||
| 6a1ea82ff1 | |||
| 6011deb930 | |||
| 28bfe02411 | |||
| 862c6d5d2e | |||
| 4c491a01db | |||
| 16676e0788 | |||
| ebf46629b1 | |||
| 36811490d0 | |||
| f0122cebb5 | |||
| e2804d6313 | |||
| ae7ed4eafa | |||
| aae320ddff | |||
| a71cb40bdf | |||
| 2ba5d389a8 | |||
| f1e8d30a43 | |||
| e6ee27a083 | |||
| 4008bf12e7 | |||
| 0b1d7ab01c | |||
| a45101cfe9 | |||
| d5970d6274 | |||
| 83f4ccfa70 | |||
| 707648bde8 | |||
| 0707205374 | |||
| f6f81b39f8 | |||
| f8829c68d6 | |||
| 54bbd1d789 | |||
| ee267f72a2 | |||
| f516b1cb79 | |||
| 0e4c8342ab | |||
| 6f61ddae77 | |||
| e312641cbd | |||
| 07de956b1d | |||
| 4d549b1660 | |||
| e1a13aef1f | |||
| cc3eb233c7 | |||
| f0b04f1334 | |||
| 9b89e31679 | |||
| 2b380ee6bc | |||
| caf4da73e2 | |||
| 56e36df6bd | |||
| c8fed4d50d | |||
| c619920452 | |||
| 70ede99545 | |||
| 9862c51e3f | |||
| f0dbc2801b | |||
| 7c65d65cb1 | |||
| 5dd6c40933 | |||
| 5487563a71 | |||
| 7458e396ee | |||
| 8f104ec09c | |||
| 8fe4c614db | |||
| c137c2af4b | |||
| 2402c9ef3b | |||
| bbe609974a | |||
| 88c624877e | |||
| 41d7cf75c5 | |||
| 9da11dba10 | |||
| d1857e5824 | |||
| fc64d88ce9 | |||
| 3713890b5e | |||
| efaa6a0ba2 | |||
| d55a3432a2 | |||
| 0fda253457 | |||
| 2216d67d5a | |||
| a04af6c638 | |||
| 91c04cd44c | |||
| 1c98a787ab | |||
| 87902f258a | |||
| 3740a7f6ff | |||
| b6b176fdc1 | |||
| 77aaeef5ff | |||
| d1b1375629 | |||
| 569eac3a06 | |||
| a5ecb772ae | |||
| 736897a168 | |||
| c1f6f0b429 | |||
| 9fd9acb573 | |||
| beff52a68e | |||
| cc33d81473 | |||
| 1a27f04577 | |||
| 2f2487150a | |||
| 6d44bd7bc8 | |||
| e2d9d1f4d5 | |||
| 958410146b | |||
| 0a9b9ff709 | |||
| bce9800142 | |||
| 7f07f652d4 | |||
| 1b5f0b910b | |||
| e1aa4c02a0 | |||
| 976f55e1b2 | |||
| 29a8b893f1 | |||
| c991149422 | |||
| 175c0ceab5 | |||
| 9d48ea0079 | |||
| 042ad2d8c4 | |||
| 19868a10ef | |||
| 92b17f9053 | |||
| 2dc527b60f | |||
| fa08ce35cc | |||
| 8413e5b5ee | |||
| aa16f6ba2a | |||
| 22e0fdc822 | |||
| 0de56202e9 | |||
| bcec052e35 | |||
| e28a41bb8f | |||
| 17c574467f | |||
| 8f350976a1 | |||
| dfb4281a14 | |||
| 7881237de2 | |||
| 05daab661e | |||
| c0e6de899b | |||
| c103f3ebdc | |||
| 7cabd684a9 | |||
| af344c1d25 | |||
| b40a344c49 | |||
| e0a2b183ad | |||
| 97857d0e3f | |||
| 6fcfe7895e | |||
| f5f655e3a1 | |||
| 94fe2f59d3 | |||
| 66fd8eef1f | |||
| fb5c65827d | |||
| bb79cf5ce6 | |||
| f72e8610da | |||
| b76a250596 | |||
| 2aea55a92c | |||
| 073137af7d | |||
| e966de6922 | |||
| 616c004058 | |||
| 59bb48340e | |||
| 7ec80bf2f1 | |||
| 006dd36078 | |||
| 58225c7c20 | |||
| 04501c205a | |||
| 253ba89f90 | |||
| 7f598cb49e | |||
| d3402dded2 | |||
| f222efd281 | |||
| 8f6c19b3fd | |||
| f44367c31b | |||
| c31c68200b | |||
| ddfaf8c091 | |||
| ca9702088f | |||
| 413e962871 | |||
| 848cef26ee | |||
| b40b3aa9fc | |||
| ae853e074a | |||
| f4838d12c6 | |||
| 4eb7fd211c | |||
| efd1d3992d | |||
| d4a9da0db5 | |||
| bde72cb52e | |||
| f251e0f556 | |||
| 5de2442540 | |||
| b5c4fdcc83 | |||
| b50872497e | |||
| 6d0b42b18f | |||
| 70bf766cd0 | |||
| 104c959bf7 | |||
| 3c4c2a072c | |||
| 769f8ec8d6 | |||
| 64c4ee9c05 | |||
| 6857995442 | |||
| eade94dcfd | |||
| daef5fe9d2 | |||
| b8629729b9 | |||
| 4e2b1442bd | |||
| 83fbb16c3b | |||
| d2ea03fbb9 | |||
| b1ac06cd5f | |||
| 19751ec37f | |||
| 814caff755 | |||
| 8d611ea25a | |||
| 1a8b6d6823 | |||
| 78289a53bb | |||
| 303796c773 | |||
| 825f43c429 | |||
| 454b5e94dc | |||
| 7ddbab76c1 | |||
| 6475394133 | |||
| 874c20e69f | |||
| b93083667d | |||
| 8f7108c56f | |||
| a6167d88cd | |||
| 197a2bd57b | |||
| fd73eb6d05 | |||
| 963eb24fce | |||
| 5c5bfc71bd | |||
| 3b9af34e0d | |||
| daaa82fab5 | |||
| ff52933320 | |||
| 84c01bb69b | |||
| eb9b71e94a | |||
| 1080e776a3 | |||
| f8673f565a | |||
| 6d4f97fdc4 | |||
| c85e14336e | |||
| b1cdf91789 | |||
| fd9156821c | |||
| feb098bf45 | |||
| b0ad3265e7 | |||
| 02fd12339f | |||
| 9048d6a03d | |||
| b5eed33932 | |||
| c660222300 | |||
| 93f6b0373a | |||
| 43d3271b4e | |||
| 66d09b76c7 | |||
| 90043a66cb | |||
| 317ccef7c8 | |||
| ef6bd9b538 | |||
| 012f1fcd47 | |||
| e46861f827 | |||
| 4549fdb9c5 | |||
| f5ad5e397e | |||
| f64ecd340b | |||
| 3060a3576f | |||
| 771ca331e9 | |||
| 92e42236f5 | |||
| 7ada448bce | |||
| c2258c449e | |||
| 051b88fe70 | |||
| 25578961c0 | |||
| b47db5611b | |||
| efe1df769b | |||
| 812cd311c3 | |||
| 676fb474b9 | |||
| 612267d322 | |||
| 167b5c4b1f | |||
| d87a481ffb | |||
| 6f54af5556 | |||
| ddea445a28 | |||
| e82bf4ce46 | |||
| f75037db42 | |||
| 01c7b5f380 | |||
| 0b906dd952 | |||
| dac91e9998 | |||
| 6de0914788 | |||
| e4f702d1e2 | |||
| a75b003c78 | |||
| 08d822a3ff | |||
| 2f864c5e15 | |||
| c9e3e9aa84 | |||
| 7139590798 | |||
| 37c1183515 | |||
| 935a080152 | |||
| 6f11ce71c4 | |||
| f41a85ced9 | |||
| 97fab1df14 | |||
| f6273ded80 | |||
| 9b7028a74e | |||
| 16894330a9 | |||
| 35f6952519 | |||
| ca50e87538 | |||
| 0870655455 | |||
| ba24a7bb8c | |||
| 56ad3251fd | |||
| f32d7465a2 | |||
| 750e2ee677 | |||
| cc273f30e9 | |||
| 64fd56e8ef | |||
| 0fa47047f3 | |||
| 6e2559f77a | |||
| cabe9f353b | |||
| 5aa5bccda3 | |||
| 16ea6245e3 | |||
| df9382bbc3 | |||
| 39aa290ea6 | |||
| f9b8b4e8d3 | |||
| 8aa10fe400 | |||
| e202698bf1 | |||
| c1f94d2deb | |||
| 11c2bf7dae | |||
| 159a2e13ad | |||
| 1e53d7ba53 | |||
| 53cf0e1148 | |||
| 2d1e49e3f2 | |||
| 199161f611 | |||
| ece5c775f1 | |||
| 895d2eb97e | |||
| 3121c43b71 | |||
| c5f3270ff6 | |||
| 318a4717d1 | |||
| 37a11546fa | |||
| 643a42aea6 | |||
| 2b8497531d | |||
| fdbde7840d | |||
| d702026134 | |||
| e2d55b45ba | |||
| 72c8e1aff3 | |||
| 51e8caf369 | |||
| e7e7937678 | |||
| a0f5a60ea0 | |||
| af29c6e441 | |||
| 00dfecb1c7 | |||
| cc249bef15 | |||
| 9a2231804d | |||
| 1edcf15bcd | |||
| 0190e08763 | |||
| 6b20c5df71 | |||
| 8da809f22c | |||
| 54ece4e432 | |||
| a50fcd31e2 | |||
| d3cc5a69c4 | |||
| 07ca53a778 | |||
| abb516e1b1 | |||
| 6910b6d024 | |||
| 435a3e62ba | |||
| f02c934ad7 | |||
| 236680aab9 | |||
| 6316f97c06 | |||
| 14830af306 | |||
| b620decde7 | |||
| b08ca620a0 | |||
| 66a2bb0393 | |||
| 0675844d97 | |||
| 148eda2990 | |||
| 330f7b4002 | |||
| def0fc8866 | |||
| fa1bcf9608 | |||
| 5a5e56a47b | |||
| e64f40eaa3 | |||
| 3f3d86ad4c | |||
| 91833dd72e | |||
| c049f7c11f | |||
| 6bd2f3bff5 | |||
| 8c3c519679 | |||
| 4e5002a31e | |||
| 5a53c58b04 | |||
| a61d1e3d10 | |||
| 1a50f99189 | |||
| 6caacbf388 | |||
| f876aa7d0f | |||
| 31e1281600 | |||
| 90072a9332 | |||
| bacd2893b9 | |||
| 7362fd859b | |||
| 3811fb46b3 | |||
| ab42c0c0df | |||
| de5aed2f6a | |||
| ce68a88293 | |||
| 288f75929d | |||
| 8528dd0c7f | |||
| e0f35eceab | |||
| 7e36517a79 | |||
| 69327766bb | |||
| 9ecf8a61ba | |||
| 2323506c82 | |||
| caa1a55e7a | |||
| 2ce44c157a | |||
| e17778190d | |||
| d1d81a0043 | |||
| ddb5ced3d5 | |||
| 9cebe655fd | |||
| 51b5a11a54 | |||
| f3405851a7 | |||
| 5b6870d610 | |||
| c3dceaff5c | |||
| 0a9b35c039 | |||
| dc32997f45 | |||
| 67c64c17d5 | |||
| 9cc02982be | |||
| b4c70a62a9 | |||
| c9d5921f4e | |||
| 0f47a4de5d | |||
| 0ba5e4d3c7 | |||
| 73e61dbcff | |||
| ba142e3b19 | |||
| f651a401e8 | |||
| 3301252fb2 | |||
| fe77e2b0d3 | |||
| d586567c3b | |||
| 211178d39e | |||
| d8354faa49 | |||
| f9e5c05046 | |||
| 596afe9451 | |||
| f7b5de986a | |||
| ee9262472b | |||
| 8a6a8db730 | |||
| 3642370f11 | |||
| 2db2cfb81c | |||
| 279b028c5e | |||
| f268827a2e | |||
| d8bc065057 | |||
| 6301bbbb66 | |||
| 3ad65eaef8 | |||
| 3d1bc7949d | |||
| 26e092fd20 | |||
| be7ddec1b0 | |||
| 5781ac6bbd | |||
| a51bc4427a | |||
| 80854584bb | |||
| 93af289d3b | |||
| a27b882493 | |||
| ba6f957692 | |||
| ec0e1bf26f | |||
| e4df298bb4 | |||
| 804d21e31d | |||
| 6d33687866 | |||
| 21bb1efb46 | |||
| 9d0986f1ca | |||
| fd483f397f | |||
| 09364850ee | |||
| 4d3a8bad4c | |||
| cc39b0aa41 | |||
| 1cceb7d4b4 | |||
| 6fc3b4be75 | |||
| af6d690fc8 | |||
| eea5152444 | |||
| 1ca38b625b | |||
| f964407c47 | |||
| 3be2e76ec0 | |||
| f9a9b90ed7 | |||
| 1f2917ac22 | |||
| fe1a8569f6 | |||
| 33e8d4f328 | |||
| e183260d0a | |||
| b4023942b4 | |||
| c10c24d90d | |||
| 915f63cac4 | |||
| 5c30ff4d3e | |||
| 3269f02ba7 | |||
| e5c2e3b3eb | |||
| 77f4aee0af | |||
| 868cbdfc7b | |||
| a650c0eab8 | |||
| a7dc8d8c6f | |||
| 355db16d2c | |||
| c54ce41eb7 | |||
| afb7d4c9d1 | |||
| b55cdde9da | |||
| 93cbc6c770 | |||
| 3b1b4a0a96 | |||
| 10b45cb54d | |||
| 9d289e571b | |||
| cce871c30e | |||
| c2b605a90f | |||
| 09149592b5 | |||
| e7410e551b | |||
| 9d77bc4192 | |||
| 537fa0c423 | |||
| c78dbc8bc1 | |||
| 249eed5c2c | |||
| 55eb3b24f7 | |||
| 508c255d0f | |||
| 9f8a90c0ac | |||
| 861dc935cb | |||
| 96ef8cacea | |||
| 5f3ecc8713 | |||
| 8b8ef0eb46 | |||
| 2dbea54c84 | |||
| a776d9fb6f | |||
| 57b7bbff5a | |||
| a832b0ed54 | |||
| 3ec75b84ae | |||
| b932763080 | |||
| 374f8f2f69 | |||
| 226c253d5a | |||
| c78a9f7950 | |||
| 7264510ab2 | |||
| 3458ec6511 | |||
| 2c80db6678 | |||
| 439aa6e4f5 | |||
| adf544dca9 | |||
| 0965269ee9 | |||
| 19d370c4e9 | |||
| cee0f8b652 | |||
| 37664d3487 | |||
| 5a78015d81 | |||
| 7250962ba3 | |||
| 442120bfdb | |||
| de624d1e54 | |||
| 523029cc45 | |||
| 934affe419 | |||
| 55b9af1589 | |||
| 16dd7e46ef | |||
| 851c77d8f2 | |||
| ee55b74898 | |||
| 13fc1e5c66 | |||
| 87112c2942 | |||
| 2664fdca30 | |||
| e05f523145 | |||
| 1148d29439 | |||
| 7ba52978d1 | |||
| 138a9fee43 | |||
| 1d522eaf0d | |||
| b5c5da64c9 | |||
| 8466425836 | |||
| b774ee5cd0 | |||
| 7e2e0e926b | |||
| 30f673c63c | |||
| bb5be728e3 | |||
| 0be5d1c657 | |||
| d143e6be06 | |||
| e65a78a5f5 | |||
| 4f443a3c62 | |||
| ff82ddea97 | |||
| 2e2d3f5e87 | |||
| 491b1041f8 | |||
| ce192d33f7 | |||
| ca1cb64026 | |||
| 71b5f5e469 | |||
| 946567f903 | |||
| 036e739511 | |||
| 87a95b85c5 | |||
| 4f49859bf7 | |||
| 2c53e55533 | |||
| 2ae75978dd | |||
| 452d825e66 | |||
| a7a1c4f81e | |||
| 00740eb9e8 | |||
| d76264c255 | |||
| 2297ce418d | |||
| fec85e6c59 | |||
| 54efa35fb3 | |||
| 988aebf630 | |||
| d2f7766aea | |||
| 25d30aee64 | |||
| 8af92da23c | |||
| 08dd36e1b0 | |||
| 324ff0a17c | |||
| cfb372e5e2 | |||
| 6513c732ba | |||
| c4ea869223 | |||
| 5387267675 | |||
| 8e4c3cc562 | |||
| 8b6b0699e5 | |||
| 229bff1658 | |||
| 7a59d37350 | |||
| d06b1e7883 | |||
| c8a284db9d | |||
| c7d6aceff4 | |||
| 7ea45d5e89 | |||
| 48c4aafb15 | |||
| ff302ed842 | |||
| 20a2424b83 | |||
| de0f34a27a | |||
| d0992cce3f | |||
| 15feeb3614 | |||
| fc0a879e52 | |||
| 9b675146a2 | |||
| 4d0bdcc8c0 | |||
| 0abdb67687 | |||
| d1fb98cf1b | |||
| 5eac24eacb | |||
| 3fd16daeca | |||
| d9b38c3b73 | |||
| 0a5176c1ee | |||
| b836b0e273 | |||
| 9a41e2a65d | |||
| cb1b74ed7b | |||
| e25e5d9768 | |||
| 9f3766952f | |||
| cb4471b07f | |||
| 9fa7eac41f | |||
| 94fa985550 | |||
| 1c498ead35 | |||
| 5abc983172 | |||
| 7a0d4919b0 | |||
| d5e9183877 | |||
| 9b39a51e9f | |||
| bec7eabd1c | |||
| cd3791087f | |||
| 714985e377 | |||
| 76c37dce96 | |||
| 5a9af40058 | |||
| e871ff35b7 | |||
| ecc6c32933 | |||
| 831cf61a08 | |||
| cc1231dece | |||
| bb3d1a165b | |||
| 3da0426c54 | |||
| e01aa25be3 | |||
| ee2f9d8dcb | |||
| 4d8677965c | |||
| 72729d5510 | |||
| 0b57e70c87 | |||
| 033d6489f8 | |||
| 8608007337 | |||
| 665e493570 | |||
| eb1e2f60f3 | |||
| dc637f0a9b | |||
| f81634728d | |||
| 440cd5ebc0 | |||
| 1cd7d0f205 | |||
| a69d62911c | |||
| 395e9bd006 | |||
| 90e20810d5 | |||
| 9c714e7687 | |||
| 6c3523d61c | |||
| 183840b793 | |||
| 4e2856aa64 | |||
| 4627a39165 | |||
| c87cbe83d2 | |||
| f05282badf | |||
| 957879346e | |||
| 87e64f67f3 | |||
| 43840d246d | |||
| 4aeb9af8a7 | |||
| b37acb8bc6 | |||
| 433865e927 | |||
| 5428161e0f | |||
| db0b536b5b | |||
| a4e50908fb | |||
| 96b89fe83d | |||
| adb131f131 | |||
| 757ab87e8a | |||
| f1d1db1159 | |||
| 3942bf60a6 | |||
| e2c0dcc0da | |||
| f63180d8d8 | |||
| 999bbf3d50 | |||
| eab612bdd0 | |||
| 1147186b4c | |||
| a88314e061 | |||
| 9221f5528d | |||
| 520f60cd65 | |||
| 84c85774e8 | |||
| 1f118deed9 | |||
| 55ce07ae73 | |||
| 85677d5e91 | |||
| 04f9be15b8 | |||
| 09cd72a829 | |||
| f5f5ad70e3 | |||
| a0774b320a | |||
| 4feea6051a | |||
| f548ea757b | |||
| abc8ea5280 | |||
| bacd2313fb | |||
| 63295d3f9b | |||
| 9c25eb20cf | |||
| 7f533f33ae | |||
| 352b4e1ed8 | |||
| 9a4252b579 | |||
| ed7011c229 | |||
| 4ddd6a5207 | |||
| 0a74c7cfd2 | |||
| d84fdc7599 | |||
| dac1268266 | |||
| b42db1c7c1 | |||
| 7a7a27c5c7 | |||
| af83186b10 | |||
| a8646f8fe7 | |||
| 01c1e30284 | |||
| b3980f9e39 | |||
| c9fd50d23e | |||
| ea3544f46d | |||
| 4e04f5f540 | |||
| b1021cf233 | |||
| 8fa3529123 | |||
| 3b494c235a | |||
| 1641c3e3e8 | |||
| ccd5d850ac | |||
| b989f160cf | |||
| 54e144564c | |||
| ab8599da6d | |||
| 0885702873 | |||
| 0083bc9302 | |||
| cbc0821928 | |||
| 7a70169d06 | |||
| bf2377ac11 | |||
| 1f79126b27 | |||
| 624e324383 | |||
| 846ebb285e | |||
| e567759935 | |||
| fe706c184e | |||
| 90bbb8e348 | |||
| e21ec540c2 | |||
| 2a4517ced4 | |||
| 8c8d151b3e | |||
| 44a3cf1934 | |||
| 5dcd3c8c8f | |||
| 251bd7cd3d | |||
| 02dfb0a8c1 | |||
| 544d499ab1 | |||
| 8ebc2f7079 | |||
| a31ba16070 | |||
| 60e3baad8a | |||
| f720a84831 | |||
| b74b2c4399 | |||
| 252aa10d75 | |||
| 6f3d362920 | |||
| 9b54e4c79f | |||
| f908d0d170 | |||
| 852ecdd1a9 | |||
| 78f5df5e56 | |||
| 580a61a515 | |||
| 4faf5a0150 | |||
| 1201d2434a | |||
| e1ca392da6 | |||
| 3ee6d22727 | |||
| 28a0329f65 | |||
| 2dc696c940 | |||
| e3acef0e91 | |||
| 62601f1adc | |||
| 982915a22f | |||
| 9f1bbd097f | |||
| 694bd6e74a | |||
| 394cf0bc8e | |||
| 09257deaae | |||
| 21c4b0dd95 | |||
| 3b4662b583 | |||
| 2e2e6457c7 | |||
| 631a7cccd6 | |||
| 2a3d51c7dc | |||
| e7e8a17b61 | |||
| 8fd8a56893 | |||
| 443c453507 | |||
| 0495c89ba1 | |||
| 78e4dfbece | |||
| 1c7a481ed9 | |||
| c3dedcbba5 | |||
| 1c767a0e9f | |||
| f3b0ba49e0 | |||
| 31dfcbaa9e | |||
| 8e11c5f46d | |||
| 70793ff559 | |||
| 6621e71e6c | |||
| 2af164ee9e | |||
| 9227f0a195 | |||
| f18330b494 | |||
| bb32339ab4 | |||
| ddf4378dfe | |||
| 2a607e209b | |||
| a3d85ae8c3 | |||
| fef62b63cb | |||
| 93ec80f773 | |||
| 8e3795c317 | |||
| cb1a633dc5 | |||
| ace4db6938 | |||
| b770062788 | |||
| 4c4dc5398a | |||
| 091945152f | |||
| 4838611273 | |||
| 144f9959c9 | |||
| 291c6a8fa0 | |||
| d5d3581b78 | |||
| 64d90b027c | |||
| a0e9989734 | |||
| b81aa923d6 | |||
| 610925bc5a | |||
| 86eda9bb10 | |||
| ca06aa9a6f | |||
| ca57d9e83d | |||
| 904f975f0c | |||
| 9b9212cf4c | |||
| 404419d1c3 | |||
| 4ee94a6574 | |||
| f929df0419 | |||
| 57587dafbe | |||
| 31a95e81b3 | |||
| 70a4e9551b | |||
| e1a705f975 | |||
| 9057ec82d8 | |||
| 1b53e36666 | |||
| 10fa5c7bd2 | |||
| 06e72a5a60 | |||
| 8fa62fc300 | |||
| 6c345fc508 | |||
| a34eac4ecb | |||
| 10c121e603 | |||
| 2b910167f4 | |||
| 7d5311a075 | |||
| f5581c4b49 | |||
| e09f7cd49c | |||
| 4dab03b61b | |||
| 2b5e017aa1 | |||
| 8b3d944fd2 | |||
| 2d886fd38a | |||
| 80088832b9 | |||
| be1883f317 | |||
| 30119e0c77 | |||
| c90c3b1544 | |||
| 578386f083 | |||
| 3d21ed362e | |||
| 9cf469b035 | |||
| 462c93ae43 | |||
| bda3b7b24d | |||
| d861a22cdd | |||
| 0de1a182da | |||
| b030554348 | |||
| 858bfa9ccd | |||
| ee8ec78da7 | |||
| c8f684895c | |||
| 138a155ba4 | |||
| ad749bf345 | |||
| ff0d59c16b | |||
| df75d2d60c | |||
| 2713aabeaf | |||
| 796d1b44c2 | |||
| 470a7b8f52 | |||
| f699b82a9f | |||
| 44edb8c7da | |||
| bc4fc0edd9 | |||
| 6545fa691b | |||
| 4954553927 | |||
| 9c50ba9eeb | |||
| 9a67da145a | |||
| ca7d82278c | |||
| f6245c53dd | |||
| 6888420cc6 | |||
| c5631f5b7d | |||
| 34e0b49d72 | |||
| bd072264ef | |||
| cfb2d24c71 | |||
| fe0eb72fa3 | |||
| 2783257f06 | |||
| cc11cb866c | |||
| 6a02643bda | |||
| 7f269c8da3 | |||
| ef7f7cebd1 | |||
| 05c24fd5e3 | |||
| b08b97bd28 | |||
| dbb6ce2f71 | |||
| f66f14b593 | |||
| 8a52315dee | |||
| 7c4052906c | |||
| 3a56f39f6a | |||
| 6585ca5dd0 | |||
| 792abae07e | |||
| 74ce648c59 | |||
| 2686e96046 | |||
| 213e2bb432 | |||
| 79bb5c10ab | |||
| 7ea012d786 | |||
| 43591f75de | |||
| 05d82c0569 | |||
| 76c8d3206c | |||
| 00751d05b4 | |||
| b5be5df11a | |||
| 7d159273fc | |||
| 70127922ab | |||
| b95df93775 | |||
| dc06edcf5b | |||
| fdc437dcd5 | |||
| f6873c9612 | |||
| 93754ab32d | |||
| 5759334635 | |||
| f2f543b72d | |||
| 598b052be3 | |||
| a746062422 | |||
| c8868d369f | |||
| 52c6e7474c | |||
| be81f09b0e | |||
| 6fa4504e31 | |||
| 992ba01a12 | |||
| 72c5a74cf1 | |||
| 919f41a0f1 | |||
| 785921cb0f | |||
| 8c8cda5e7d | |||
| 64ef74e7e9 | |||
| 776df4e6ee | |||
| 68465a8651 | |||
| fa16c8960c | |||
| 2c57915781 | |||
| d0527f1aeb | |||
| 75083c5b56 | |||
| 82526594db | |||
| 941d39800c | |||
| a1ae2e8bc0 | |||
| 4af6f366ca | |||
| c7a9534ed9 | |||
| 00bcbbf72b | |||
| ed2254ff9f | |||
| b6633f0ecb | |||
| e08d2d3052 | |||
| fbc0548b43 | |||
| a9807bd1e1 | |||
| 554b80b39d | |||
| 99e74bf00b | |||
| f48e923f28 | |||
| 5400b4bfdd | |||
| f68bebe0f6 | |||
| 4c6019b439 | |||
| 66e08a6b17 | |||
| 7898db70ed | |||
| 7c357116ff | |||
| 69ce0eb0d0 | |||
| 4db31a297b | |||
| e1fca457e4 | |||
| 7f8485ce80 | |||
| 290061fd11 | |||
| a507836936 | |||
| 6524d20a96 | |||
| f1c523aa30 | |||
| 87c08f5613 | |||
| 82913cea20 | |||
| 2ad743e4bd | |||
| fa97b57a96 | |||
| 1b952b6d56 | |||
| 90cc512bd1 | |||
| b82556c9c0 | |||
| fbe3b4bb3b | |||
| 5ffd98ad31 | |||
| cb9dd4d228 | |||
| cd823bf10c | |||
| 5560ec52c2 | |||
| 065151a77f | |||
| 23454f556c | |||
| a2b3ddf931 | |||
| 44b0d2fcfc | |||
| aed4cc590a | |||
| 72ee08b5ab | |||
| 45547624e4 | |||
| f928cfa8be | |||
| 988984846a | |||
| 1149618653 | |||
| 168a033903 | |||
| 6a765c9791 | |||
| e16ae7b511 | |||
| 174334ea44 | |||
| dbdf06930d | |||
| c93e65ddc3 | |||
| 56101ed264 | |||
| 8269c8e574 | |||
| 2246419d1e | |||
| 118a0c318b | |||
| 5401cf2910 | |||
| 432f9b8d2f | |||
| 66fc8a2d31 | |||
| 2f3dd3d227 | |||
| c43fd9fa6c | |||
| 868518e0f5 | |||
| 039b5cce98 | |||
| 4a421842d5 | |||
| cfbb124f81 | |||
| dcb147cde2 | |||
| 8d06b5e67e | |||
| 4776d0b422 | |||
| 58bb340c33 | |||
| ee790a9b7c | |||
| ac432aad78 | |||
| 30207e0a39 | |||
| d98547a33c | |||
| b7cdeabbf6 | |||
| be9907a0cc | |||
| 30f42c50a9 | |||
| 7cba65b138 | |||
| f34a78b336 | |||
| e1942dda03 | |||
| 7142e284fa | |||
| 3c1c588953 | |||
| 52cc6bae34 | |||
| 955c608115 | |||
| 2e00cf312c | |||
| 09bbc144d1 | |||
| d02b63a434 | |||
| 9b63c67d8c | |||
| 05c4bf3374 | |||
| 424b4d3f4e | |||
| f9a6187fab | |||
| d406472882 | |||
| 749b5a5ff8 | |||
| 091d5fe750 | |||
| c8894fb465 | |||
| 2dd41cbfac | |||
| 1f2165e68b | |||
| e9b6bdbdd7 | |||
| c0c77c5ba7 | |||
| 12403172ac | |||
| 3b41ab8d75 | |||
| 7bcf35f5b1 | |||
| 9a7e1c94c7 | |||
| 30c2e675da | |||
| ac405803e8 | |||
| 7dee787a92 | |||
| ae4b1cdeca | |||
| 572982cbf9 | |||
| 74290874f9 | |||
| 847f08d952 | |||
| 0bcd616668 | |||
| 9dd701ccc4 | |||
| 56a5a7d92b | |||
| 0cf0fad50e | |||
| 5f9e91656e | |||
| a7a2479f85 | |||
| a8b230a490 | |||
| 041b01f171 | |||
| 1c475f3215 | |||
| ab699d94b0 | |||
| 942d32c9b6 | |||
| 97f15f0b18 | |||
| ed49358c50 | |||
| 85eeecd140 | |||
| 30fd40fbe5 | |||
| 2ed262cacd | |||
| 29a1ef8f8a | |||
| 772d18ee62 | |||
| dd604d9942 | |||
| 85abc83427 | |||
| 6d8220629c | |||
| 6ff7ada096 | |||
| 8575049de5 | |||
| bb6fb0c253 | |||
| eb2ad9f840 | |||
| d0dd23fc11 | |||
| 7ae4acbdb0 | |||
| 881590ab37 | |||
| 5e479dc5d9 | |||
| 7db9c2e762 | |||
| ce6b0ac095 | |||
| 420bb06988 | |||
| 20566f8acf | |||
| 1d5f69704a | |||
| 0da664299e | |||
| 6e8fb2b457 | |||
| d1c72a4ff3 | |||
| 0bf05392e4 | |||
| 7ecef0c045 | |||
| 33ca329253 | |||
| 01fa4770cb | |||
| b76257c49c | |||
| e2fbf22f38 | |||
| 134432d029 | |||
| 8d4d6e80b8 | |||
| 85e6ef3dca | |||
| 60f1467229 | |||
| 1757242382 | |||
| 55df7bb9c4 | |||
| 686b8acd38 | |||
| a5f9df6170 | |||
| 27f61a870a | |||
| a48e8d1c5c | |||
| b80f74bccd | |||
| 1e768734ef | |||
| 11c9cabeb3 | |||
| 3a14ab92f0 | |||
| 62d5f52398 | |||
| 2b4848566c | |||
| 7c825e877c | |||
| 8417c277e6 | |||
| 9cef423908 | |||
| e73c84490e | |||
| 6cfc807db0 | |||
| be366f8103 | |||
| 2d13bd796f | |||
| 523f8f80ca | |||
| b76fef9143 | |||
| e935af83d5 | |||
| d4e019ef42 | |||
| 2e738828c6 | |||
| fd7dc93778 | |||
| 3df407d9ee | |||
| 6fbba84725 | |||
| 37d20fa9cc | |||
| 410cd912ac | |||
| d234bbd861 | |||
| 3f68d96815 | |||
| 015cd895d2 | |||
| 5fa4b48d85 | |||
| 88a3783bbc | |||
| ea2254b9bd | |||
| 9a0c1f2605 | |||
| 008f26bb7d | |||
| 69e453ea0b | |||
| 88b0b608f4 | |||
| 19e3987ae3 | |||
| c72e91ddaf | |||
| c789dd5067 | |||
| 551949de29 | |||
| 80730ee87a | |||
| 71028adc9e | |||
| a2efebc06c | |||
| a4e277a86b | |||
| 494c80d8b1 | |||
| 02539bfdd3 | |||
| a0f05eaf67 | |||
| 72e26fc90b | |||
| 2261cfabf3 | |||
| c1afa2a0e3 | |||
| d28f454c6e | |||
| f471c80ac0 | |||
| be086d94b5 | |||
| ff719510b6 | |||
| 7b16116b67 | |||
| 8422b71204 | |||
| c9bc2a89f6 | |||
| 387a52a7ba | |||
| 96842d9742 | |||
| 8fcef5401b | |||
| 804c4c678d | |||
| 8558777ece | |||
| 77bb608878 | |||
| 2f574261a7 | |||
| 28c4a2c39e | |||
| bd36cb59b1 | |||
| 998358ada8 | |||
| 75a00e8821 | |||
| b5653464d2 | |||
| 0269cd0b3b | |||
| 88ed662fd4 | |||
| 7c180c86a4 | |||
| f811ac510e | |||
| 3e5054f357 | |||
| 3424a424a7 | |||
| 8eb8af8ef8 | |||
| 8eaf7fc497 | |||
| 3255709399 | |||
| 2dbea36b81 | |||
| e0b7009bff | |||
| 77fb5ec3cb | |||
| 7392bce5dc | |||
| 8188bbd35d | |||
| 80fdea7bfb | |||
| dc9f6ac709 | |||
| ba796bc23d | |||
| e0ecb4c44f | |||
| d4c05304e9 | |||
| ccdbd71517 | |||
| 454fce09c6 | |||
| be4b12b4c8 | |||
| 9fa629de31 | |||
| 78dd5774b3 | |||
| bb9a9cd0db | |||
| ab9d8fb3db | |||
| 6ce76af2be | |||
| 3199a4b2cb | |||
| 6a2d153c3d | |||
| bfd4ad9255 | |||
| 30224515fd | |||
| d7f3acfd05 | |||
| a9e9eeeb54 | |||
| 76fa52b313 | |||
| 67de8e6a3a | |||
| ff78998829 | |||
| 55786e2d29 | |||
| 20534a71b9 | |||
| 316b6feccb | |||
| 6c7417e0a2 | |||
| af89dc881e | |||
| 5714cef3de | |||
| 3d2c8e7cc5 | |||
| 772ffcc5e8 | |||
| 8c30bb3a9f | |||
| 89bc121d3f | |||
| 1cc9d7b647 | |||
| 50e494e8e9 | |||
| 19325930a2 | |||
| ac97f7e9a2 | |||
| 33f133b8b2 | |||
| 2e9995e80a | |||
| 53f676bf2e | |||
| 874d658d2a | |||
| d27c455ab7 | |||
| 9291431c61 | |||
| 2e5f51e9ae | |||
| 2aa7e466ed | |||
| 3767a11d21 | |||
| 8c8b72d482 | |||
| bb9effa282 | |||
| 52e96bfa0f | |||
| 00ded65b7f | |||
| f738aa4234 | |||
| 6ff939451c | |||
| 32930cee01 | |||
| 3f45c76f48 | |||
| 1511baf12d | |||
| 20dd0816a6 | |||
| 41cd43ebc6 | |||
| 4a63899722 | |||
| c31ead493a | |||
| 7485733fba | |||
| e930b5d07b | |||
| 4543781153 | |||
| 1d5bfbb162 | |||
| 7045f7f92d | |||
| 5e7974f30b | |||
| 1079a888d3 | |||
| b1837abbc2 | |||
| 611e1a536c | |||
| c152ae1557 | |||
| de3020c1aa | |||
| f12c3fe06f | |||
| 754485c306 | |||
| 088448a8a1 | |||
| 6e35a09abd | |||
| 8fd11e8fdb | |||
| 40855103ad | |||
| 02041dbdb7 | |||
| 18ccc01501 | |||
| 1ff3f9c0da | |||
| 7a251248f1 | |||
| 971cbb94f6 | |||
| b53c961db2 | |||
| 9c40cbea76 | |||
| a8ce7e93cd | |||
| 4b02b74d6f | |||
| 67dd3afd92 | |||
| 7aca7fa0ec | |||
| c0564a1467 | |||
| b0a8984d3b | |||
| 0f451d6833 | |||
| c704d1f3b3 | |||
| e6d568fd49 | |||
| ee56509302 | |||
| bc5896b51f | |||
| 3224f5f422 | |||
| f9cd97edaa | |||
| e1ce3d46de | |||
| 294a8e9642 | |||
| 44fb6d9648 | |||
| 74c1ba1653 | |||
| 0cb39f049f | |||
| f7a3a8aa55 | |||
| cbc37eb006 | |||
| 097f45eeb3 | |||
| 4c5b3dd76f | |||
| ccf70590a4 | |||
| 3c709a27ac | |||
| 8554654ee9 | |||
| 59ac86cf6e | |||
| a4ecc9a187 | |||
| cc67c8b68e | |||
| b41f660fec | |||
| 00edcbbf64 | |||
| c530c70575 | |||
| 21840bb344 | |||
| 57bc23779d | |||
| 78e649f30a | |||
| eaa7a61f71 | |||
| 150a019b8d | |||
| 5dd1158025 | |||
| c60ca4a8d2 | |||
| e1b28f0805 | |||
| aeeaeb1eae | |||
| 76f87f9094 | |||
| 01e1c92813 | |||
| 22c0206451 | |||
| 5173c258b7 | |||
| ff8b892ebe | |||
| 7b0988cc19 | |||
| a4c79f09f8 | |||
| 7ec3d92215 | |||
| ac9fef784a | |||
| 4822bad4fb | |||
| d7dd90f073 | |||
| bbc19d1800 | |||
| 9ee9e61312 | |||
| f765137f3f | |||
| e160822b0f | |||
| c0e35b0126 | |||
| ac41ed629e | |||
| 8b5dfff2a1 | |||
| e77154bf7a | |||
| 5f5187e05c | |||
| 5db1728a3f | |||
| c7984ceed1 | |||
| 5d3571b7a3 | |||
| c1082b4474 | |||
| 14f16349c0 | |||
| aa7e01a085 | |||
| 484629734e | |||
| 444fca2250 | |||
| 7f17102c86 | |||
| e480998a4c | |||
| 5c642997fe | |||
| 5be5cd5ba5 | |||
| 1d55ed0599 | |||
| 4380aa9803 | |||
| 66e7f240da | |||
| f3e5816547 | |||
| 3d5931c259 | |||
| d510c74456 | |||
| 7154220d0b | |||
| d5155273df | |||
| 60dbe9d0a7 | |||
| f7d3f6b3f0 | |||
| 40fdd2aa74 | |||
| f39ed93ca0 | |||
| 541b2fabb4 | |||
| 067ad72f34 | |||
| 6c137e39c9 | |||
| f8c6cdb207 | |||
| f5de6a809d | |||
| e36b96fca6 | |||
| cd1738bdf6 | |||
| ebcd30fadc | |||
| 3c10a6bf94 | |||
| dc80fd9b15 | |||
| 5d21df9ac7 | |||
| 019e912d7f | |||
| 3479dca0d0 | |||
| 32e5cc4a5a | |||
| 268a9f18fa | |||
| 16a6186570 | |||
| 4b2fb6dd11 | |||
| 67d21bcd64 | |||
| 9b87126f0f | |||
| 1043b4de70 | |||
| 4bc5e7b8ff | |||
| 423b5205bf | |||
| fde288d9e8 | |||
| f2a2d85008 | |||
| 3a91b076e1 | |||
| 27bd608b53 | |||
| 966ba29084 | |||
| 3ea5b0193c | |||
| 97dd1b3b00 | |||
| fe0088d1ae | |||
| 342e1e22f8 | |||
| c9203047fc | |||
| a3a946ccd6 | |||
| 22564f34a9 | |||
| f939c24aa4 | |||
| be93fa747b | |||
| d7f4eeea2c | |||
| 6191f60025 | |||
| 82ccb0cedb | |||
| eb92e4413a | |||
| b0ba205532 | |||
| 4fa2cdf8d9 | |||
| ae30b23d34 | |||
| 1d3905bb71 | |||
| aa1e845f9a | |||
| fbcc69ec67 | |||
| 68b2de6dd7 | |||
| 20389babbc | |||
| f9899033aa | |||
| eb37b17486 | |||
| c428cad286 | |||
| 26486da27b | |||
| cabd0ed85e | |||
| f53e1a60d5 | |||
| ec694e4a99 | |||
| 81e076c924 | |||
| 04070ffc23 | |||
| 6941d6b863 | |||
| 3c88f68f16 | |||
| 82461da704 | |||
| 8e5d17c907 | |||
| 43d2143506 | |||
| 28b729acda | |||
| 584641236b | |||
| ca74897569 | |||
| 61987c85d2 | |||
| cfb75abeed | |||
| fd32706f0b | |||
| d1f90b7d44 | |||
| f09bc4a81a | |||
| 31b3aea282 | |||
| 2e1d236e8e | |||
| 065d06a98f | |||
| 63107566ec | |||
| 4f1dcea806 | |||
| 5da1a2c611 | |||
| 180a214e1f | |||
| bb417c6975 | |||
| 75c02475be | |||
| 2fd07211d9 | |||
| 128f3be596 | |||
| 810333dbb7 | |||
| e465358ec0 | |||
| 2954ed84a0 | |||
| b36cd8a68e | |||
| 8435daa598 | |||
| 38c943d564 | |||
| 8e89ec504f | |||
| a692ec1124 | |||
| 4e5f2c9587 | |||
| 1cc263acfb | |||
| 49c6534da6 | |||
| 02d3a3d7ec | |||
| 1dbe49243c | |||
| 2c12fb7ae8 | |||
| 829c6debbd | |||
| f2d3ed322e | |||
| d90e7db497 | |||
| 26f372a36a | |||
| b037777f83 | |||
| 35ce35b1e0 | |||
| e1517c2907 | |||
| ed5f88daa0 | |||
| 4afda646f0 | |||
| e782538777 | |||
| 4e86be86d9 | |||
| 6c8cfcd7c2 | |||
| 9fc7929665 | |||
| d590bf7d64 | |||
| c0f653340e | |||
| ac2bef083b | |||
| 42c7d0ca44 | |||
| 8a8afcfb24 | |||
| 5d259bb5aa | |||
| d2a24ed4bc | |||
| efd2f49484 | |||
| 9d4d6ccca5 | |||
| 218c894b5a | |||
| 0dec522542 | |||
| 7fa6708483 | |||
| 33af47c282 | |||
| 6b971e9e1b | |||
| 50107504a6 | |||
| 2cb0c9fea6 | |||
| dd7c2cc7f6 | |||
| 857ca14499 | |||
| f022b3fcde | |||
| 9470ff2dcc | |||
| d817a4fdb6 | |||
| 19635b06cf | |||
| 872776660b | |||
| 9644d4b00e | |||
| 04579d7ae6 | |||
| e9a9eb1779 | |||
| 9a1dddaccf | |||
| 4110ab5a82 | |||
| 5d1844e491 | |||
| 6a126d46ee | |||
| f834a0c84f | |||
| 9dfeb237e7 | |||
| b769ba2974 | |||
| fc1feb280f | |||
| bface83af7 | |||
| 9a89a16388 | |||
| 7649abf86a | |||
| b6ad97745d | |||
| 92028e191d | |||
| 7d4427a5d3 | |||
| 2bea800a37 | |||
| 4c1ff7deb7 | |||
| 347260f17b | |||
| 1086fba7da | |||
| 5a7cb129bb | |||
| b29d22e99b | |||
| 12cf102543 | |||
| 3d95730880 | |||
| c5d807dd58 | |||
| d40df79dce | |||
| 3cfa297b49 | |||
| e435769345 | |||
| 9a73877b3e | |||
| e2cd8d93f4 | |||
| afc6ec468f | |||
| 391838cfc3 | |||
| 36a11ded4f | |||
| f540ef2e06 | |||
| b061e0f859 | |||
| 4972fbbc7b | |||
| 1f318de812 | |||
| 0ceeadd75b | |||
| b9dad32707 | |||
| d1cf698b45 | |||
| 9dba3f9c58 | |||
| 8fbbe40300 | |||
| f73c925ad9 | |||
| b7fb4c5950 | |||
| fed49bb98b | |||
| 6aa4e382b2 | |||
| 8051d4f9b0 | |||
| 31a49601b1 | |||
| 4a50635fe1 | |||
| 9b92e9d325 | |||
| 833953d658 | |||
| 198dc8a8e2 | |||
| 78cd65240f | |||
| 02073f827b | |||
| 4cd3fdcdba | |||
| 7c803288e0 | |||
| dc91e0f733 | |||
| adc3abe82a | |||
| 00b6f5c3fb | |||
| b5a2a8df67 | |||
| 0cc4c9f2c2 | |||
| 7317a9ba2d | |||
| d6a4009989 | |||
| 8ee52e7d05 | |||
| b9a970a19a | |||
| bee93eade1 | |||
| 5d157eea54 | |||
| 28b494c913 | |||
| 817f189154 | |||
| 0bfa049778 | |||
| 8745314ad8 | |||
| 846d6d62c7 | |||
| c625440161 | |||
| aa544f03fb | |||
| 8d42c06fb0 | |||
| 4480ff0520 | |||
| eed9b2695a | |||
| 337a9b180e | |||
| 66a6ee97f0 | |||
| 26d5abe7a5 | |||
| bf8246c705 | |||
| 73cd25b05f | |||
| c5cc6905de | |||
| 7b0a714e1f | |||
| b47d83a7f2 | |||
| 5f4d312b8e | |||
| be4c52202c | |||
| 4e9111976e | |||
| 5163f11ecb | |||
| 5a1d5fa4f0 | |||
| d389390523 | |||
| 5a661fdacc | |||
| bd6dfcd51c | |||
| 8014486fd8 | |||
| 654b5b176b | |||
| af09f99c8a | |||
| 108876d9a1 | |||
| 1eb65caff4 | |||
| 7924e8c9a9 | |||
| 101f43947f | |||
| 68a0ead0c5 | |||
| 3d119c0d5d | |||
| f3e8cbf41d | |||
| f0fa42a50e | |||
| a20fd4fdcf | |||
| 32fb1cdb23 | |||
| ac24213d53 | |||
| fa20343253 | |||
| f4d70d3748 | |||
| b311730c7c | |||
| 3cba98fee6 | |||
| 7c799323a5 | |||
| 6926746624 | |||
| af7a52970f | |||
| 5ce3886651 | |||
| 0bc883ee29 | |||
| cc96786ac0 | |||
| 5b84ecf372 | |||
| 620926c379 | |||
| 7a4e57a49d | |||
| cdca60ff1b | |||
| 604f88939e | |||
| 95a7d33848 | |||
| 39e06e48bd | |||
| 9246c1443f | |||
| d3e358817e | |||
| 3682bc8558 | |||
| 8c1f82d894 | |||
| 6887c89d5c | |||
| 5071072c6b | |||
| 1cb7bc96c7 | |||
| 755c303008 | |||
| 381a963971 | |||
| 903ea7c49a | |||
| 41c4801aed | |||
| 3a8d65bd3e | |||
| 095a392359 | |||
| ce770c2e79 | |||
| be9529faee | |||
| 1f948e30d8 | |||
| 50de79171a | |||
| e8b3854682 | |||
| 985fade9f6 | |||
| 39b1177ba0 | |||
| 5fb440171e | |||
| 38673e5f43 | |||
| b8ce2b251d | |||
| 7829e17c27 | |||
| fced891975 | |||
| 35da594bfc | |||
| e8df272729 | |||
| a337b9ba15 | |||
| 685cc358b3 | |||
| 9ce4f0220e | |||
| 2128559186 | |||
| 20e4ca6a56 | |||
| 6f15fafc4a | |||
| cd4704aed7 | |||
| 82fd4d8b26 | |||
| 08a58b7520 | |||
| c7d8026ac5 | |||
| c7729f81ad | |||
| 7e12de0087 | |||
| c9c7db5a53 | |||
| aadbdd8b76 | |||
| b2d372ab3c | |||
| c47a47bc30 | |||
| ad5ec77f41 | |||
| c0bf387cb4 | |||
| 267323c7c3 | |||
| d9b1ea3d51 | |||
| 70bf86f561 | |||
| e1eebb2f75 | |||
| aa258dbe6b | |||
| 5a7659e1c3 | |||
| d51a829038 | |||
| b7ffc4051c | |||
| bb06b566cd | |||
| fc6149a171 | |||
| 4abc32f1ec | |||
| efd734d962 | |||
| 8158610587 | |||
| 2bb62309be | |||
| 401e41b699 | |||
| 3015831d66 | |||
| c2919897e2 | |||
| 83d6cae53f | |||
| 7ad54e3c94 | |||
| c1fc3a92c0 | |||
| 23508d3867 | |||
| b5cb2e6dd6 | |||
| 9efcf8bfb1 | |||
| 1ff486e16c | |||
| c22050fca8 | |||
| e910dd0ccf | |||
| 748d76dff1 | |||
| 2ebed41225 | |||
| 86d14fa7ab | |||
| 82e31e971a | |||
| 3d591b49cb | |||
| df505a7289 | |||
| 17dcde1f61 | |||
| 2a052cae8d | |||
| d3594f6652 | |||
| ad561226b9 | |||
| 2523b4e849 | |||
| 9a96d76099 | |||
| e0494a6321 | |||
| 45a300c6bc | |||
| 32a33e0c15 | |||
| ecb44b50e1 | |||
| 83c0dbaaf2 | |||
| f8b25f44f7 | |||
| aabed7a6cc | |||
| 2468aa9350 | |||
| 234f248b17 | |||
| d87750c39d | |||
| 175408e6bd | |||
| 56408bdaa4 | |||
| 118e0df2c3 | |||
| 59eaae8e73 | |||
| d0900520a3 | |||
| 385b56bf77 | |||
| 3bc1e8513e | |||
| 5c95264192 | |||
| c73a6b0045 | |||
| 8403868ac3 | |||
| a1d760df1e | |||
| e4d63ec8a2 | |||
| a0ba81c763 | |||
| d76a40b1a8 | |||
| db3d534ee5 | |||
| fb240fa79e | |||
| c088cc0617 | |||
| 2648e75328 | |||
| 46d70e0492 | |||
| 732e8a9361 | |||
| e3950d52c1 | |||
| 7427ddd900 | |||
| 364b2b85ae | |||
| a71ab7c418 | |||
| 2bb1937fa9 | |||
| 3c44205be7 | |||
| f708dc7002 | |||
| feef486f63 | |||
| a78964ae30 | |||
| 8ddb781588 | |||
| 2b1510af11 | |||
| aae9eb1883 | |||
| 05b53462df | |||
| 56bd0b9757 | |||
| 049d9d6d1f | |||
| e1f92e3ca2 | |||
| 1150303f77 | |||
| d0a8b66607 | |||
| a9d4e117aa | |||
| feff07ae9c | |||
| e77cba96fd | |||
| f6f8428daf | |||
| 11fcf0c784 | |||
| ca2aaa543a | |||
| a1876ccd7a | |||
| dda8a7374f | |||
| e2a4514be5 | |||
| 002fe8d409 | |||
| 710741813b | |||
| daa07326df | |||
| 9a4e2e39a8 | |||
| 0a1ecde7b6 | |||
| 2dbb4e9fa7 | |||
| e4103e6181 | |||
| c5e4935e85 | |||
| 45765eb161 | |||
| 992ec36295 | |||
| 41a21efe9f | |||
| 0fd639a149 | |||
| 32d1f9eb2f | |||
| cc85879810 | |||
| 74a58ce8b5 | |||
| a93a2fb53d | |||
| ea49ef806b | |||
| 21332010ab | |||
| f7b7d0d965 | |||
| 87da1eaa6d | |||
| 4fa3951718 | |||
| 6ffff4e586 | |||
| e641f69589 | |||
| 096edd20da | |||
| 491eee7ebd | |||
| 58a680ab6d | |||
| d0a4fcb7cd | |||
| ed38357ac8 | |||
| 3a6d98aa37 | |||
| 9004e21d93 | |||
| 8b032f03f2 | |||
| 87be3ff414 | |||
| 55aaa5ee08 | |||
| d934ed9d80 | |||
| 6a60bd9544 | |||
| 32b938905e | |||
| 0f15a05ee6 | |||
| 17a57b8071 | |||
| d0475a45ed | |||
| 19ef3710c3 | |||
| 8769e3475b | |||
| 979d89a23f | |||
| 1875eef8f6 | |||
| 79a1fb860d | |||
| 6edd327ff0 | |||
| 511b62c5ab | |||
| 0b37597834 | |||
| ff1c8868dc | |||
| f5480c21d2 | |||
| 2c8be3d95b | |||
| aeb90c6293 | |||
| 8946d098f9 | |||
| f222bbcbac | |||
| 319fb4dc3f | |||
| 8022208c47 | |||
| d7daa331bd | |||
| 88a41a3870 | |||
| 4bc9f70eba | |||
| e2fbac96cb | |||
| db8717d1a3 | |||
| 86b09307c4 | |||
| 875e57b366 | |||
| d436f5f112 | |||
| 079917449a | |||
| a8f74a7e7c | |||
| 9843f4c739 | |||
| 53c2fee24f | |||
| c42091870b | |||
| d8fed1ee84 | |||
| 074b2119fa | |||
| 057baac3ce | |||
| 25a56725f9 | |||
| 54eca090ee | |||
| d4da0f8670 | |||
| e7d37eaf38 | |||
| 5bb7417495 | |||
| a657b12a88 | |||
| 2c932cee5d | |||
| 5e0919efe1 | |||
| 5cb54e0a36 | |||
| 2de9f5f396 | |||
| 0472a95ac0 | |||
| 6bada4cef5 | |||
| 641605b9fa | |||
| 05f259cee8 | |||
| add9402b7e | |||
| c5631ae376 | |||
| 8e432f1abd | |||
| 9e00acc60e | |||
| 389b7cbbe1 | |||
| 57d40c48e3 | |||
| 6cc398ae26 | |||
| 8879f95f39 | |||
| 4d9e48b9a5 | |||
| 8a954f4435 | |||
| f952c5feef | |||
| 0d6c4e2f89 | |||
| a42a30e232 | |||
| 9feb553196 | |||
| d4a78db017 | |||
| d32ab724d3 | |||
| 7a0f6333d6 | |||
| 948cfa0f01 | |||
| 2cbe3957cf | |||
| 2f648d05b4 | |||
| 280afb42ea | |||
| 09d62fa327 | |||
| 2fe6b7b7f1 | |||
| bffa4be78f | |||
| 76064da131 | |||
| 7976a6fc44 | |||
| 4fb36dc263 | |||
| 4222289236 | |||
| c11c61c286 | |||
| 1fa490abc0 | |||
| 449515792a | |||
| d4cba8aeb2 | |||
| 4e9fa6d03a | |||
| d1d7405190 | |||
| b399538f80 | |||
| d78f56db86 | |||
| b6da078ca3 | |||
| 61b1c7f8d1 | |||
| e8f0f01a1d | |||
| 4b6eb34504 | |||
| 1351f3743c | |||
| e49309d3f7 | |||
| db2a6deca9 | |||
| 4dda9fb2ae | |||
| 790ee5d636 | |||
| 652f68bb54 | |||
| 9fc3e8a2ff | |||
| aff6d09cfc | |||
| cd73378748 | |||
| 3f36921186 | |||
| 4a990330dc | |||
| c993099c9c | |||
| 456fc4de57 | |||
| 2658364ca7 | |||
| ac68dd0f73 | |||
| b838d678a1 | |||
| 6ed5899601 | |||
| 4ff4358729 | |||
| 5d6c9c5943 | |||
| ce27400125 | |||
| f6bb61f999 | |||
| 6aace6f21f | |||
| 03569e3134 | |||
| aa0d9c3652 | |||
| 01e3f7b4f7 | |||
| ee8d72a137 | |||
| ae89b245ea | |||
| 36f890d28d | |||
| 18b648a7b0 | |||
| 6a9c9ac0fe | |||
| 1aeabc79b8 | |||
| f8edc0d33a | |||
| 46ab67b211 | |||
| 42c7058ecc | |||
| c8f6059abf | |||
| 3d30cffee6 | |||
| 5ff5212148 | |||
| 62c5de1414 | |||
| 00a934b85d | |||
| 1a2ba11abe | |||
| ba35b2249c | |||
| 530700932f | |||
| 4afc7dce64 | |||
| 8b0590ff8e | |||
| a9ea80f430 | |||
| 24e1305fe4 | |||
| 6d11f1bc85 | |||
| 91313962ed | |||
| c04d22675b | |||
| a37272d4e5 | |||
| e019a38621 | |||
| d6d4e8b26a | |||
| 6a3522c0be | |||
| dff6121a5b | |||
| fcbb54772b | |||
| 404ec5935e | |||
| ec4b93be95 | |||
| b9aad7e2c9 | |||
| 0b8bc597a7 | |||
| 39d16b8c43 | |||
| f276dd0fb6 | |||
| 38a5c296d7 | |||
| d41cff3ef8 | |||
| 648aade4d6 | |||
| 3b94a6723c | |||
| 34b75c2a60 | |||
| 46104dcb83 | |||
| 92aa7f2cd7 | |||
| 83e5c7fe5d | |||
| bc00c0f2ae | |||
| 740ed4362b | |||
| 055e80bbee | |||
| a24d1ca78e | |||
| a1c6829cfc | |||
| ca5bf8b31e | |||
| c9870fb6cb | |||
| b03d361f0e | |||
| ff4fc6f708 | |||
| 4f166dc144 | |||
| bc0c611ea4 | |||
| 338c51e019 | |||
| 8645927cbc | |||
| 649393eb6e | |||
| 742ca5e6dc | |||
| 9ffa79e44e | |||
| 6c76ba20a2 | |||
| ca92b0a8c6 | |||
| 402eb2edaa | |||
| b4006ec007 | |||
| 74b7248334 | |||
| 135156cea5 | |||
| c9cc0d3d37 | |||
| 0b1f1a5338 | |||
| ac1d1c47e2 | |||
| 3e8d2773be | |||
| 26df05374c | |||
| 927b012d6c | |||
| e0c1ea0ec1 | |||
| 67651afb48 | |||
| d0b793366f | |||
| 1227dd6841 | |||
| b9d44662fa | |||
| 21ff30af4d | |||
| 3b6b06a599 | |||
| 60901ddd75 | |||
| 3260c120c1 | |||
| 23ec55cd52 | |||
| 738d171f6b | |||
| 1a19278fc7 | |||
| 54917bbdb9 | |||
| 497b36ad2b | |||
| e7f2da2d4a | |||
| 94c3ac767e | |||
| f2ed24ef8c | |||
| c6dc4acc02 | |||
| b7474b7e41 | |||
| b8a50c0ccc | |||
| 300d8eacc5 | |||
| 6552323797 | |||
| a92a882021 | |||
| ebf7855c09 | |||
| 62c4b795be | |||
| dc7693dbd0 | |||
| f8e7fcf2d2 | |||
| fcdffc39ff | |||
| 4cad535baa | |||
| 5fc3c298c1 | |||
| e5fe89a4fd | |||
| ccaea78901 | |||
| 1111dbb9a2 |
@@ -0,0 +1,40 @@
|
||||
# https://help.github.com/articles/dealing-with-line-endings
|
||||
#
|
||||
# For Mac & Linux
|
||||
# git config --global core.autocrlf input
|
||||
#
|
||||
# For windows
|
||||
# git config --global core.autocrlf true
|
||||
#
|
||||
# Set default behaviour, in case users don't have core.autocrlf set.
|
||||
* text=auto
|
||||
|
||||
# Explicitly declare text files we want to always be normalized and converted
|
||||
# to native line endings on checkout.
|
||||
*.txt text
|
||||
*.md text
|
||||
*.rb text
|
||||
*.js text
|
||||
*.html text
|
||||
*.yml text
|
||||
*.mustache text
|
||||
*.css text
|
||||
Rakefile text
|
||||
Gemfile text
|
||||
LICENSE text
|
||||
COPYRIGHT text
|
||||
gollum text
|
||||
.gitattributes text
|
||||
.gitignore text
|
||||
|
||||
# Denote all files that are truly binary and should not be modified.
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
|
||||
# Make github-linguist ignore files that aren't our own
|
||||
|
||||
lib/gollum/public/gollum/* linguist-vendored
|
||||
lib/gollum/public/gollum/javascript/gollum* linguist-vendored=false
|
||||
lib/gollum/public/gollum/javascript/*/gollum* linguist-vendored=false
|
||||
lib/gollum/public/gollum/css linguist-vendored=false
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Please read the [CONTRIBUTION GUIDELINES](https://github.com/gollum/gollum/blob/master/CONTRIBUTING.md) before submitting!**
|
||||
|
||||
If your have problems using or installing the software which stem from bugs in the software or a lack of documentation, we are always happy to help out! However, **for ordinary usage questions, please consider asking elsewhere**, for instance on [StackOverflow](http://stackoverflow.com/questions/tagged/gollum-wiki).
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Environment Info**
|
||||
|
||||
Always include the output of the `gollum --versions` command (NB: `versions` in plural).
|
||||
@@ -0,0 +1,39 @@
|
||||
name: Deploy docker
|
||||
on: [push]
|
||||
env:
|
||||
DEPLOY_NAME: gollumwiki/gollum:latest
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
steps:
|
||||
- name: Check Out Repo
|
||||
uses: actions/checkout@v2
|
||||
- name: Login
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Cache docker layers
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-
|
||||
- name: Build and push
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: ./
|
||||
file: ./Dockerfile
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
push: true
|
||||
tags: ${{ env.DEPLOY_NAME }}
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||
- name: Image digest
|
||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||
@@ -0,0 +1,38 @@
|
||||
name: Build and Test Docker
|
||||
on: [push, pull_request]
|
||||
env:
|
||||
CI_IMAGE: gollum-ci-img
|
||||
jobs:
|
||||
build-and-test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check Out Repo
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
- name: Cache docker layers
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-
|
||||
- name: Build
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: ./
|
||||
file: ./Dockerfile
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
push: false
|
||||
tags: ${{ env.CI_IMAGE }}
|
||||
outputs: type=docker
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||
- name: Image digest
|
||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||
- name: docker state
|
||||
run: docker image ls
|
||||
- name: Run tests
|
||||
run: docker run -e CI=true -w /app --entrypoint bundle ${{ env.CI_IMAGE }} exec rake
|
||||
@@ -0,0 +1,25 @@
|
||||
on:
|
||||
push:
|
||||
# Sequence of patterns matched against refs/tags
|
||||
tags:
|
||||
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
|
||||
|
||||
name: Create Release
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Create Release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Release ${{ github.ref }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
@@ -0,0 +1,29 @@
|
||||
name: Ruby Build
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
ruby: [2.4.0, 2.6.0, 3.0.0, jruby-9.2.18.0]
|
||||
steps:
|
||||
- run: echo "The job was automatically triggered by a ${{ github.event_name }} event."
|
||||
- run: echo "This job is now running on a ${{ runner.os }} server hosted by GitHub!"
|
||||
- run: echo "The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v2
|
||||
- run: echo "The ${{ github.repository }} repository has been cloned to the runner."
|
||||
- run: echo "The workflow is now ready to test your code on the runner."
|
||||
- name: List files in the repository
|
||||
run: |
|
||||
ls ${{ github.workspace }}
|
||||
- uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '11'
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby }}
|
||||
bundler-cache: true
|
||||
- name: exec rake
|
||||
run: bundle exec rake
|
||||
@@ -1,3 +1,11 @@
|
||||
coverage
|
||||
pkg
|
||||
.DS_Store
|
||||
.bundle
|
||||
Gemfile.lock
|
||||
*.gem
|
||||
*.swp
|
||||
.*
|
||||
!.sprockets*
|
||||
!lib/gollum/public/gollum/stylesheets/_styles.css
|
||||
!.github*
|
||||
|
||||
+111
@@ -0,0 +1,111 @@
|
||||
# Contributing to Gollum
|
||||
|
||||
Thanks for your interest in the gollum project!
|
||||
|
||||
## Submitting an Issue
|
||||
|
||||
Please note that the issue tracker is meant for:
|
||||
|
||||
1. Bug reports.
|
||||
2. Feature requests.
|
||||
|
||||
If your have problems using or installing the software which stem from bugs in the software or a lack of documentation, we are always happy to help out! However, **for ordinary usage questions, please consider asking elsewhere**, for instance on [StackOverflow](http://stackoverflow.com/questions/tagged/gollum-wiki).
|
||||
|
||||
Gollum supports [custom macros](https://github.com/gollum/gollum/wiki#macros) for the creation of additional wiki markup tags. Please **do not** use this tracker to request macros specific to your situation. However, if you have or are working on a macro that you think may be useful to more users, you can share it as a GitHub [gist](https://gist.github.com) and link to it in the [wiki](https://github.com/gollum/gollum/wiki/Custom-macros).
|
||||
|
||||
Before submitting an issue, **please carefully look through the following places** to make sure your problem is not already addressed:
|
||||
|
||||
1. The issue tracker.
|
||||
1. The [README](https://github.com/gollum/gollum/blob/master/README.md).
|
||||
1. The project's [wiki](https://github.com/gollum/gollum/wiki).
|
||||
|
||||
Security vulnerabilities can be reported directly to the maintainers using these GPG keys:
|
||||
|
||||
* [@dometto](https://keys.openpgp.org/vks/v1/by-fingerprint/02354CC9F820B52CC2791979BB8CCC95FD83B795)
|
||||
|
||||
Lastly, please **consider helping out** by opening a Pull Request!
|
||||
|
||||
## Triaging Issues [](https://www.codetriage.com/gollum/gollum)
|
||||
|
||||
You can triage issues which may include reproducing bug reports or asking for vital information, such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to gollum on CodeTriage](https://www.codetriage.com/gollum/gollum).
|
||||
|
||||
|
||||
## Opening a Pull Request
|
||||
|
||||
Pull Requests fixing bugs, implementing new features, or updating documentation and dependencies are all very welcome! If you would like to help out with the project, you can pick an open issue from the issue tracker. We're more than happy to help you get started! Here's how you can proceed:
|
||||
|
||||
1. Fork and clone Gollum.
|
||||
2. Create a thoughtfully named topic branch to contain your changes.
|
||||
3. If you haven't installed dependencies yet, navigate to your clone and execute:
|
||||
```
|
||||
[sudo] bundle install
|
||||
```
|
||||
4. Hack away.
|
||||
5. Add your own tests and make sure they're all still passing.
|
||||
6. If some of your changes deserve a mention on Gollum's home page, edit the README accordingly.
|
||||
7. If necessary, rebase your commits into logical chunks, without errors.
|
||||
8. Push the branch to your fork on GitHub.
|
||||
9. Create a pull request for Gollum.
|
||||
|
||||
**Notes:**
|
||||
* Do not change Gollum's version numbers, we will do that on our own.
|
||||
|
||||
### Running tests
|
||||
|
||||
1. Install [Bundler](http://bundler.io/).
|
||||
2. Navigate to the cloned source of Gollum.
|
||||
3. Install dependencies:
|
||||
```
|
||||
[sudo] bundle install
|
||||
```
|
||||
4. Run the tests:
|
||||
```
|
||||
bundle exec rake test
|
||||
```
|
||||
|
||||
To profile slow tests, you can use `bundle exec rake test TESTOPTS="--verbose"`.
|
||||
|
||||
### Working with test repositories
|
||||
|
||||
An example of how to add a test file to the bare repository lotr.git.
|
||||
|
||||
```
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
git clone ../test/examples/lotr.git/
|
||||
git log
|
||||
echo "test" > test.md
|
||||
git add .
|
||||
git commit -am "Add test"
|
||||
git push ../lotr.git/ master
|
||||
```
|
||||
|
||||
## Updating static assets
|
||||
|
||||
This is necessary whenever changes have been made to the assets in `lib/gollum/public/gollum/javascript` (mostly SASS, CSS, and JS files), to ensure the changes are also present in the [released](#releasing-the-gem) version of the gem. Steps:
|
||||
|
||||
1. `git rm -r lib/gollum/public/assets`
|
||||
1. `bundle exec rake precompile`
|
||||
1. `git add lib/gollum/public/assets`
|
||||
1. `git commit`
|
||||
|
||||
## Releasing the gem
|
||||
|
||||
Gollum uses [Semantic Versioning](http://semver.org/).
|
||||
|
||||
x.y.z
|
||||
|
||||
For z releases:
|
||||
|
||||
```
|
||||
rake bump
|
||||
rake release
|
||||
```
|
||||
|
||||
For x.y releases:
|
||||
|
||||
```
|
||||
# First update VERSION in lib/gollum.rb and then:
|
||||
rake gemspec
|
||||
rake release
|
||||
```
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
FROM ruby:2.7
|
||||
ENV DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libicu-dev \
|
||||
cmake
|
||||
|
||||
COPY Gemfile* /tmp/
|
||||
COPY gollum.gemspec* /tmp/
|
||||
WORKDIR /tmp
|
||||
RUN bundle install
|
||||
|
||||
RUN gem install \
|
||||
asciidoctor \
|
||||
creole \
|
||||
wikicloth \
|
||||
org-ruby \
|
||||
RedCloth \
|
||||
bibtex-ruby \
|
||||
&& echo "gem-extra complete"
|
||||
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
RUN bundle exec rake install
|
||||
|
||||
VOLUME /wiki
|
||||
WORKDIR /wiki
|
||||
COPY docker-run.sh /docker-run.sh
|
||||
ENTRYPOINT ["/docker-run.sh"]
|
||||
@@ -0,0 +1,9 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
if RUBY_PLATFORM == 'java'
|
||||
gem 'warbler'
|
||||
end
|
||||
|
||||
gemspec
|
||||
|
||||
gem 'rake', '~> 13.0'
|
||||
+145
-1
@@ -1,3 +1,147 @@
|
||||
# 5.2.3 2021-04-18
|
||||
|
||||
* Fix bug preventing page titles from being displayed
|
||||
|
||||
# 5.2.1 2021-02-25
|
||||
|
||||
* Fix include call to a missing asset (@benjaminwil). This caused slow first page loads on JRuby.
|
||||
|
||||
# 5.2 2021-02-24
|
||||
|
||||
* Improved styling and Primer upgrade (@benjaminwil)
|
||||
* Add redirect to rename commit (@ViChyavIn)
|
||||
* Updated dependencies
|
||||
* Bugfixes
|
||||
|
||||
# 5.1.2
|
||||
|
||||
* Guard against malicious filenames in breadcrumbs
|
||||
|
||||
# 5.1
|
||||
|
||||
* Bugfixes
|
||||
* Add autosave feature (#1576)
|
||||
* Add Add quick access to diff of each commit in the history
|
||||
|
||||
# 5.0 / 2020-03-17
|
||||
|
||||
This is a major new release that introduces many new features, bugfixes, and removes major limitations. See [here](https://github.com/gollum/gollum/wiki/5.0-release-notes) for a list of changes.
|
||||
|
||||
**Note**: due to changes to the way in which Gollum handles filenames, you may have to change some links in your wiki when migrating from gollum 4.x. See the [release notes](https://github.com/gollum/gollum/wiki/5.0-release-notes#migrating-your-wiki) for more details. You may be find the `bin/gollum-migrate-tags` script helpful to accomplish this. Also see the `--lenient-tag-lookup` option for making tag lookup backwards compatible with 4.x, though note that this will decrease performance on large wikis with many tags.
|
||||
|
||||
Many thanks to all the users who have provided feedback, and everyone who has chipped in in the development process!
|
||||
|
||||
Many of these changes have been made possible by removing the default grit adapter in favour of the new [rugged adapter](https://github.com/gollum/rugged_adapter).
|
||||
|
||||
# 4.1.4 /2018-01-10
|
||||
|
||||
* Depend on new version of gollum-lib that relies on a patched version of sanitize, which solves a vulnerability (CVE-2018-3740). See https://github.com/gollum/gollum-lib/pull/296.
|
||||
|
||||
# 4.1.3 /2018-17-09
|
||||
|
||||
* Solves a vulnerability in the File view and All Pages view that would allow XSS.
|
||||
|
||||
# 4.1.2 /2017-08-07
|
||||
|
||||
* Lock to a newer version of gollum-lib to avoid installing an outdated and vulnerable dependency (nokogiri) on ruby 2.0. See https://github.com/gollum/gollum-lib/pull/279. Note: this breaks semantic versioning so those using outdated rubies will discover the problem on update.
|
||||
|
||||
# 4.1.0 /2017-03-09
|
||||
|
||||
* Added file deletion functionality to file view
|
||||
* Various performance improvements
|
||||
* Emoji support
|
||||
|
||||
# 4.0.0 /2015-04-11
|
||||
|
||||
* Now compatible with JRuby (via the [rjgit](https://github.com/repotag/rjgit) [adapter](https://github.com/repotag/gollum-lib_rjgit_adapter))
|
||||
|
||||
# 3.1.1 /2014-12-04
|
||||
|
||||
* Security fix for [remote code execution issue](https://github.com/gollum/gollum/issues/913). Please update!
|
||||
|
||||
# 3.1 / 2014-11-28
|
||||
|
||||
* New features
|
||||
* Drag-and-drop uploading in the editor [@lucas-clemente](https://github.com/lucas-clemente)
|
||||
* Latest changes view [@etienneCharignon](https://github.com/etienneCharignon) (#707)
|
||||
* Option `--no-edit` to disable editing from the web interface [@bambycha](https://github.com/bambycha) (#879)
|
||||
* Option `--mathjax-config` to specify custom mathjax configuration [@hardywu](https://github.com/hardywu) (#842)
|
||||
* Major enhancements
|
||||
* Made the Gollum theme responsive [@rtrvrtg](https://github.com/rtrvrtg) (#831)
|
||||
* Depends on new [gollum-lib](https://github.com/gollum/gollum-lib) `4.0.0`
|
||||
* Allows specifiying [git adapter](https://github.com/gollum/gollum/wiki/Git-adapters) with `--adapter` [@bartkamphorst](https://github.com/bartkamphorst), [@dometto](https://github.com/dometto)
|
||||
* Numerous bugfixes
|
||||
* **NB**: please pass `--h1-title` if you do not want page titles to default to the page's filepath. See [here](https://github.com/gollum/gollum/wiki/Page-titles).
|
||||
|
||||
# 2.4.11 / 2013-01-08
|
||||
|
||||
* Numerous security issues have been fixed. Please update to `2.4.11`
|
||||
|
||||
# 1.4.0 / 2012-04-10
|
||||
|
||||
* Minor
|
||||
* Add a way to configure the `#id_prefix` property of Sanitization
|
||||
objects.
|
||||
* Add web sequence diagrams support
|
||||
* Support for updating wysiwyg components when markup language changes
|
||||
* Support RedCarpet 2.0
|
||||
* Allow ftp and irc links in wiki markup
|
||||
* Minor ui fixups
|
||||
|
||||
* Bug Fixes
|
||||
* Include the language of the code snippet when making a uniquely
|
||||
identifiable sha of a code snippet while rendering a page.
|
||||
* Pygments lexer forces utf8 encoding
|
||||
* Remove MathJax, this created problems in production for us.
|
||||
We'll look at bringing it back in future releases
|
||||
|
||||
# 1.3.1 / 2011-07-21
|
||||
|
||||
* Major Enhancements
|
||||
* Allow prefixed ID attributes in headers to support internal linking
|
||||
(#146).
|
||||
* Markdown pages are rendered through Redcarpet by default (#176).
|
||||
* Minor Enhancements
|
||||
* Remove Edit button on Preview pages (#164).
|
||||
* Simplify Wiki#inspect and Page#inspect.
|
||||
* Bug Fixes
|
||||
* Fixed broken preview functionality (#157).
|
||||
* Fixed sidebar/footer rendering problems related to whitespace (#145).
|
||||
|
||||
# 1.3.0 / 2011-04-25
|
||||
|
||||
* Major Enhancements
|
||||
* Listing of all Pages
|
||||
* Support for running Gollum under a separate branch.
|
||||
* Minor Enhancements
|
||||
* Fix a security issue with rendering Mathjax.
|
||||
|
||||
# 1.2.0 / 2011-03-11
|
||||
|
||||
* Major Enhancements
|
||||
* Major HTML/CSS/JS overhaul.
|
||||
* Add Sidebars (similar to Footers).
|
||||
* Add commit reverts.
|
||||
* Minor Enhancements
|
||||
* Optimization in source code highlighting, resulting in a huge
|
||||
decrease in rendering time.
|
||||
* Security fixes related to source code highlighting.
|
||||
|
||||
* Major Enhancements
|
||||
* Add Page sidebars, similar to Page footers.
|
||||
* Add the ability to revert commits to the wiki.
|
||||
* Add MediaWiki support.
|
||||
* Minor Enhancements
|
||||
* Add `:sanitization` and `:history_sanitization` options for customizing
|
||||
how `Sanitize.clean` modifies formatted wiki content.
|
||||
* Add `--config` option for the command line, to specify a ruby file that is
|
||||
run during startup.
|
||||
* Provide access to a parsed Nokogiri::DocumentFragment during markup
|
||||
rendering for added customization.
|
||||
* Bug Fixes
|
||||
* Use `@wiki.page_class` in Gollum::Markup where appropriate (#63).
|
||||
* Fix parsing of Org mode file links (#87).
|
||||
|
||||
# 1.1.0 / 2010-10-28
|
||||
|
||||
* Major Enhancements
|
||||
@@ -34,4 +178,4 @@
|
||||
|
||||
# 1.0.0 / 2010-08-12
|
||||
|
||||
* Open Source Birthday!
|
||||
* Open Source Birthday!
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) Tom Preston-Werner, Rick Olson
|
||||
Copyright (c) Tom Preston-Werner, Rick Olson, Dawa Ometto, Bart Kamphorst
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the 'Software'), to deal
|
||||
|
||||
@@ -1,435 +1,156 @@
|
||||
gollum -- A wiki built on top of Git
|
||||
gollum -- A git-based Wiki
|
||||
====================================
|
||||
|
||||
[](http://badge.fury.io/rb/gollum)
|
||||

|
||||
[](https://www.codetriage.com/gollum/gollum)
|
||||
[](https://dometto-cuttingedge.herokuapp.com/github/gollum/gollum/info)
|
||||
|
||||
|
||||
**Gollum version 5.0 is out!** See [here](https://github.com/gollum/gollum/wiki/5.0-release-notes) for a list of changes and new features compared to Gollum version 4.x, and see some [Screenshots](https://github.com/gollum/gollum/wiki/Screenshots) of Gollum's features.
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
Gollum is a simple wiki system built on top of Git that powers GitHub Wikis.
|
||||
Gollum is a simple wiki system built on top of Git. A Gollum Wiki is simply a git repository of a specific nature:
|
||||
* A Gollum repository's contents are human-editable text or markup files.
|
||||
* Pages may be organized into directories any way you choose.
|
||||
* Other content can also be included, for example images, PDFs and headers/footers for your pages.
|
||||
* Gollum pages:
|
||||
* May be written in a variety of [markups](#markups).
|
||||
* Can be edited with your favourite system editor or IDE (changes will be visible after committing) or with the built-in web interface.
|
||||
* Can be displayed in all versions, reverted, etc.
|
||||
* Gollum strives to be compatible with GitHub wikis (see `--lenient-tag-lookup`)
|
||||
* Gollum supports advanced functionality like:
|
||||
* [UML diagrams](https://github.com/gollum/gollum/wiki#plantuml-diagrams)
|
||||
* [BibTeX and Citation support](https://github.com/gollum/gollum/wiki/BibTeX-and-Citations)
|
||||
* Annotations using [CriticMarkup](https://github.com/gollum/gollum/wiki#criticmarkup-annotations)
|
||||
* Mathematics via [MathJax](https://github.com/gollum/gollum/wiki#mathematics)
|
||||
* [Macros](https://github.com/gollum/gollum/wiki/Standard-Macros)
|
||||
* [Redirects](https://github.com/gollum/gollum/wiki#redirects)
|
||||
* [RSS Feed](https://github.com/gollum/gollum/wiki/5.0-release-notes#rss-feed) of latest changes
|
||||
* ...and [more](https://github.com/gollum/gollum/wiki)
|
||||
|
||||
Gollum wikis are simply Git repositories that adhere to a specific format.
|
||||
Gollum pages may be written in a variety of formats and can be edited in a
|
||||
number of ways depending on your needs. You can edit your wiki locally:
|
||||
|
||||
* With your favorite text editor or IDE.
|
||||
* With the built-in web interface.
|
||||
* With the Gollum Ruby API.
|
||||
|
||||
Gollum follows the rules of [Semantic Versioning](http://semver.org/) and uses
|
||||
[TomDoc](http://tomdoc.org/) for inline documentation.
|
||||
### SYSTEM REQUIREMENTS
|
||||
|
||||
Gollum runs on Unix-like systems using its [adapter](https://github.com/gollum/rugged_adapter) for [rugged](https://github.com/libgit2/rugged) by default. You can also run Gollum on [JRuby](https://github.com/jruby/jruby) via its [adapter](https://github.com/repotag/gollum-lib_rjgit_adapter) for [RJGit](https://github.com/repotag/rjgit/). On Windows, Gollum runs only on JRuby.
|
||||
|
||||
## INSTALLATION
|
||||
|
||||
The best way to install Gollum is with RubyGems:
|
||||
1. Ruby is best installed either via [RVM](https://rvm.io/) or a package manager of choice.
|
||||
2. Gollum is best installed via RubyGems:
|
||||
```
|
||||
[sudo] gem install gollum
|
||||
```
|
||||
|
||||
$ [sudo] gem install gollum
|
||||
Installation examples for individual systems can be seen [here](https://github.com/gollum/gollum/wiki/Installation).
|
||||
|
||||
In order to use the various formats that Gollum supports, you will need to
|
||||
separately install the necessary dependencies for each format. You only need
|
||||
to install the dependencies for the formats that you plan to use.
|
||||
To run, simply:
|
||||
|
||||
* [ASCIIDoc](http://www.methods.co.nz/asciidoc/) -- `brew install asciidoc`
|
||||
* [Creole](http://wikicreole.org/) -- `gem install creole`
|
||||
* [Markdown](http://daringfireball.net/projects/markdown/) -- `gem install rdiscount`
|
||||
* [Org](http://orgmode.org/) -- `gem install org-ruby`
|
||||
* [Pod](http://search.cpan.org/dist/perl/pod/perlpod.pod) -- `Pod::Simple::HTML` comes with Perl >= 5.10. Lower versions should install Pod::Simple from CPAN.
|
||||
1. Run: `gollum /path/to/wiki` where `/path/to/wiki` is an initialized Git repository.
|
||||
2. Open `http://localhost:4567` in your browser.
|
||||
|
||||
See [below](#running-from-source) for information on running Gollum from source, as a Rack app, and more.
|
||||
|
||||
### Markups
|
||||
|
||||
Gollum allows using different markup languages on different wiki pages. It presently ships with support for the following markups:
|
||||
* [Markdown](http://daringfireball.net/projects/markdown/syntax) (see [below](#Markdown-flavors) for more information on Markdown flavors)
|
||||
* [RDoc](http://rdoc.sourceforge.net/)
|
||||
* [ReStructuredText](http://docutils.sourceforge.net/rst.html) -- `easy_install docutils`
|
||||
* [Textile](http://www.textism.com/tools/textile/) -- `gem install RedCloth`
|
||||
|
||||
You can easily activate support for other markups by installing additional renderers (any that are supported by [github-markup](https://github.com/github/markup)):
|
||||
* [AsciiDoc](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/) -- `[sudo] gem install asciidoctor`
|
||||
* [Creole](http://www.wikicreole.org/wiki/CheatSheet) -- `[sudo] gem install creole`
|
||||
* [MediaWiki](http://www.mediawiki.org/wiki/Help:Formatting) -- `[sudo] gem install wikicloth`
|
||||
* [Org](http://orgmode.org/worg/dev/org-syntax.html) -- `[sudo] gem install org-ruby`
|
||||
* [Pod](http://perldoc.perl.org/perlpod.html) -- requires Perl >= 5.10 (the `perl` command must be available on your command line)
|
||||
* Lower versions should install `Pod::Simple` from CPAN.
|
||||
* [ReStructuredText](http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html) -- requires python >= 2 (the `python2` command must be available on your command line)
|
||||
* Note that Gollum will also need you to install `docutils` for your Python 2.
|
||||
* [Textile](http://redcloth.org/hobix.com/textile/quick.html) -- `[sudo] gem install RedCloth`
|
||||
|
||||
## RUNNING
|
||||
### Markdown flavors
|
||||
|
||||
To view and edit your Gollum repository locally via the built in web
|
||||
interface, simply install the Gollum gem, navigate to your repository via the
|
||||
command line, and run the executable:
|
||||
By default, Gollum ships with the `kramdown` gem to render Markdown. However, you can use any [Markdown renderer supported by github-markup](https://github.com/github/markup/blob/master/lib/github/markup/markdown.rb). This includes [CommonMark](https://commonmark.org/) support via the `commonmarker` gem. The first installed renderer from the list will be used (e.g., `redcarpet` will NOT be used if `github/markdown` is installed). Just `gem install` the renderer of your choice.
|
||||
|
||||
$ gollum
|
||||
See [here](https://github.com/gollum/gollum/wiki/Custom-rendering-gems) for instructions on how to use custom rendering gems and set custom options.
|
||||
|
||||
This will start up a web server running the Gollum frontend and you can view
|
||||
and edit your wiki at http://localhost:4567. To get help on the command line
|
||||
utility, you can run it like so:
|
||||
## RUNNING FROM SOURCE
|
||||
|
||||
$ gollum --help
|
||||
1. `git clone https://github.com/gollum/gollum`
|
||||
2. `cd gollum`
|
||||
3. `[sudo] bundle install`
|
||||
4. `bundle exec bin/gollum`
|
||||
5. Open `http://localhost:4567` in your browser.
|
||||
|
||||
### Rack
|
||||
|
||||
## REPO STRUCTURE
|
||||
Gollum can also be run with any [rack-compatible web server](https://github.com/rack/rack#supported-web-servers). More on that [over here](https://github.com/gollum/gollum/wiki/Gollum-via-Rack).
|
||||
|
||||
A Gollum repository's contents are designed to be human editable. Page content
|
||||
is written in `page files` and may be organized into directories any way you
|
||||
choose. Special footers can be created in `footer files`. Other content
|
||||
(images, PDFs, etc) may also be present and organized in the same way.
|
||||
### Rack, with an authentication server
|
||||
|
||||
Gollum can also be run alongside a CAS (Central Authentication Service) SSO (single sign-on) server. With a bit of tweaking, this adds basic user-support to Gollum. To see an example and an explanation, navigate [over here](https://github.com/gollum/gollum/wiki/Gollum-via-Rack-and-CAS-SSO).
|
||||
|
||||
## PAGE FILES
|
||||
### Docker
|
||||
|
||||
Page files may be written in any format supported by
|
||||
[GitHub-Markup](http://github.com/github/markup) (except roff). The
|
||||
current list of formats and allowed extensions is:
|
||||
Gollum can also be run via [Docker](https://www.docker.com/). More on that [over here](https://github.com/gollum/gollum/wiki/Gollum-via-Docker).
|
||||
|
||||
* ASCIIDoc: .asciidoc
|
||||
* Creole: .creole
|
||||
* Markdown: .markdown, .mdown, .mkdn, .mkd, .md
|
||||
* Org Mode: .org
|
||||
* Pod: .pod
|
||||
* RDoc: .rdoc
|
||||
* ReStructuredText: .rest.txt, .rst.txt, .rest, .rst
|
||||
* Textile: .textile
|
||||
### Service
|
||||
|
||||
Gollum detects the page file format via the extension, so files must have one
|
||||
of the supported extensions in order to be converted.
|
||||
Gollum can also be run as a service. More on that [over here](https://github.com/gollum/gollum/wiki/Gollum-as-a-service).
|
||||
|
||||
Page file names may contain any printable UTF-8 character except space
|
||||
(U+0020) and forward slash (U+002F). If you commit a page file with any of
|
||||
these characters in the name it will not be accessible via the web interface.
|
||||
## CONFIGURATION
|
||||
|
||||
Even though page files may be placed in any directory, there is still only a
|
||||
single namespace for page names, so all page files should have globally unique
|
||||
names regardless of where they are located in the repository.
|
||||
Gollum comes with the following command line options:
|
||||
|
||||
The special page file `Home.ext` (where the extension is one of the supported
|
||||
formats) will be used as the entrance page to your wiki. If it is missing, an
|
||||
automatically generated table of contents will be shown instead.
|
||||
| Option | Arguments | Description |
|
||||
| ----------------- | --------- | ----------- |
|
||||
| --host | [HOST] | Specify the hostname or IP address to listen on. Default: '0.0.0.0'.<sup>1</sup> |
|
||||
| --port | [PORT] | Specify the port to bind Gollum with. Default: `4567`. |
|
||||
| --config | [FILE] | Specify path to Gollum's configuration file. |
|
||||
| --ref | [REF] | Specify the git branch to serve. Default: `master`. |
|
||||
| --bare | none | Tell Gollum that the git repository should be treated as bare. |
|
||||
| --adapter | [ADAPTER] | Launch Gollum using a specific git adapter. Default: `rugged`.<sup>2</sup> |
|
||||
| --base-path | [PATH] | Specify the leading portion of all Gollum URLs (path info). Setting this to `/wiki` will make the wiki accessible under `http://localhost:4567/wiki/`. Default: `/`. |
|
||||
| --page-file-dir | [PATH] | Specify the subdirectory for all pages. If set, Gollum will only serve pages from this directory and its subdirectories. Default: repository root. |
|
||||
| --static, --no-static | none | Use static assets. Defaults to false in development/test, true in production/staging. |
|
||||
| --assets | [PATH] | Set the path to look for static assets. |
|
||||
| --css | none | Tell Gollum to inject custom CSS into each page. Uses `custom.css` from wiki root.<sup>3</sup> |
|
||||
| --js | none | Tell Gollum to inject custom JS into each page. Uses `custom.js` from wiki root.<sup>3</sup> |
|
||||
| --no-edit | none | Disable the feature of editing pages. |
|
||||
| --follow-renames, --no-follow-renames | none | Follow pages across renames in the History view. Default: true.
|
||||
| --allow-uploads | [MODE] | Enable file uploads. If set to `dir`, Gollum will store all uploads in the `/uploads/` directory in repository root. If set to `page`, Gollum will store each upload at the currently edited page.<sup>4</sup> |
|
||||
| --mathjax | none | Enables MathJax (renders mathematical equations). By default, uses the `TeX-AMS-MML_HTMLorMML` config with the `autoload-all` extension.<sup>5</sup> |
|
||||
| --critic-markup | none | Enable support for annotations using [CriticMarkup](http://criticmarkup.com/). |
|
||||
| --irb | none | Launch Gollum in "console mode", with a [predefined API](https://github.com/gollum/gollum-lib/). |
|
||||
| --h1-title | none | Tell Gollum to use the first `<h1>` as page title. |
|
||||
| --no-display-metadata | none | Do not render metadata tables in pages. |
|
||||
| --user-icons | [MODE] | Tell Gollum to use specific user icons for history view. Can be set to `gravatar`, `identicon` or `none`. Default: `none`. |
|
||||
| --mathjax-config | [FILE] | Specify path to a custom MathJax configuration. If not specified, uses the `mathjax.config.js` file from repository root. |
|
||||
| --template-dir | [PATH] | Specify custom mustache template directory. Only overrides templates that exist in this directory. |
|
||||
| --template-page | none | Use _Template in root as a template for new pages. Must be committed. |
|
||||
| --emoji | none | Parse and interpret emoji tags (e.g. `:heart:`) except when the leading colon is backslashed (e.g. `\:heart:`). |
|
||||
| --lenient-tag-lookup | none | Internal links resolve case-insensitively, will treat spaces as hyphens, and will match the first page found with a certain filename, anywhere in the repository. Provides compatibility with Gollum 4.x. |
|
||||
| --help | none | Display the list of options on the command line. |
|
||||
| --version | none | Display the current version of Gollum. |
|
||||
| --versions | none | Display the current version of Gollum and auxiliary gems. |
|
||||
|
||||
**Notes:**
|
||||
|
||||
## FOOTER FILES
|
||||
1. The `0.0.0.0` IP address allows remote access. Should you wish for Gollum to turn into a personal Wiki, use `127.0.0.1`.
|
||||
2. Before using `--adapter`, you should probably read [this](https://github.com/gollum/gollum/wiki/Git-adapters) first.
|
||||
3. When `--css` or `--js` is used, respective files must be committed to your git repository or you will get a 302 redirect to the create a page.
|
||||
4. Files can be uploaded simply by dragging and dropping them onto the editor's text area when `--allow-uploads` is used.
|
||||
|
||||
Footer files allow you to add a simple footer to your wiki. Footer files must
|
||||
be named `_Footer.ext` where the extension is one of the supported formats.
|
||||
Footers affect all pages in their directory and any subdirectories that do not
|
||||
have a footer file of their own.
|
||||
### Config file
|
||||
|
||||
When `--config` option is used, certain inner parts of Gollum can be customized. This is used throughout our wiki for certain user-level alterations, among which [customizing supported markups](https://github.com/gollum/gollum/wiki/Formats-and-extensions) will probably stand out.
|
||||
|
||||
## HTML SANITIZATION
|
||||
**All of the mentioned alterations work both for Gollum's config file (`config.rb`) and Rack's config file (`config.ru`).**
|
||||
|
||||
For security and compatibility reasons Gollum wikis may not contain custom CSS
|
||||
or JavaScript. These tags will be stripped from the converted HTML. See
|
||||
`docs/sanitization.md` for more details on what tags and attributes are
|
||||
allowed.
|
||||
## CONTRIBUTING
|
||||
|
||||
Please consider helping out! See [CONTRIBUTING](CONTRIBUTING.md) for information on how to submit issues, and how to start hacking on gollum.
|
||||
|
||||
## BRACKET TAGS
|
||||
## THANKS TO
|
||||
|
||||
A variety of Gollum tags use a double bracket syntax. For example:
|
||||
|
||||
[[Link]]
|
||||
|
||||
Some tags will accept attributes which are separated by pipe symbols. For
|
||||
example:
|
||||
|
||||
[[Link|Page Title]]
|
||||
|
||||
In all cases, the first thing in the link is what is displayed on the page.
|
||||
So, if the tag is an internal wiki link, the first thing in the tag will be
|
||||
the link text displayed on the page. If the tag is an embedded image, the
|
||||
first thing in the tag will be a path to an image file. Use this trick to
|
||||
easily remember which order things should appear in tags.
|
||||
|
||||
|
||||
## PAGE LINKS
|
||||
|
||||
To link to another Gollum wiki page, use the Gollum Page Link Tag.
|
||||
|
||||
[[Frodo Baggins]]
|
||||
|
||||
The above tag will create a link to the corresponding page file named
|
||||
`Frodo-Baggins.ext` where `ext` may be any of the allowed extension types. The
|
||||
conversion is as follows:
|
||||
|
||||
1. Replace any spaces (U+0020) with dashes (U+002D)
|
||||
2. Replace any slashes (U+002F) with dashes (U+002D)
|
||||
|
||||
If you'd like the link text to be something that doesn't map directly to the
|
||||
page name, you can specify the actual page name after a pipe:
|
||||
|
||||
[[Frodo|Frodo Baggins]]
|
||||
|
||||
The above tag will link to `Frodo-Baggins.ext` using "Frodo" as the link text.
|
||||
|
||||
The page file may exist anywhere in the directory structure of the repository.
|
||||
Gollum does a breadth first search and uses the first match that it finds.
|
||||
|
||||
Here are a few more examples:
|
||||
|
||||
[[J. R. R. Tolkien]] -> J.-R.-R.-Tolkien.ext
|
||||
[[Movies / The Hobbit]] -> Movies---The-Hobbit.ext
|
||||
[[モルドール]] -> モルドール.ext
|
||||
|
||||
|
||||
## EXTERNAL LINKS
|
||||
|
||||
As a convenience, simple external links can be placed within brackets and they
|
||||
will be linked to the given URL with the URL as the link text. For example:
|
||||
|
||||
[[http://example.com]]
|
||||
|
||||
External links must begin with either "http://" or "https://". If you need
|
||||
something more flexible, you can resort to the link syntax in the page's
|
||||
underlying markup format.
|
||||
|
||||
|
||||
## ABSOLUTE VS. RELATIVE VS. EXTERNAL PATH
|
||||
|
||||
For Gollum tags that operate on static files (images, PDFs, etc), the paths
|
||||
may be referenced as either relative, absolute, or external. Relative paths
|
||||
point to a static file relative to the page file within the directory
|
||||
structure of the Gollum repo (even though after conversion, all page files
|
||||
appear to be top level). These paths are NOT prefixed with a slash. For
|
||||
example:
|
||||
|
||||
gollum.pdf
|
||||
docs/diagram.png
|
||||
|
||||
Absolute paths point to a static file relative to the Gollum repo's
|
||||
root, regardless of where the page file is stored within the directory
|
||||
structure. These paths ARE prefixed with a slash. For example:
|
||||
|
||||
/pdfs/gollum.pdf
|
||||
/docs/diagram.png
|
||||
|
||||
External paths are full URLs. An external path must begin with either
|
||||
"http://" or "https://". For example:
|
||||
|
||||
http://example.com/pdfs/gollum.pdf
|
||||
http://example.com/images/diagram.png
|
||||
|
||||
All of the examples in this README use relative paths, but you may use
|
||||
whatever works best in your situation.
|
||||
|
||||
|
||||
## FILE LINKS
|
||||
|
||||
To link to static files that are contained in the Gollum repository you should
|
||||
use the Gollum File Link Tag.
|
||||
|
||||
[[Gollum|gollum.pdf]]
|
||||
|
||||
The first part of the tag is the link text. The path to the file appears after
|
||||
the pipe.
|
||||
|
||||
|
||||
## IMAGES
|
||||
|
||||
To display images that are contained in the Gollum repository you should use
|
||||
the Gollum Image Tag. This will display the actual image on the page.
|
||||
|
||||
[[gollum.png]]
|
||||
|
||||
In addition to the simple format, there are a variety of options that you
|
||||
can specify between pipe delimiters.
|
||||
|
||||
To specify alt text, use the `alt=` option. Default is no alt text.
|
||||
|
||||
[[gollum.png|alt=Gollum and his precious wiki]]
|
||||
|
||||
To place the image in a frame, use the `frame` option. When combined with the
|
||||
`alt=` option, the alt text will be used as a caption as well. Default is no
|
||||
frame.
|
||||
|
||||
[[gollum.png|frame|alt=Gollum and his precious wiki]]
|
||||
|
||||
To specify the alignment of the image on the page, use the `align=` option.
|
||||
Possible values are `left`, `center`, and `right`. Default is `left`.
|
||||
|
||||
[[gollum.png|align=center]]
|
||||
|
||||
To float an image so that text flows around it, use the `float` option. When
|
||||
`float` is specified, only `left` and `right` are valid `align` options.
|
||||
Default is not floating. When floating is activated but no alignment is
|
||||
specified, default alignment is `left`.
|
||||
|
||||
[[gollum.png|float]]
|
||||
|
||||
To specify a max-width, use the `width=` option. Units must be specified in
|
||||
either `px` or `em`.
|
||||
|
||||
[[gollum.png|width=400px]]
|
||||
|
||||
To specify a max-height, use the `height=` option. Units must be specified in
|
||||
either `px` or `em`.
|
||||
|
||||
[[gollum.png|height=300px]]
|
||||
|
||||
Any of these options may be composed together by simply separating them with
|
||||
pipes.
|
||||
|
||||
|
||||
## ESCAPING GOLLUM TAGS
|
||||
|
||||
If you need the literal text of a wiki or static link to show up in your final
|
||||
wiki page, simply preface the link with a single quote (like in LISP):
|
||||
|
||||
'[[Page Link]]
|
||||
'[[File Link|file.pdf]]
|
||||
'[[image.jpg]]
|
||||
|
||||
This is useful for writing about the link syntax in your wiki pages.
|
||||
|
||||
|
||||
## SYNTAX HIGHLIGHTING
|
||||
|
||||
In page files you can get automatic syntax highlighting for a wide range of
|
||||
languages (courtesy of [Pygments](http://pygments.org/)) by using the
|
||||
following syntax:
|
||||
|
||||
```ruby
|
||||
def foo
|
||||
puts 'bar'
|
||||
end
|
||||
```
|
||||
|
||||
The block must start with three backticks (as the first characters on the
|
||||
line). After that comes the name of the language that is contained by the
|
||||
block. The language must be one of the `short name` lexer strings supported by
|
||||
Pygments. See the [list of lexers](http://pygments.org/docs/lexers/) for valid
|
||||
options.
|
||||
|
||||
If the block contents are indented two spaces or one tab, then that whitespace
|
||||
will be ignored (this makes the blocks easier to read in plaintext).
|
||||
|
||||
The block must end with three backticks as the first characters on a
|
||||
line.
|
||||
|
||||
|
||||
## MATHEMATICAL EQUATIONS
|
||||
|
||||
Page files may contain mathematic equations in TeX syntax that will be nicely
|
||||
typeset into the expected output. A block-style equation is delimited by `\[`
|
||||
and `\]`. For example:
|
||||
|
||||
\[ P(E) = {n \choose k} p^k (1-p)^{ n-k} \]
|
||||
|
||||
Inline equations are delimited by `\(` and `\)`. These equations will appear
|
||||
inline with regular text. For example:
|
||||
|
||||
The Pythagorean theorum is \( a^2 + b^2 = c^2 \).
|
||||
|
||||
Gollum uses [MathJax](http://www.mathjax.org/) to convert the TeX syntax into
|
||||
output suitable for display in web browsers.
|
||||
|
||||
|
||||
## API DOCUMENTATION
|
||||
|
||||
The Gollum API allows you to retrieve raw or formatted wiki content from a Git
|
||||
repository, write new content to the repository, and collect various meta data
|
||||
about the wiki as a whole.
|
||||
|
||||
Initialize the Gollum::Repo object:
|
||||
|
||||
# Require rubygems if necessary
|
||||
require 'rubygems'
|
||||
|
||||
# Require the Gollum library
|
||||
require 'gollum'
|
||||
|
||||
# Create a new Gollum::Wiki object by initializing it with the path to the
|
||||
# Git repository.
|
||||
wiki = Gollum::Wiki.new("my-gollum-repo.git")
|
||||
# => <Gollum::Wiki>
|
||||
|
||||
By default, internal wiki links are all absolute from the root. To specify a different base path, you can specify the `:base_path` option:
|
||||
|
||||
wiki = Gollum::Wiki.new("my-gollum-repo.git", :base_path => "/wiki")
|
||||
|
||||
Get the latest version of the given human or canonical page name:
|
||||
|
||||
page = wiki.page('page-name')
|
||||
# => <Gollum::Page>
|
||||
|
||||
page.raw_data
|
||||
# => "# My wiki page"
|
||||
|
||||
page.formatted_data
|
||||
# => "<h1>My wiki page</h1>"
|
||||
|
||||
page.format
|
||||
# => :markdown
|
||||
|
||||
vsn = page.version
|
||||
# => <Grit::Commit>
|
||||
|
||||
vsn.id
|
||||
# => '3ca43e12377ea1e32ea5c9ce5992ec8bf266e3e5'
|
||||
|
||||
Get the footer (if any) for a given page:
|
||||
|
||||
page.footer
|
||||
# => <Gollum::Page>
|
||||
|
||||
Get a list of versions for a given page:
|
||||
|
||||
vsns = wiki.page('page-name').versions
|
||||
# => [<Grit::Commit, <Grit::Commit, <Grit::Commit>]
|
||||
|
||||
vsns.first.id
|
||||
# => '3ca43e12377ea1e32ea5c9ce5992ec8bf266e3e5'
|
||||
|
||||
vsns.first.authored_date
|
||||
# => Sun Mar 28 19:11:21 -0700 2010
|
||||
|
||||
Get a specific version of a given canonical page file:
|
||||
|
||||
wiki.page('page-name', '5ec521178e0eec4dc39741a8978a2ba6616d0f0a')
|
||||
|
||||
Get the latest version of a given static file:
|
||||
|
||||
file = wiki.file('asset.js')
|
||||
# => <Gollum::File>
|
||||
|
||||
file.raw_data
|
||||
# => "alert('hello');"
|
||||
|
||||
file.version
|
||||
# => <Grit::Commit>
|
||||
|
||||
Get a specific version of a given static file:
|
||||
|
||||
wiki.file('asset.js', '5ec521178e0eec4dc39741a8978a2ba6616d0f0a')
|
||||
|
||||
Get an in-memory Page preview (useful for generating previews for web
|
||||
interfaces):
|
||||
|
||||
preview = wiki.preview_page("My Page", "# Contents", :markdown)
|
||||
preview.formatted_data
|
||||
# => "<h1>Contents</h1>"
|
||||
|
||||
Methods that write to the repository require a Hash of commit data that takes
|
||||
the following form:
|
||||
|
||||
commit = { :message => 'commit message',
|
||||
:name => 'Tom Preston-Werner',
|
||||
:email => 'tom@github.com' }
|
||||
|
||||
Write a new version of a page (the file will be created if it does not already
|
||||
exist) and commit the change. The file will be written at the repo root.
|
||||
|
||||
wiki.write_page('Page Name', :markdown, 'Page contents', commit)
|
||||
|
||||
Update an existing page. If the format is different than the page's current
|
||||
format, the file name will be changed to reflect the new format.
|
||||
|
||||
page = wiki.page('Page Name')
|
||||
wiki.update_page(page, page.name, page.format, 'Page contents', commit)
|
||||
|
||||
To delete a page and commit the change:
|
||||
|
||||
wiki.delete_page(page, commit)
|
||||
|
||||
|
||||
## CONTRIBUTE
|
||||
|
||||
If you'd like to hack on Gollum, start by forking my repo on GitHub:
|
||||
|
||||
http://github.com/github/gollum
|
||||
|
||||
To get all of the dependencies, install the gem first. The best way to get
|
||||
your changes merged back into core is as follows:
|
||||
|
||||
1. Clone down your fork
|
||||
1. Create a thoughtfully named topic branch to contain your change
|
||||
1. Hack away
|
||||
1. Add tests and make sure everything still passes by running `rake`
|
||||
1. If you are adding new functionality, document it in the README
|
||||
1. Do not change the version number, I will do that on my end
|
||||
1. If necessary, rebase your commits into logical chunks, without errors
|
||||
1. Push the branch up to GitHub
|
||||
1. Send me (mojombo) a pull request for your branch
|
||||
[](https://saucelabs.com)
|
||||
|
||||
@@ -17,6 +17,27 @@ def version
|
||||
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
||||
end
|
||||
|
||||
# assumes x.y.z all digit version
|
||||
def next_version
|
||||
# x.y.z
|
||||
v = version.split '.'
|
||||
# bump z
|
||||
v[-1] = v[-1].to_i + 1
|
||||
v.join '.'
|
||||
end
|
||||
|
||||
def bump_version
|
||||
old_file = File.read("lib/#{name}.rb")
|
||||
old_version_line = old_file[/^\s*VERSION\s*=\s*.*/]
|
||||
new_version = next_version
|
||||
# replace first match of old vesion with new version
|
||||
old_file.sub!(old_version_line, " VERSION = '#{new_version}'")
|
||||
|
||||
File.write("lib/#{name}.rb", old_file)
|
||||
|
||||
new_version
|
||||
end
|
||||
|
||||
def date
|
||||
Date.today.to_s
|
||||
end
|
||||
@@ -50,6 +71,7 @@ Rake::TestTask.new(:test) do |test|
|
||||
test.libs << 'lib' << 'test' << '.'
|
||||
test.pattern = 'test/**/test_*.rb'
|
||||
test.verbose = true
|
||||
test.warning = false
|
||||
end
|
||||
|
||||
desc "Generate RCov test coverage and open in your browser"
|
||||
@@ -60,14 +82,6 @@ task :coverage do
|
||||
sh "open coverage/index.html"
|
||||
end
|
||||
|
||||
require 'rake/rdoctask'
|
||||
Rake::RDocTask.new do |rdoc|
|
||||
rdoc.rdoc_dir = 'rdoc'
|
||||
rdoc.title = "#{name} #{version}"
|
||||
rdoc.rdoc_files.include('README*')
|
||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||
end
|
||||
|
||||
desc "Open an irb session preloaded with this library"
|
||||
task :console do
|
||||
sh "irb -rubygems -r ./lib/#{name}.rb"
|
||||
@@ -79,7 +93,14 @@ end
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
|
||||
desc "Update version number and gemspec"
|
||||
task :bump do
|
||||
puts "Updated version to #{bump_version}"
|
||||
# Execute does not invoke dependencies.
|
||||
# Manually invoke gemspec then validate.
|
||||
Rake::Task[:gemspec].execute
|
||||
Rake::Task[:validate].execute
|
||||
end
|
||||
|
||||
#############################################################################
|
||||
#
|
||||
@@ -87,24 +108,36 @@ end
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
desc 'Create a release build and push to rubygems'
|
||||
task :release => :build do
|
||||
unless `git branch` =~ /^\* master$/
|
||||
puts "You must be on the master branch to release!"
|
||||
exit!
|
||||
end
|
||||
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
||||
sh "git pull --rebase origin master"
|
||||
sh "git tag v#{version}"
|
||||
sh "git push origin master"
|
||||
sh "git push origin v#{version}"
|
||||
sh "gem push pkg/#{name}-#{version}.gem"
|
||||
end
|
||||
|
||||
desc 'Publish to rubygems. Same as release'
|
||||
task :publish => :release
|
||||
|
||||
desc 'Build gem'
|
||||
task :build => :gemspec do
|
||||
sh "mkdir -p pkg"
|
||||
sh "gem build #{gemspec_file}"
|
||||
sh "mv #{gem_file} pkg"
|
||||
end
|
||||
|
||||
desc "Build and install"
|
||||
task :install => :build do
|
||||
sh "gem install --local --no-document pkg/#{name}-#{version}.gem"
|
||||
end
|
||||
|
||||
desc 'Update gemspec'
|
||||
task :gemspec => :validate do
|
||||
# read spec file and split out manifest section
|
||||
spec = File.read(gemspec_file)
|
||||
@@ -122,7 +155,7 @@ task :gemspec => :validate do
|
||||
split("\n").
|
||||
sort.
|
||||
reject { |file| file =~ /^\./ }.
|
||||
reject { |file| file =~ /^(rdoc|pkg)/ }.
|
||||
reject { |file| file =~ /^(rdoc|pkg|test|Home\.md|\.gitattributes)/ }.
|
||||
map { |file| " #{file}" }.
|
||||
join("\n")
|
||||
|
||||
@@ -133,6 +166,7 @@ task :gemspec => :validate do
|
||||
puts "Updated #{gemspec_file}"
|
||||
end
|
||||
|
||||
desc 'Validate lib files and version file'
|
||||
task :validate do
|
||||
libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
|
||||
unless libfiles.empty?
|
||||
@@ -144,3 +178,21 @@ task :validate do
|
||||
exit!
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Precompile assets'
|
||||
task :precompile do
|
||||
require './lib/gollum/app.rb'
|
||||
Precious::App.set(:environment, :production)
|
||||
env = Precious::Assets.sprockets
|
||||
path = ENV.fetch('GOLLUM_ASSETS_PATH', ::File.join(File.dirname(__FILE__), 'lib/gollum/public/assets'))
|
||||
manifest = Sprockets::Manifest.new(env, path)
|
||||
Sprockets::Helpers.configure do |config|
|
||||
config.environment = env
|
||||
config.prefix = Precious::Assets::ASSET_URL
|
||||
config.digest = true
|
||||
config.public_path = path
|
||||
config.manifest = manifest
|
||||
end
|
||||
puts "Precompiling assets to #{path}..."
|
||||
manifest.compile(Precious::Assets::MANIFEST)
|
||||
end
|
||||
|
||||
+230
-41
@@ -2,56 +2,217 @@
|
||||
|
||||
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
||||
|
||||
help = <<HELP
|
||||
Gollum is a multi-format Wiki Engine/API/Frontend.
|
||||
|
||||
Basic Command Line Usage:
|
||||
gollum [OPTIONS] [PATH]
|
||||
|
||||
PATH The path to the Gollum repository (default .).
|
||||
|
||||
Options:
|
||||
HELP
|
||||
|
||||
require 'optparse'
|
||||
require 'rubygems'
|
||||
require 'gollum'
|
||||
require 'erb'
|
||||
require 'sprockets'
|
||||
|
||||
exec = {}
|
||||
options = {
|
||||
:port => 4567,
|
||||
:bind => '0.0.0.0',
|
||||
}
|
||||
wiki_options = {
|
||||
:allow_uploads => false,
|
||||
:allow_editing => true,
|
||||
}
|
||||
|
||||
exec = {}
|
||||
options = { 'port' => 4567, 'bind' => '127.0.0.1' }
|
||||
opts = OptionParser.new do |opts|
|
||||
opts.banner = help
|
||||
# define program name (although this defaults to the name of the file, just in case...)
|
||||
opts.program_name = 'gollum'
|
||||
|
||||
opts.on("--port [PORT]", "Bind port (default 4567).") do |port|
|
||||
options['port'] = port.to_i
|
||||
# set basic info for the '--help' command (options will be appended automatically from the below definitions)
|
||||
opts.banner = '
|
||||
Gollum is a multi-format Wiki Engine/API/Frontend.
|
||||
|
||||
Usage:
|
||||
gollum [options] [git-repo]
|
||||
|
||||
Arguments:
|
||||
[git-repo] Path to the git repository being served. If not specified, current working directory is used.
|
||||
|
||||
Notes:
|
||||
Paths for all options are relative to <git-repo> unless absolute.
|
||||
This message is only a basic description. For more information, please visit:
|
||||
https://github.com/gollum/gollum
|
||||
|
||||
OPTIONS'
|
||||
|
||||
# define gollum options
|
||||
opts.separator ''
|
||||
opts.separator ' Major:'
|
||||
|
||||
opts.on('-h', '--host [HOST]', 'Specify the hostname or IP address to listen on. Default: \'0.0.0.0\'.') do |host|
|
||||
options[:bind] = host
|
||||
end
|
||||
opts.on('-p', '--port [PORT]', 'Specify the port to bind Gollum with. Default: \'4567\'.') do |port|
|
||||
begin
|
||||
# don't use 'port.to_i' here... it doesn't raise errors which might result in a nice confusion later on
|
||||
options[:port] = Integer(port)
|
||||
rescue ArgumentError
|
||||
puts "Error: '#{port}' is not a valid port number."
|
||||
exit 1
|
||||
end
|
||||
end
|
||||
opts.on('-c', '--config [FILE]', 'Specify path to the Gollum\'s configuration file.') do |file|
|
||||
options[:config] = file
|
||||
end
|
||||
opts.on('-r', '--ref [REF]', 'Specify the branch to serve. Default: \'master\'.') do |ref|
|
||||
wiki_options[:ref] = ref
|
||||
end
|
||||
opts.on("--bare", "Declare '<git-repo>' to be bare.") do
|
||||
wiki_options[:repo_is_bare] = true
|
||||
end
|
||||
opts.on('-a', '--adapter [ADAPTER]', 'Launch Gollum using a specific git adapter. Default: \'rugged\'.') do |adapter|
|
||||
Gollum::GIT_ADAPTER = adapter
|
||||
end
|
||||
opts.on('-b', '--base-path [PATH]', 'Specify the leading portion of all Gollum URLs (path info). Default: \'/\'.',
|
||||
'Example: setting this to \'/wiki\' will make the wiki accessible under \'http://localhost:4567/wiki/\'.') do |base_path|
|
||||
|
||||
# first trim a leading slash, if any
|
||||
base_path.sub!(/^\/+/, '')
|
||||
|
||||
# make a backup of the option and sanitize it
|
||||
base_path_original = base_path.dup
|
||||
base_path = ERB::Util.url_encode(base_path)
|
||||
base_path.gsub!('%2F', '/')
|
||||
|
||||
# then let the user know if we changed the URL
|
||||
unless base_path_original == base_path
|
||||
puts <<MSG
|
||||
Warning: your base-path has been sanitized:
|
||||
- original: "#{base_path_original}"
|
||||
- sanitized: "#{base_path}"
|
||||
MSG
|
||||
end
|
||||
|
||||
# and finally, let others enjoy our hard work:
|
||||
wiki_options[:base_path] = base_path unless base_path.empty?
|
||||
end
|
||||
opts.on('--page-file-dir [PATH]', 'Specify the subdirectory for all pages. Default: repository root.',
|
||||
'Example: setting this to \'pages\' will make Gollum serve only pages at \'<git-repo>/pages/*\'.') do |path|
|
||||
wiki_options[:page_file_dir] = path
|
||||
end
|
||||
opts.on('--static', 'Use static assets. Defaults to false in development/test, defaults to true in production/staging.') do
|
||||
wiki_options[:static] = true
|
||||
end
|
||||
opts.on('--no-static', 'Do not use static assets (even when in production/staging).') do
|
||||
wiki_options[:static] = false
|
||||
end
|
||||
opts.on('--assets [PATH]', 'Set the path to look for static assets. Only used if --static is set to true, or environment is production/staging. Default: ./public/assets') do |path|
|
||||
wiki_options[:static_assets_path] = path
|
||||
end
|
||||
opts.on('--css', 'Inject custom CSS into each page. The \'<wiki-root>/custom.css\' file is used (must be committed).') do
|
||||
wiki_options[:css] = true
|
||||
end
|
||||
opts.on('--js', 'Inject custom JavaScript into each page. The \'<wiki-root>/custom.js\' file is used (must be committed).') do
|
||||
wiki_options[:js] = true
|
||||
end
|
||||
opts.on('--no-edit', 'Disable the feature of editing pages.') do
|
||||
wiki_options[:allow_editing] = false
|
||||
end
|
||||
opts.on('--follow-renames', 'Follow pages across renames in the History view. Default: true.') do
|
||||
wiki_options[:follow_renames] = true
|
||||
end
|
||||
opts.on('--no-follow-renames', 'Do not follow pages across renames in the History view.') do
|
||||
wiki_options[:follow_renames] = false
|
||||
end
|
||||
opts.on('--allow-uploads [MODE]', [:dir, :page], 'Enable file uploads.',
|
||||
'If set to \'dir\', Gollum will store all uploads in the \'<git-repo>/uploads/\' directory.',
|
||||
'If set to \'page\', Gollum will store uploads per page in \'<git-repo>/uploads/[pagename]\'.') do |mode|
|
||||
wiki_options[:allow_uploads] = true
|
||||
wiki_options[:per_page_uploads] = true if mode == :page
|
||||
end
|
||||
opts.on('--mathjax', 'Enable MathJax (renders mathematical equations).',
|
||||
'By default, uses the \'TeX-AMS-MML_HTMLorMML\' config with the \'autoload-all\' extension.') do
|
||||
wiki_options[:mathjax] = true
|
||||
wiki_options[:mathjax_config] = 'mathjax.config.js'
|
||||
end
|
||||
opts.on('--critic-markup', 'Enable support for annotations using CriticMarkup.') do
|
||||
wiki_options[:critic_markup] = true
|
||||
end
|
||||
opts.on('--irb', 'Launch Gollum in \'console mode\', with a predefined API.') do
|
||||
options[:irb] = true
|
||||
end
|
||||
|
||||
opts.on("--host [HOST]", "Hostname or IP address to listen on (default 0.0.0.0).") do |host|
|
||||
options['bind'] = host
|
||||
end
|
||||
opts.separator ''
|
||||
opts.separator ' Minor:'
|
||||
|
||||
opts.on("--version", "Display current version.") do
|
||||
puts "Gollum " + Gollum::VERSION
|
||||
opts.on('--h1-title', 'Use the first \'<h1>\' as page title.') do
|
||||
wiki_options[:h1_title] = true
|
||||
end
|
||||
opts.on('--no-display-metadata', 'Do not render metadata tables in pages.') do
|
||||
wiki_options[:display_metadata] = false
|
||||
end
|
||||
opts.on('--user-icons [MODE]', [:gravatar, :identicon], 'Use specific user-icons for history view.',
|
||||
'Can be set to \'gravatar\' or \'identicon\'. Default: standard avatar.') do |mode|
|
||||
wiki_options[:user_icons] = mode.to_s
|
||||
end
|
||||
opts.on('--template-dir [PATH]', 'Specify custom mustache template directory. Only overrides templates that exist in this directory.') do |path|
|
||||
wiki_options[:template_dir] = path
|
||||
end
|
||||
opts.on('--template-page', 'Use _Template.{ext} as a template for new pages.') do
|
||||
wiki_options[:template_page] = true
|
||||
end
|
||||
opts.on('--lenient-tag-lookup', 'Internal links resolve case-insensitively, will treat spaces as hyphens, and will match the first page found with a certain filename, anywhere in the repository. Provides compatibility with Gollum 4.x.') do
|
||||
wiki_options[:case_insensitive_tag_lookup] = true
|
||||
wiki_options[:global_tag_lookup] = true
|
||||
wiki_options[:hyphened_tag_lookup] = true
|
||||
end
|
||||
opts.on('--emoji', 'Parse and interpret emoji tags (e.g. :heart:) except when the leading colon is backslashed (e.g. \\:heart:).') do
|
||||
wiki_options[:emoji] = true
|
||||
end
|
||||
opts.separator ''
|
||||
opts.separator ' Common:'
|
||||
|
||||
opts.on('--help', 'Display this message.') do
|
||||
puts opts
|
||||
exit 0
|
||||
end
|
||||
opts.on('--version', 'Display the current version of Gollum.') do
|
||||
puts 'Gollum ' + Gollum::VERSION
|
||||
exit 0
|
||||
end
|
||||
opts.on('--versions', 'Display the current version of Gollum and auxiliary gems.') do
|
||||
require 'gollum-lib'
|
||||
puts 'Gollum ' + Gollum::VERSION
|
||||
puts "Running on: #{RUBY_PLATFORM} with Ruby version #{RUBY_VERSION}"
|
||||
puts 'Using:'
|
||||
loaded_gemspecs = Gem.loaded_specs
|
||||
gollum_gems = ['gollum-lib', 'gollum-rjgit_adapter', 'rjgit', 'gollum-rugged_adapter', 'rugged']
|
||||
puts Gem.loaded_specs.select{|name, spec| gollum_gems.include?(name)}.map {|name, spec| "#{name} #{spec.version}"}
|
||||
puts "Markdown rendering gem: #{GitHub::Markup::Markdown.implementation_name}"
|
||||
puts 'Other renderering gems:'
|
||||
renderer_gems = ['RedCloth', 'org-ruby', 'creole', 'asciidoctor', 'wikicloth']
|
||||
renderer_gems.each do |renderer|
|
||||
begin
|
||||
require renderer
|
||||
rescue LoadError
|
||||
end
|
||||
end
|
||||
results = Gem.loaded_specs.select{|name, spec| renderer_gems.include?(name)}.map {|name, spec| "#{name} #{spec.version}"}
|
||||
puts results.empty? ? 'none' : results
|
||||
exit 0
|
||||
end
|
||||
|
||||
opts.on("--irb", "Start an irb process with gollum loaded for the current wiki.") do
|
||||
options['irb'] = true
|
||||
end
|
||||
|
||||
opts.separator ''
|
||||
end
|
||||
|
||||
# Read command line options into `options` hash
|
||||
begin
|
||||
opts.parse!
|
||||
rescue OptionParser::InvalidOption
|
||||
puts "gollum: #{$!.message}"
|
||||
puts "gollum: try 'gollum --help' for more information"
|
||||
rescue OptionParser::InvalidOption => e
|
||||
puts "gollum: #{e.message}"
|
||||
puts 'gollum: try \'gollum --help\' for more information'
|
||||
exit
|
||||
end
|
||||
|
||||
# --gollum-path wins over ARGV[0]
|
||||
gollum_path = ARGV[0] || Dir.pwd
|
||||
|
||||
if options['irb']
|
||||
if options[:irb]
|
||||
require 'irb'
|
||||
# http://jameskilton.com/2009/04/02/embedding-irb-into-your-ruby-application/
|
||||
module IRB # :nodoc:
|
||||
@@ -63,13 +224,13 @@ if options['irb']
|
||||
ARGV.replace(args)
|
||||
@__initialized = true
|
||||
end
|
||||
|
||||
|
||||
ws = WorkSpace.new(binding)
|
||||
irb = Irb.new(ws)
|
||||
|
||||
|
||||
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
|
||||
@CONF[:MAIN_CONTEXT] = irb.context
|
||||
|
||||
|
||||
catch(:IRB_EXIT) do
|
||||
irb.eval_input
|
||||
end
|
||||
@@ -77,27 +238,55 @@ if options['irb']
|
||||
end
|
||||
|
||||
begin
|
||||
wiki = Gollum::Wiki.new(gollum_path)
|
||||
if !wiki.exist? then raise Grit::InvalidGitRepositoryError end
|
||||
puts "Loaded Gollum wiki at #{File.expand_path(gollum_path).inspect}."
|
||||
puts
|
||||
require 'gollum-lib'
|
||||
wiki = Gollum::Wiki.new(gollum_path, wiki_options)
|
||||
if !wiki.exist? then
|
||||
raise Gollum::InvalidGitRepositoryError
|
||||
end
|
||||
|
||||
puts
|
||||
puts 'Loaded Gollum wiki at:'
|
||||
puts "#{File.expand_path(gollum_path).inspect}"
|
||||
puts
|
||||
puts 'Example API calls:'
|
||||
puts %( page = wiki.page('page-name'))
|
||||
puts %( # => <Gollum::Page>)
|
||||
puts
|
||||
puts %( page.raw_data)
|
||||
puts %( # => "# My wiki page")
|
||||
puts %( # => '# My wiki page')
|
||||
puts
|
||||
puts %( page.formatted_data)
|
||||
puts %( # => "<h1>My wiki page</h1>")
|
||||
puts %( # => '<h1>My wiki page</h1>')
|
||||
puts
|
||||
puts 'Full API documentation at:'
|
||||
puts 'https://github.com/gollum/gollum-lib'
|
||||
puts
|
||||
puts "Check out the Gollum README for more."
|
||||
IRB.start_session(binding)
|
||||
rescue Grit::InvalidGitRepositoryError, Grit::NoSuchPathError
|
||||
rescue Gollum::InvalidGitRepositoryError, Gollum::NoSuchPathError
|
||||
puts "Invalid Gollum wiki at #{File.expand_path(gollum_path).inspect}"
|
||||
exit 0
|
||||
end
|
||||
else
|
||||
require 'gollum/frontend/app'
|
||||
require 'gollum/app'
|
||||
Precious::App.set(:environment, ENV.fetch('RACK_ENV', :production).to_sym)
|
||||
Precious::App.set(:gollum_path, gollum_path)
|
||||
Precious::App.run!(options)
|
||||
Precious::App.set(:wiki_options, wiki_options)
|
||||
|
||||
if cfg = options[:config]
|
||||
# If the path begins with a '/' it will be considered an absolute path,
|
||||
# otherwise it will be relative to the CWD
|
||||
cfg = File.join(Dir.getwd, cfg) unless cfg.slice(0) == File::SEPARATOR
|
||||
require cfg
|
||||
end
|
||||
|
||||
base_path = wiki_options[:base_path]
|
||||
|
||||
if base_path.nil?
|
||||
Precious::App.run!(options)
|
||||
else
|
||||
require 'rack'
|
||||
|
||||
# Rack::Handler does not work with Ctrl + C. Use Rack::Server instead.
|
||||
Rack::Server.new(:app => Precious::MapGollum.new(base_path), :Port => options[:port], :Host => options[:bind]).start
|
||||
end
|
||||
end
|
||||
|
||||
Executable
+271
@@ -0,0 +1,271 @@
|
||||
#!/usr/bin/env ruby
|
||||
#coding:utf-8
|
||||
require 'optparse'
|
||||
require 'pathname'
|
||||
require 'rubygems'
|
||||
|
||||
wiki_options = {}
|
||||
options = {}
|
||||
|
||||
migrate_options = {
|
||||
:hyphenate => true
|
||||
}
|
||||
|
||||
def setting(const)
|
||||
Object.const_defined?(const.upcase) && Object.const_get(const.upcase)
|
||||
end
|
||||
|
||||
opts = OptionParser.new do |opts|
|
||||
opts.banner = <<EOF
|
||||
Use this tool to migrate a wiki repository created under Gollum versions 4.x or earlier to a 5.x compatibile repo.
|
||||
It finds and repairs Gollum link tags that no longer work under 5.x for three reasons:
|
||||
|
||||
* 5.x wiki internal links may contain spaces. [[Bilbo Baggins]] and [[Bilbo-Baggins]] therefore link to distinct pages.
|
||||
* 5.x wiki internal links are case senitive
|
||||
* 5.x wiki internal links are no longer 'global'.
|
||||
|
||||
* NB: you can use the --lenient-tag-lookup option in gollum >= 5.x to enable 4.x-backwards compatible tags.
|
||||
|
||||
See https://github.com/gollum/gollum/wiki/5.0-release-notes#filename-handling for more information.
|
||||
Usage of this script comes without any warranty.
|
||||
|
||||
Usage: gollum-migrate-tags /path/to/repo
|
||||
|
||||
NB: without the --write flag, this will be a 'dry run' that doesn't actually make any changes, but outputs the changes that would be made.
|
||||
|
||||
You can use the --page-file-dir and --config options as you would normally with gollum.
|
||||
|
||||
Requires a non-bare repository. Recommended usage:
|
||||
|
||||
1. Clone your wiki's repository to create a backup.
|
||||
2. Run this script on your cloned repo.
|
||||
3. If all looks sane, run the script with the --write option. This will overwrite files in your working directory, but not commit the changes, so you have time to review them.
|
||||
4. Do a 'git diff' to inspect the changes.
|
||||
5. Commit the changes if all looks sane, and push/pull them back into your original repo.
|
||||
|
||||
Options:
|
||||
EOF
|
||||
opts.on('-c', '--config [FILE]', 'Specify path to the Gollum\'s configuration file.') do |file|
|
||||
options[:config] = file
|
||||
end
|
||||
|
||||
opts.on('--page-file-dir [PATH]', 'Specify the subdirectory for all pages. Default: repository root.') do |path|
|
||||
wiki_options[:page_file_dir] = path
|
||||
end
|
||||
|
||||
opts.on('--prefer-relative-links', 'When specified, will try to replace broken links with relative links (\'[[Foo/Bar]]\' instead of \'[[/Subdir/Foo/Bar]]\') where possible.') do
|
||||
migrate_options[:prefer_relative] = true
|
||||
end
|
||||
|
||||
opts.on('--hyphenate', 'Default. Repair links that use spaces instead of hyphens: [[Bilbo Baggins]] -> [[Bilbo-Baggins]]') do
|
||||
migrate_options[:hyphenate] = true
|
||||
end
|
||||
|
||||
opts.on('--no-hyphenate', 'Turn off the --hyphenate option.') do
|
||||
migrate_options[:hyphenate] = false
|
||||
end
|
||||
|
||||
opts.on('--run-silent', 'Don\'t output anything.') do
|
||||
migrate_options[:run_silent] = true
|
||||
end
|
||||
|
||||
opts.on('--write', 'No dry run: actually perform the substitutions.') do
|
||||
migrate_options[:no_dry_run] = true
|
||||
end
|
||||
end
|
||||
|
||||
# Read command line options into `options` hash
|
||||
begin
|
||||
opts.parse!
|
||||
migrate_options.each do |setting, value|
|
||||
const = setting.to_s.upcase
|
||||
Object.const_set(const, value) unless Object.const_defined?(const)
|
||||
end
|
||||
wiki_options[:page_file_dir] = setting(:page_file_dir) ? setting(:page_file_dir) : wiki_options[:page_file_dir] # Allow settings :page_file_dir through PAGE_FILE_DIR constant.
|
||||
rescue OptionParser::InvalidOption
|
||||
puts "gollum-migrate-tags: #{$!.message}"
|
||||
puts "gollum-migrate-tags: try 'gollum-migrate-tags --help' for more information"
|
||||
exit
|
||||
end
|
||||
|
||||
REPO = ARGV[0] || Dir.pwd
|
||||
|
||||
require 'gollum-lib'
|
||||
|
||||
if cfg = options[:config]
|
||||
# If the path begins with a '/' it will be considered an absolute path,
|
||||
# otherwise it will be relative to the CWD
|
||||
cfg = File.join(Dir.getwd, cfg) unless cfg.slice(0) == File::SEPARATOR
|
||||
require cfg
|
||||
end
|
||||
|
||||
class Gollum::Filter::CodeMigrator < Gollum::Filter::Code
|
||||
def extract(data)
|
||||
case @markup.format
|
||||
when :asciidoc
|
||||
data.gsub!(/^(\[source,([^\r\n]*)\]\n)?----\n(.+?)\n----$/m) do
|
||||
cache_codeblock($~.to_s)
|
||||
end
|
||||
when :org
|
||||
org_headers = %r{([ \t]*#\+HEADER[S]?:[^\r\n]*\n)*}
|
||||
org_name = %r{([ \t]*#\+NAME:[^\r\n]*\n)?}
|
||||
org_lang = %r{[ ]*([^\n \r]*)[ ]*[^\r\n]*}
|
||||
org_begin = %r{([ \t]*)#\+BEGIN_SRC#{org_lang}\r?\n}
|
||||
org_end = %r{\r?\n[ \t]*#\+END_SRC[ \t\r]*}
|
||||
data.gsub!(/^#{org_headers}#{org_name}#{org_begin}(.+?)#{org_end}$/mi) do
|
||||
cache_codeblock($~.to_s)
|
||||
end
|
||||
when :markdown
|
||||
data.gsub!(/^([ ]{0,3})(~~~+) ?([^\r\n]+)?\r?\n(.+?)\r?\n[ ]{0,3}(~~~+)[ \t\r]*$/m) do
|
||||
m_indent = Regexp.last_match[1]
|
||||
m_start = Regexp.last_match[2] # ~~~
|
||||
m_lang = Regexp.last_match[3]
|
||||
m_code = Regexp.last_match[4]
|
||||
m_end = Regexp.last_match[5] # ~~~
|
||||
# The closing code fence must be at least as long as the opening fence
|
||||
next '' if m_end.length < m_start.length
|
||||
lang = m_lang ? m_lang.strip.split.first : nil
|
||||
cache_codeblock($~.to_s)
|
||||
end
|
||||
end
|
||||
|
||||
data.gsub!(/^([ ]{0,3})``` ?([^\r\n]+)?\r?\n(.+?)\r?\n[ ]{0,3}```[ \t]*\r?$/m) do
|
||||
cache_codeblock($~.to_s)
|
||||
end
|
||||
data
|
||||
end
|
||||
|
||||
def process(data)
|
||||
return data if data.nil? || data.size.zero? || @map.size.zero?
|
||||
@map.each do |id, block| ## Just put the code blocks back in verbatim
|
||||
data.gsub!(id, block)
|
||||
end
|
||||
data
|
||||
end
|
||||
|
||||
def cache_codeblock(block)
|
||||
id = "#{open_pattern}#{Digest::SHA1.hexdigest(block)}#{close_pattern}"
|
||||
@map[id] = block
|
||||
id
|
||||
end
|
||||
end
|
||||
|
||||
class ::Gollum::Filter::TagMigrator < Gollum::Filter::Tags
|
||||
def process_tag(tag)
|
||||
link_part, extra = parse_tag_parts(tag)
|
||||
orig_tag = %{[[#{tag}]]}
|
||||
return orig_tag if link_part.nil?
|
||||
|
||||
img_args = extra ? [extra, link_part] : [link_part]
|
||||
mime = MIME::Types.type_for(::File.extname(img_args.first.to_s)).first
|
||||
|
||||
# For any kind of tag other than an internal link: just return the tag.
|
||||
if tag =~ /^_TOC_/ || link_part =~ /^_$/ || link_part =~ /^#{INCLUDE_TAG}/ || (mime && mime.content_type =~ /^image/) || process_external_link_tag(link_part, extra) || process_file_link_tag(link_part, extra)
|
||||
return orig_tag
|
||||
end
|
||||
|
||||
# Try to resolve it as an internal Page link tag.
|
||||
link = link_part
|
||||
page = find_page_or_file_from_path(link)
|
||||
anchor = nil
|
||||
|
||||
if page.nil? # No match yet, now try finding the page with anchor removed
|
||||
if pos = link.rindex('#')
|
||||
anchor = link[pos..-1]
|
||||
link = link[0...pos]
|
||||
end
|
||||
|
||||
if link.empty? && anchor # Internal anchor link, don't search for the page but return the original tag
|
||||
return orig_tag
|
||||
end
|
||||
|
||||
page = find_page_or_file_from_path(link)
|
||||
end
|
||||
|
||||
if page
|
||||
# Great, the link is not broken. Return the original tag.
|
||||
return orig_tag
|
||||
else
|
||||
possibles = find_linked(link)
|
||||
if possibles.empty?
|
||||
log(:info, "Found no candidates for broken link: #{orig_tag}")
|
||||
return orig_tag
|
||||
else
|
||||
if possibles.size > 1
|
||||
log(:empty)
|
||||
log(:warn, "Found multiple possibilities for the link '#{orig_tag}':")
|
||||
possibles.map! {|p| Pathname.new(p)}
|
||||
possibles.sort!
|
||||
possibles.each{|p| log(:none, "* #{p}")}
|
||||
log(:warn,"Picking #{possibles.first}")
|
||||
log(:empty)
|
||||
end
|
||||
pick = possibles.first
|
||||
return tag_for_pick(pick, orig_tag, extra, anchor, @markup.page.path)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def tag_for_pick(pick, orig_tag, extra, anchor, linking_page_path)
|
||||
pick = if setting(:prefer_relative)
|
||||
overlapping_path = Pathname.new(linking_page_path).dirname.to_s
|
||||
overlapping_path = overlapping_path == '.' ? '' : ::File.join('/', overlapping_path)
|
||||
relative_path = pick.to_s.match(/^#{overlapping_path}\/(.+)/)
|
||||
relative_path ? relative_path[1] : pick
|
||||
else
|
||||
pick
|
||||
end
|
||||
new_tag = extra.nil? ? %{[[#{pick}#{anchor}]]} : %{[[#{extra}|#{pick}#{anchor}]]}
|
||||
log(:info, "#{@markup.page.path}: Changing #{orig_tag} -> #{new_tag}")
|
||||
new_tag
|
||||
end
|
||||
end
|
||||
|
||||
class ::Gollum::Filter::PlainTextMigrator < Gollum::Filter::PlainText
|
||||
def extract(data)
|
||||
data
|
||||
end
|
||||
end
|
||||
|
||||
filter_chain = [:PlainTextMigrator, :CodeMigrator, :TagMigrator]
|
||||
|
||||
wiki = ::Gollum::Wiki.new(REPO, wiki_options.merge({:filter_chain => filter_chain}))
|
||||
TREE = wiki.tree_list(wiki.ref, true, true).map {|file| ::File.join('/', file.path)}
|
||||
|
||||
def find_linked(link)
|
||||
link.gsub!(' ', '-') if setting(:hyphenate) # Match paths containing dashes instead of spaces
|
||||
# If the link has no explicit file extension, test against the link + the '.' character.
|
||||
# This is to avoid that 'Samwi' matches 'Samwise.md'
|
||||
# If it has an explicit file extension ('Samwi.md'), just test against that.
|
||||
test_path = ::File.extname(link).empty? ? /#{link}\..+/ : link
|
||||
# Select pages from the wiki whose path =~ 'Foo/Bar/Samwi.*'
|
||||
# Match case-insenstively to mimic 4.x behavior!
|
||||
TREE.select {|path| path =~ /^\/(.*\/)?#{test_path}/i}
|
||||
end
|
||||
|
||||
def log(kind, msg = nil)
|
||||
unless setting(:run_silent)
|
||||
if kind == :none
|
||||
puts msg
|
||||
elsif kind == :empty
|
||||
puts
|
||||
else
|
||||
puts "[#{kind.to_s.upcase}] #{msg}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
wiki.pages.each do |page|
|
||||
log(:info,"Page #{page.path}")
|
||||
new_data = page.formatted_data
|
||||
if setting(:no_dry_run)
|
||||
path = ::File.join(wiki.path, page.path)
|
||||
f = File.new(path, 'w')
|
||||
f.write(new_data)
|
||||
f.close
|
||||
end
|
||||
log(:none, '====')
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
=begin
|
||||
This file can be used to (e.g.):
|
||||
- alter certain inner parts of Gollum,
|
||||
- extend it with your stuff.
|
||||
|
||||
It is especially useful for customizing supported formats/markups. For more information and examples:
|
||||
- https://github.com/gollum/gollum#config-file
|
||||
|
||||
=end
|
||||
|
||||
# enter your Ruby code here ...
|
||||
@@ -0,0 +1,12 @@
|
||||
=begin
|
||||
You should use this file, if you wish to:
|
||||
- launch Gollum as a Rack app,
|
||||
- alter certain startup behaviour of Gollum.
|
||||
|
||||
For more information and examples:
|
||||
- https://github.com/gollum/gollum/wiki/Gollum-via-Rack
|
||||
- https://github.com/gollum/gollum#config-file
|
||||
|
||||
=end
|
||||
|
||||
# enter your Ruby code here ...
|
||||
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env ruby
|
||||
#
|
||||
# Distributed under the terms of the MIT License.
|
||||
#
|
||||
# Author: Sam Baskinger <basking2@yahoo.com>
|
||||
#
|
||||
# Description: gollum-post is an example script that shows how
|
||||
# to post a file to Gollum. This may be used
|
||||
# to build scripts around CI/CD pipelines that
|
||||
# publish their documentation to Gollum.
|
||||
#
|
||||
|
||||
require 'uri'
|
||||
require 'mechanize'
|
||||
require 'digest'
|
||||
|
||||
GOLLUM=URI('https://mygollum.server')
|
||||
|
||||
m = Mechanize.new()
|
||||
|
||||
page="TestPage"
|
||||
path="/automated/docs"
|
||||
format="asciidoc"
|
||||
content="""
|
||||
= This is #{page}
|
||||
|
||||
This page is automatically generated.
|
||||
"""
|
||||
message='Posting current documentation.'
|
||||
|
||||
# Check if the page exists.
|
||||
p = m.get("#{GOLLUM}#{path}/#{page}")
|
||||
|
||||
# If we were redirected to the creat page...
|
||||
if p.uri.to_s =~ /\/gollum\/create/
|
||||
|
||||
# ... then create the page.
|
||||
p = m.post("#{GOLLUM}/gollum/create",
|
||||
'keybinding' => 'default',
|
||||
'page' => page,
|
||||
'path' => path,
|
||||
'format' => 'asciidoc',
|
||||
'message' => 'Publish bot.',
|
||||
'content' => content)
|
||||
else
|
||||
# ... else, get the previous content and update it.
|
||||
p = m.get("#{GOLLUM}/gollum/edit#{path}/#{page}")
|
||||
|
||||
# Get the previous content. You _could_ check if this is unchanged at this
|
||||
# step and post nothing.
|
||||
previous_content = p.xpath('//textarea[@id="gollum-editor-body"]')[0].text
|
||||
|
||||
# The previous ETag is the Git SHA-1. We need this to replace the previous contents.
|
||||
prev_etag = Digest::SHA1.hexdigest("blob #{previous_content.length}\0#{previous_content}")
|
||||
|
||||
# Post the updated document using the ETag of the previous document to avoid collisions.
|
||||
p = m.post("#{GOLLUM}/gollum/edit#{path}/#{page}",
|
||||
'keybinding' => 'default',
|
||||
'page' => page,
|
||||
'path' => path,
|
||||
'format' => 'asciidoc',
|
||||
'message' => message,
|
||||
'etag' => prev_etag,
|
||||
'content' => content)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
GOLLUM_USER=gollum
|
||||
GOLLUM_BASE=/home/gollum/wiki
|
||||
GOLLUM_OPTS="--config /home/gollum/config.rb"
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/sbin/runscript
|
||||
# Distributed under the terms of the MIT License
|
||||
|
||||
NAME=gollum
|
||||
PID=/var/run/${NAME}.pid
|
||||
EXEC=/usr/local/bin/gollum
|
||||
LOG=/var/log/gollum.log
|
||||
|
||||
depend() {
|
||||
need net
|
||||
}
|
||||
|
||||
start() {
|
||||
# Change log file to be owned by GOLLUM_USER
|
||||
touch "${LOG}"
|
||||
chown "${GOLLUM_USER}" "${LOG}"
|
||||
|
||||
ebegin "Starting Gollum"
|
||||
start-stop-daemon --start \
|
||||
--name "${NAME}" \
|
||||
--user "${GOLLUM_USER}" \
|
||||
--pidfile "${PID}" \
|
||||
--make-pidfile --background \
|
||||
--stderr "${LOG}" \
|
||||
--exec "${EXEC}" -- $GOLLUM_OPTS "$GOLLUM_BASE"
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Gollum"
|
||||
start-stop-daemon --stop \
|
||||
--name "${NAME}" \
|
||||
--user "${GOLLUM_USER}" \
|
||||
--pidfile "${PID}"
|
||||
eend $?
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Gollum wiki server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=%i
|
||||
ExecStart=/usr/bin/gollum
|
||||
Restart=on-abort
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Executable
+79
@@ -0,0 +1,79 @@
|
||||
#!/bin/sh
|
||||
### BEGIN INIT INFO
|
||||
# Provides: gollum
|
||||
# Required-Start: $local_fs $remote_fs $network $syslog
|
||||
# Required-Stop: $local_fs $remote_fs $network $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# X-Interactive: true
|
||||
# Short-Description: Start/stop gollum wiki
|
||||
### END INIT INFO
|
||||
|
||||
# Distributed under the terms of the MIT License
|
||||
|
||||
set -e
|
||||
|
||||
# Edit these settings to your liking:
|
||||
GOLLUM_USER=gollum
|
||||
GOLLUM_BASE=/var/lib/gollum/.git
|
||||
GOLLUM_OPTS="--bare"
|
||||
|
||||
NAME=gollum
|
||||
PID=/var/run/${NAME}.pid
|
||||
EXEC=/usr/local/bin/gollum
|
||||
LOG=/var/log/gollum.log
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
start ()
|
||||
{
|
||||
# Change log file to be owned by GOLLUM_USER
|
||||
touch "${LOG}"
|
||||
chown "${GOLLUM_USER}" "${LOG}"
|
||||
|
||||
log_daemon_msg "Starting Gollum"
|
||||
start-stop-daemon --start \
|
||||
--name "${NAME}" \
|
||||
--user "${GOLLUM_USER}" \
|
||||
--chuid "${GOLLUM_USER}" \
|
||||
--pidfile "${PID}" \
|
||||
--make-pidfile --background \
|
||||
--startas /bin/sh -- -c "exec ${EXEC} $GOLLUM_OPTS \"$GOLLUM_BASE\" > \"${LOG}\" 2>&1"
|
||||
log_end_msg $?
|
||||
}
|
||||
|
||||
stop ()
|
||||
{
|
||||
log_daemon_msg "Stopping Gollum"
|
||||
start-stop-daemon --stop \
|
||||
--user "${GOLLUM_USER}" \
|
||||
--signal INT \
|
||||
--pidfile "${PID}" \
|
||||
--retry 10
|
||||
log_end_msg $?
|
||||
}
|
||||
|
||||
status ()
|
||||
{
|
||||
status_of_proc -p $PID $EXEC $NAME
|
||||
}
|
||||
|
||||
case $1 in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
stop
|
||||
start
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
*)
|
||||
log_success_msg "Usage: $0 {start|stop|restart|status}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Initialize the wiki
|
||||
if [ ! -d .git ]; then
|
||||
git init
|
||||
fi
|
||||
|
||||
# Start gollum service
|
||||
gollum --mathjax
|
||||
@@ -1,32 +0,0 @@
|
||||
Sanitization Rules
|
||||
==================
|
||||
|
||||
Gollum uses the [Sanitize](http://wonko.com/post/sanitize) gem for HTML
|
||||
sanitization.
|
||||
|
||||
See `lib/gollum.rb` for actual settings.
|
||||
|
||||
## ALLOWED TAGS
|
||||
|
||||
a, abbr, acronym, address, area, b, big, blockquote, br, button, caption,
|
||||
center, cite, code, col, colgroup, dd, del, dfn, dir, div, dl, dt, em,
|
||||
fieldset, font, form, h1, h2, h3, h4, h5, h6, hr, i, img, input, ins, kbd,
|
||||
label, legend, li, map, menu, ol, optgroup, option, p, pre, q, s, samp,
|
||||
select, small, span, strike, strong, sub, sup, table, tbody, td, textarea,
|
||||
tfoot, th, thead, tr, tt, u, ul, var
|
||||
|
||||
## ALLOWED ATTRIBUTES
|
||||
|
||||
abbr, accept, accept-charset, accesskey, action, align, alt, axis, border,
|
||||
cellpadding, cellspacing, char, charoff, charset, checked, cite, class, clear,
|
||||
cols, colspan, color, compact, coords, datetime, dir, disabled, enctype, for,
|
||||
frame, headers, height, href, hreflang, hspace, id, ismap, label, lang,
|
||||
longdesc, maxlength, media, method, multiple, name, nohref, noshade, nowrap,
|
||||
prompt, readonly, rel, rev, rows, rowspan, rules, scope, selected, shape,
|
||||
size, span, src, start, summary, tabindex, target, title, type, usemap,
|
||||
valign, value, vspace, width
|
||||
|
||||
## ALLOWED PROTOCOLS
|
||||
|
||||
a href: http, https, mailto
|
||||
img src: http, https
|
||||
+1208
-484
File diff suppressed because it is too large
Load Diff
+23
-66
@@ -1,82 +1,39 @@
|
||||
# ~*~ encoding: utf-8 ~*~
|
||||
# stdlib
|
||||
require 'digest/md5'
|
||||
require 'digest/sha1'
|
||||
require 'ostruct'
|
||||
|
||||
# external
|
||||
require 'grit'
|
||||
require 'i18n'
|
||||
require 'github/markup'
|
||||
require 'sanitize'
|
||||
|
||||
# ruby 1.8 compatibility
|
||||
require 'gollum/ruby1.8'
|
||||
require 'rhino' if RUBY_PLATFORM == 'java'
|
||||
|
||||
# internal
|
||||
require 'gollum/pagination'
|
||||
require 'gollum/blob_entry'
|
||||
require 'gollum/wiki'
|
||||
require 'gollum/page'
|
||||
require 'gollum/file'
|
||||
require 'gollum/markup'
|
||||
require 'gollum/albino'
|
||||
require ::File.expand_path('../gollum/uri_encode_component', __FILE__)
|
||||
|
||||
module Gollum
|
||||
VERSION = '1.1.0'
|
||||
VERSION = '5.2.3'
|
||||
|
||||
SANITIZATION_OPTIONS = {
|
||||
:elements => [
|
||||
'a', 'abbr', 'acronym', 'address', 'area', 'b', 'big',
|
||||
'blockquote', 'br', 'button', 'caption', 'center', 'cite',
|
||||
'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dir',
|
||||
'div', 'dl', 'dt', 'em', 'fieldset', 'font', 'form', 'h1',
|
||||
'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'input',
|
||||
'ins', 'kbd', 'label', 'legend', 'li', 'map', 'menu',
|
||||
'ol', 'optgroup', 'option', 'p', 'pre', 'q', 's', 'samp',
|
||||
'select', 'small', 'span', 'strike', 'strong', 'sub',
|
||||
'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th',
|
||||
'thead', 'tr', 'tt', 'u', 'ul', 'var'
|
||||
],
|
||||
:attributes => {
|
||||
:all => ['abbr', 'accept', 'accept-charset',
|
||||
'accesskey', 'action', 'align', 'alt', 'axis',
|
||||
'border', 'cellpadding', 'cellspacing', 'char',
|
||||
'charoff', 'charset', 'checked', 'cite',
|
||||
'class', 'clear', 'cols', 'colspan', 'color',
|
||||
'compact', 'coords', 'datetime', 'dir',
|
||||
'disabled', 'enctype', 'for', 'frame',
|
||||
'headers', 'height', 'href', 'hreflang',
|
||||
'hspace', 'id', 'ismap', 'label', 'lang',
|
||||
'longdesc', 'maxlength', 'media', 'method',
|
||||
'multiple', 'name', 'nohref', 'noshade',
|
||||
'nowrap', 'prompt', 'readonly', 'rel', 'rev',
|
||||
'rows', 'rowspan', 'rules', 'scope',
|
||||
'selected', 'shape', 'size', 'span', 'src',
|
||||
'start', 'summary', 'tabindex', 'target',
|
||||
'title', 'type', 'usemap', 'valign', 'value',
|
||||
'vspace', 'width']
|
||||
},
|
||||
:protocols => {
|
||||
'a' => {'href' => ['http', 'https', 'mailto', :relative]},
|
||||
'img' => {'href' => ['http', 'https', :relative]}
|
||||
}
|
||||
}
|
||||
HISTORY_SANITIZATION_OPTIONS = SANITIZATION_OPTIONS.merge(
|
||||
:add_attributes => {
|
||||
'a' => {'rel' => 'nofollow'}
|
||||
}
|
||||
)
|
||||
::I18n.available_locales = [:en]
|
||||
::I18n.load_path = Dir[::File.expand_path("lib/gollum/locales") + "/*.yml"]
|
||||
|
||||
class Error < StandardError; end
|
||||
class DuplicatePageError < Error
|
||||
attr_accessor :dir
|
||||
attr_accessor :existing_path
|
||||
attr_accessor :attempted_path
|
||||
def self.assets_path
|
||||
::File.expand_path('gollum/public', ::File.dirname(__FILE__))
|
||||
end
|
||||
|
||||
def initialize(dir, existing, attempted, message = nil)
|
||||
@dir = dir
|
||||
@existing_path = existing
|
||||
@attempted_path = attempted
|
||||
super(message || "Cannot write #{@dir}/#{@attempted_path}, found #{@dir}/#{@existing_path}.")
|
||||
class TemplateFilter
|
||||
@@filters = {}
|
||||
|
||||
def self.add_filter(pattern, &replacement)
|
||||
@@filters[pattern] = replacement
|
||||
end
|
||||
|
||||
def self.apply_filters(data)
|
||||
@@filters.each do |pattern, replacement|
|
||||
data.gsub!(pattern, replacement.call)
|
||||
end
|
||||
data
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
require 'albino'
|
||||
|
||||
class Gollum::Albino < Albino
|
||||
def self.bin
|
||||
Albino.bin
|
||||
end
|
||||
|
||||
def bin
|
||||
Albino.bin
|
||||
end
|
||||
|
||||
def colorize(options = {})
|
||||
html = super.to_s
|
||||
html.sub!(%r{</pre></div>\Z}, "</pre>\n</div>")
|
||||
html
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,695 @@
|
||||
# encoding: UTF-8
|
||||
|
||||
require 'cgi'
|
||||
require 'sinatra'
|
||||
require 'sinatra/namespace'
|
||||
require 'gollum-lib'
|
||||
require 'mustache/sinatra'
|
||||
require 'json'
|
||||
require 'sprockets'
|
||||
require 'sprockets-helpers'
|
||||
require 'octicons'
|
||||
require 'sass'
|
||||
require 'pathname'
|
||||
|
||||
require 'gollum'
|
||||
require 'gollum/assets'
|
||||
require 'gollum/views/helpers'
|
||||
require 'gollum/views/helpers/locale_helpers'
|
||||
require 'gollum/views/layout'
|
||||
require 'gollum/views/editable'
|
||||
require 'gollum/views/has_page'
|
||||
require 'gollum/views/has_user_icons'
|
||||
require 'gollum/views/pagination'
|
||||
require 'gollum/views/rss.rb'
|
||||
require 'gollum/views/template_cascade'
|
||||
|
||||
require File.expand_path '../helpers', __FILE__
|
||||
|
||||
#required to upload bigger binary files
|
||||
Gollum::set_git_timeout(120)
|
||||
Gollum::set_git_max_filesize(190 * 10**6)
|
||||
|
||||
# Run the frontend, based on Sinatra
|
||||
#
|
||||
# There are a number of wiki options that can be set for the frontend
|
||||
#
|
||||
# Example
|
||||
# require 'gollum/app'
|
||||
# Precious::App.set(:wiki_options, {
|
||||
# :universal_toc => false,
|
||||
# }
|
||||
#
|
||||
# See the wiki.rb file for more details on wiki options
|
||||
|
||||
module Precious
|
||||
|
||||
# For use with the --base-path option.
|
||||
class MapGollum
|
||||
def initialize(base_path)
|
||||
@mg = Rack::Builder.new do
|
||||
|
||||
map "/#{base_path}" do
|
||||
run Precious::App
|
||||
end
|
||||
map '/' do
|
||||
run Proc.new { [302, { 'Location' => "/#{base_path}" }, []] }
|
||||
end
|
||||
map '/*' do
|
||||
run Proc.new { [302, { 'Location' => "/#{base_path}" }, []] }
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def call(env)
|
||||
@mg.call(env)
|
||||
end
|
||||
end
|
||||
|
||||
class App < Sinatra::Base
|
||||
register Mustache::Sinatra
|
||||
register Sinatra::Namespace
|
||||
include Precious::Helpers
|
||||
|
||||
Encoding.default_external = "UTF-8"
|
||||
|
||||
dir = File.dirname(File.expand_path(__FILE__))
|
||||
|
||||
set :sprockets, ::Precious::Assets.sprockets(dir)
|
||||
|
||||
set :default_markup, :markdown
|
||||
|
||||
set :mustache, {
|
||||
# Tell mustache where the Views constant lives
|
||||
:namespace => Precious,
|
||||
|
||||
# Mustache templates live here
|
||||
:templates => "#{dir}/templates",
|
||||
|
||||
# Tell mustache where the views are
|
||||
:views => "#{dir}/views"
|
||||
}
|
||||
|
||||
# Sinatra error handling
|
||||
configure :development, :staging do
|
||||
enable :show_exceptions, :dump_errors
|
||||
disable :raise_errors, :clean_trace
|
||||
end
|
||||
|
||||
configure :test do
|
||||
enable :logging, :raise_errors, :dump_errors
|
||||
end
|
||||
|
||||
before do
|
||||
settings.wiki_options[:allow_editing] = settings.wiki_options.fetch(:allow_editing, true)
|
||||
@allow_editing = settings.wiki_options[:allow_editing]
|
||||
@critic_markup = settings.wiki_options[:critic_markup]
|
||||
@redirects_enabled = settings.wiki_options.fetch(:redirects_enabled, true)
|
||||
@per_page_uploads = settings.wiki_options[:per_page_uploads]
|
||||
|
||||
@wiki_title = settings.wiki_options.fetch(:title, 'Gollum Wiki')
|
||||
|
||||
forbid unless @allow_editing || request.request_method == 'GET'
|
||||
|
||||
if settings.wiki_options[:template_dir]
|
||||
Precious::Views::Layout.extend Precious::Views::TemplateCascade
|
||||
Precious::Views::Layout.template_priority_path = settings.wiki_options[:template_dir]
|
||||
end
|
||||
|
||||
@base_url = url('/', false).chomp('/').force_encoding('utf-8')
|
||||
@page_dir = settings.wiki_options[:page_file_dir].to_s
|
||||
|
||||
# above will detect base_path when it's used with map in a config.ru
|
||||
settings.wiki_options.merge!({ :base_path => @base_url })
|
||||
@css = settings.wiki_options[:css]
|
||||
@js = settings.wiki_options[:js]
|
||||
@mathjax_config = settings.wiki_options[:mathjax_config]
|
||||
|
||||
@use_static_assets = settings.wiki_options.fetch(:static, settings.environment != :development)
|
||||
@static_assets_path = settings.wiki_options.fetch(:static_assets_path, ::File.join(File.dirname(__FILE__), 'public/assets'))
|
||||
@mathjax_path = ::File.join(File.dirname(__FILE__), 'public/gollum/javascript/MathJax')
|
||||
|
||||
Sprockets::Helpers.configure do |config|
|
||||
config.environment = settings.sprockets
|
||||
config.environment.context_class.class_variable_set(:@@base_url, @base_url)
|
||||
config.prefix = "#{@base_url}/#{Precious::Assets::ASSET_URL}"
|
||||
config.digest = @use_static_assets
|
||||
if @use_static_assets
|
||||
config.public_path = @static_assets_path
|
||||
config.manifest = Sprockets::Manifest.new(settings.sprockets, @static_assets_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
get '/' do
|
||||
redirect clean_url(::File.join(@base_url, wiki_new.index_page))
|
||||
end
|
||||
|
||||
namespace '/gollum' do
|
||||
get '/feed/' do
|
||||
url = "#{env['rack.url_scheme']}://#{env['HTTP_HOST']}"
|
||||
changes = wiki_new.latest_changes(::Gollum::Page.log_pagination_options(
|
||||
per_page: settings.wiki_options.fetch(:pagination_count, 10),
|
||||
page_num: 0)
|
||||
)
|
||||
content_type :rss
|
||||
RSSView.new(@base_url, @wiki_title, url, changes).render
|
||||
end
|
||||
|
||||
get '/assets/mathjax/*' do
|
||||
env['PATH_INFO'].sub!('/gollum/assets/mathjax', '')
|
||||
Rack::Static.new(not_found_proc, {:root => @mathjax_path, :urls => ['']}).call(env)
|
||||
end
|
||||
|
||||
get '/assets/*' do
|
||||
env['PATH_INFO'].sub!("/#{Precious::Assets::ASSET_URL}", '')
|
||||
if @use_static_assets
|
||||
env['PATH_INFO'].sub!(Sprockets::Helpers.prefix, '') if @base_url
|
||||
Rack::Static.new(not_found_proc, {:root => @static_assets_path, :urls => ['']}).call(env)
|
||||
else
|
||||
settings.sprockets.call(env)
|
||||
end
|
||||
end
|
||||
|
||||
get '/last_commit_info' do
|
||||
content_type :json
|
||||
if page = wiki_page(params[:path]).page
|
||||
version = page.last_version
|
||||
{:author => version.author.name, :date => version.authored_date}.to_json
|
||||
end
|
||||
end
|
||||
|
||||
get '/emoji/:name' do
|
||||
begin
|
||||
[200, {'Content-Type' => 'image/png'}, emoji(params['name'])]
|
||||
rescue ArgumentError
|
||||
not_found
|
||||
end
|
||||
end
|
||||
|
||||
get '/data/*' do
|
||||
if page = wiki_page(params[:splat].first).page
|
||||
page.raw_data
|
||||
end
|
||||
end
|
||||
|
||||
get %r{/(edit|create)/(\.redirects.gollum|(custom|mathjax\.config)\.(js|css))} do
|
||||
forbid('Changing this resource is not allowed.')
|
||||
end
|
||||
|
||||
post %r{/(delete|rename|edit|create)/(\.redirects.gollum|(custom|mathjax\.config)\.(js|css))} do
|
||||
forbid('Changing this resource is not allowed.')
|
||||
end
|
||||
|
||||
post %r{/revert/(\.redirects.gollum|(custom|mathjax\.config\.)\.(js|css)/.*/.*)} do
|
||||
forbid('Changing this resource is not allowed.')
|
||||
end
|
||||
|
||||
get '/edit/*' do
|
||||
forbid unless @allow_editing
|
||||
wikip = wiki_page(params[:splat].first)
|
||||
@name = wikip.fullname
|
||||
@path = wikip.path
|
||||
@upload_dest = find_upload_dest(wikip.fullpath)
|
||||
wiki = wikip.wiki
|
||||
@allow_uploads = wiki.allow_uploads
|
||||
if page = wikip.page
|
||||
@page = page
|
||||
@content = page.text_data
|
||||
@mathjax = wiki.mathjax
|
||||
@etag = page.sha
|
||||
mustache :edit
|
||||
else
|
||||
path = ::File.join('gollum/create', @path, @name)
|
||||
redirect to(clean_url(encodeURIComponent(path)))
|
||||
end
|
||||
end
|
||||
|
||||
# AJAX calls only
|
||||
post '/upload_file' do
|
||||
|
||||
wiki = wiki_new
|
||||
halt 405 unless wiki.allow_uploads
|
||||
|
||||
if params[:file]
|
||||
fullname = params[:file][:filename]
|
||||
tempfile = params[:file][:tempfile]
|
||||
end
|
||||
halt 500 unless tempfile.is_a? Tempfile
|
||||
|
||||
if wiki.per_page_uploads
|
||||
dir = request.referer.sub(request.base_url, '')
|
||||
# remove base path if it is set
|
||||
dir.sub!(/^#{wiki.base_path}/, '') if wiki.base_path
|
||||
# remove base_url and gollum/* subpath if necessary
|
||||
dir.sub!(/^\/gollum\/[-\w]+\//, '')
|
||||
# remove file extension
|
||||
dir.sub!(/#{::File.extname(dir)}$/, '')
|
||||
# revert escaped whitespaces
|
||||
dir.gsub!(/%20/, ' ')
|
||||
dir = ::File.join('uploads', dir)
|
||||
else
|
||||
# store all uploads together
|
||||
dir = 'uploads'
|
||||
end
|
||||
halt 500 if dir.include?('..')
|
||||
halt 500 unless Pathname(dir).relative?
|
||||
|
||||
ext = ::File.extname(fullname)
|
||||
format = ext.split('.').last || 'txt'
|
||||
filename = ::File.basename(fullname, ext)
|
||||
contents = ::File.read(tempfile)
|
||||
reponame = "#{dir}/#{filename}.#{format}"
|
||||
|
||||
options = { :message => "Uploaded file to #{reponame}" }
|
||||
options[:parent] = wiki.repo.head.commit if wiki.repo.head
|
||||
|
||||
author = session['gollum.author']
|
||||
unless author.nil?
|
||||
options.merge! author
|
||||
end
|
||||
|
||||
normalize = Gollum::Page.valid_extension?(fullname)
|
||||
|
||||
begin
|
||||
wiki.write_file(reponame, contents, options)
|
||||
redirect to(request.referer)
|
||||
rescue Gollum::IllegalDirectoryPath => e
|
||||
@message = e.message
|
||||
mustache :error
|
||||
rescue Gollum::DuplicatePageError
|
||||
halt 409 # Signal conflict
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
post '/rename/*' do
|
||||
wikip = wiki_page(params[:splat].first)
|
||||
halt 500 if wikip.nil?
|
||||
wiki = wikip.wiki
|
||||
page = wikip.page
|
||||
rename = params[:rename]
|
||||
halt 500 if page.nil?
|
||||
halt 500 if rename.nil? or rename.empty?
|
||||
|
||||
# Fixup the rename if it is a relative path
|
||||
# In 1.8.7 rename[0] != rename[0..0]
|
||||
if rename[0..0] != '/'
|
||||
source_dir = ::File.dirname(page.path)
|
||||
source_dir = '' if source_dir == '.'
|
||||
(target_dir, target_name) = ::File.split(rename)
|
||||
target_dir = target_dir == '' ? source_dir : "#{source_dir}/#{target_dir}"
|
||||
rename = "#{target_dir}/#{target_name}"
|
||||
end
|
||||
|
||||
committer = Gollum::Committer.new(wiki, commit_message)
|
||||
commit = { :committer => committer }
|
||||
|
||||
success = wiki.rename_page(page, rename, commit)
|
||||
if !success
|
||||
# This occurs on NOOPs, for example renaming A => A
|
||||
redirect to("/#{page.escaped_url_path}")
|
||||
return
|
||||
end
|
||||
|
||||
# Renaming preserves format, so add the page's format to the renamed path to retrieve the renamed page
|
||||
new_path = "#{rename}.#{Gollum::Page.format_to_ext(page.format)}"
|
||||
# Add a redirect from the old page to the new
|
||||
wiki.add_redirect(page.url_path, clean_url(new_path), commit) if @redirects_enabled
|
||||
|
||||
committer.commit
|
||||
|
||||
page = wiki_page(new_path).page
|
||||
return if page.nil?
|
||||
redirect to("/#{page.escaped_url_path}")
|
||||
end
|
||||
|
||||
post '/edit/*' do
|
||||
etag = params[:etag]
|
||||
path = "/#{clean_url(sanitize_empty_params(params[:path]))}"
|
||||
wiki = wiki_new
|
||||
page = wiki.page(::File.join(path, params[:page]))
|
||||
|
||||
return if page.nil?
|
||||
if etag != page.sha
|
||||
# Signal edit collision and return the page's most recent version
|
||||
halt 412, {etag: page.sha, text_data: page.text_data}.to_json
|
||||
end
|
||||
|
||||
committer = Gollum::Committer.new(wiki, commit_message)
|
||||
commit = { :committer => committer }
|
||||
|
||||
update_wiki_page(wiki, page, params[:content], commit, page.name, params[:format])
|
||||
update_wiki_page(wiki, page.header, params[:header], commit) if params[:header]
|
||||
update_wiki_page(wiki, page.footer, params[:footer], commit) if params[:footer]
|
||||
update_wiki_page(wiki, page.sidebar, params[:sidebar], commit) if params[:sidebar]
|
||||
committer.commit
|
||||
|
||||
end
|
||||
|
||||
post '/delete/*' do
|
||||
forbid unless @allow_editing
|
||||
wiki = wiki_new
|
||||
filepath = params[:splat].first
|
||||
unless filepath.nil?
|
||||
commit = commit_message
|
||||
commit[:message] = "Deleted #{filepath}"
|
||||
wiki.delete_file(filepath, commit)
|
||||
end
|
||||
end
|
||||
|
||||
get '/create/*' do
|
||||
forbid unless @allow_editing
|
||||
wikip = wiki_page(params[:splat].first)
|
||||
@name = wikip.name
|
||||
@ext = wikip.ext
|
||||
@path = wikip.path
|
||||
@template_page = load_template(@path) if settings.wiki_options[:template_page]
|
||||
@allow_uploads = wikip.wiki.allow_uploads
|
||||
@upload_dest = find_upload_dest(wikip.fullpath)
|
||||
|
||||
page = wikip.page
|
||||
if page
|
||||
redirect to("/#{clean_url(page.escaped_url_path)}")
|
||||
else
|
||||
unless Gollum::Page.format_for("#{@name}#{@ext}")
|
||||
@name = "#{@name}#{@ext}"
|
||||
@ext = nil
|
||||
end
|
||||
mustache :create
|
||||
end
|
||||
end
|
||||
|
||||
post '/create' do
|
||||
name = params[:page]
|
||||
path = sanitize_empty_params(params[:path]) || ''
|
||||
format = params[:format].intern
|
||||
wiki = wiki_new
|
||||
|
||||
path.gsub!(/^\//, '')
|
||||
|
||||
begin
|
||||
wiki.write_page(::File.join(path, name), format, params[:content], commit_message)
|
||||
|
||||
redirect to("/#{clean_url(::File.join(encodeURIComponent(path), encodeURIComponent(wiki.page_file_name(name, format))))}")
|
||||
rescue Gollum::DuplicatePageError, Gollum::IllegalDirectoryPath => e
|
||||
@message = e.message
|
||||
mustache :error
|
||||
end
|
||||
end
|
||||
|
||||
post '/revert/*/:sha1/:sha2' do
|
||||
wikip = wiki_page(params[:splat].first)
|
||||
@path = wikip.path
|
||||
@name = wikip.fullname
|
||||
wiki = wikip.wiki
|
||||
@page = wikip.page
|
||||
sha1 = params[:sha1]
|
||||
sha2 = params[:sha2]
|
||||
|
||||
commit = commit_message
|
||||
commit[:message] = "Revert commit #{sha2.chars.take(7).join}"
|
||||
if wiki.revert_page(@page, sha1, sha2, commit)
|
||||
redirect to("/#{@page.escaped_url_path}")
|
||||
else
|
||||
sha2, sha1 = sha1, "#{sha1}^" if !sha2
|
||||
@versions = [sha1, sha2]
|
||||
@diff = wiki.repo.diff(@versions.first, @versions.last, @page.path)
|
||||
@message = 'The patch does not apply.'
|
||||
mustache :compare
|
||||
end
|
||||
end
|
||||
|
||||
post '/preview' do
|
||||
wiki = wiki_new
|
||||
@name = params[:page] ? strip_page_name(params[:page]) : 'Preview'
|
||||
@page = wiki.preview_page(@name, params[:content], params[:format])
|
||||
['sidebar', 'header', 'footer'].each do |subpage|
|
||||
@page.send("set_#{subpage}".to_sym, params[subpage]) if params[subpage]
|
||||
end
|
||||
@content = @page.formatted_data
|
||||
@toc_content = wiki.universal_toc ? @page.toc_data : nil
|
||||
@h1_title = wiki.h1_title
|
||||
@editable = false
|
||||
@bar_side = wiki.bar_side
|
||||
@allow_uploads = false
|
||||
@navbar = false
|
||||
@preview = true
|
||||
mustache :page
|
||||
end
|
||||
|
||||
get '/history/*' do
|
||||
wikip = wiki_page(params[:splat].first)
|
||||
@name = wikip.fullname
|
||||
@page = wikip.page
|
||||
@page_num = [params[:page_num].to_i, 1].max
|
||||
@max_count = settings.wiki_options.fetch(:pagination_count, 10)
|
||||
unless @page.nil?
|
||||
@wiki = @page.wiki
|
||||
@versions = @page.versions(
|
||||
per_page: @max_count,
|
||||
page_num: @page_num,
|
||||
follow: settings.wiki_options.fetch(:follow_renames, true)
|
||||
)
|
||||
mustache :history
|
||||
else
|
||||
redirect to("/")
|
||||
end
|
||||
end
|
||||
|
||||
get '/latest_changes' do
|
||||
@wiki = wiki_new
|
||||
@page_num = [params[:page_num].to_i, 1].max
|
||||
@max_count = settings.wiki_options.fetch(:pagination_count, 10)
|
||||
@versions = @wiki.latest_changes(::Gollum::Page.log_pagination_options(per_page: @max_count, page_num: @page_num))
|
||||
mustache :latest_changes
|
||||
end
|
||||
|
||||
get %r{
|
||||
/compare/ # match any URL beginning with /compare/
|
||||
(.+) # extract the full path (including any directories)
|
||||
/ # match the final slash
|
||||
([^.]+) # match the first SHA1
|
||||
\.{2,3} # match .. or ...
|
||||
(.+) # match the second SHA1
|
||||
}x do |path, start_version, end_version|
|
||||
wikip = wiki_page(path)
|
||||
@path = wikip.path
|
||||
@name = wikip.fullname
|
||||
@versions = [start_version, end_version]
|
||||
wiki = wikip.wiki
|
||||
@page = wikip.page
|
||||
@diff = wiki.repo.diff(@versions.first, @versions.last, @page.path)
|
||||
if @diff.empty?
|
||||
@message = 'Could not compare these two revisions, no differences were found.'
|
||||
mustache :error
|
||||
else
|
||||
mustache :compare
|
||||
end
|
||||
end
|
||||
|
||||
get '/compare/*' do
|
||||
@file = clean_url(encodeURIComponent(params[:splat].first))
|
||||
@versions = params[:versions] || []
|
||||
if @versions.size == 1
|
||||
wikip = wiki_page(params[:splat].first)
|
||||
commit = wikip.wiki.repo.commit(@versions.first)
|
||||
parent = commit.parent
|
||||
if parent.nil?
|
||||
redirect to("#{@file}/#{@commit.id}")
|
||||
else
|
||||
@versions.push(parent.id)
|
||||
end
|
||||
end
|
||||
if @versions.empty?
|
||||
redirect to("gollum/history/#{@file}")
|
||||
else
|
||||
redirect to("gollum/compare/%s/%s...%s" % [
|
||||
@file,
|
||||
@versions.last,
|
||||
@versions.first]
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
get %r{
|
||||
/commit/ # match any URL beginning with /show/
|
||||
(\w+) # match the SHA1
|
||||
}x do |version|
|
||||
@version = version
|
||||
wiki = wiki_new
|
||||
begin
|
||||
@commit = wiki.repo.commit(version)
|
||||
parent = @commit.parent
|
||||
parent_id = parent.nil? ? nil : parent.id
|
||||
@diff = wiki.repo.diff(parent_id, version)
|
||||
mustache :commit
|
||||
rescue Gollum::Git::NoSuchShaFound
|
||||
@message = "Invalid commit: #{@version}"
|
||||
mustache :error
|
||||
end
|
||||
end
|
||||
|
||||
get '/search' do
|
||||
@query = params[:q] || ''
|
||||
@name = @query
|
||||
if @query.empty?
|
||||
@results = []
|
||||
@search_terms = []
|
||||
else
|
||||
@page_num = [params[:page_num].to_i, 1].max
|
||||
@max_count = 10
|
||||
wiki = wiki_new
|
||||
@results, @search_terms = wiki.search(@query)
|
||||
end
|
||||
mustache :search
|
||||
end
|
||||
|
||||
get %r{
|
||||
/overview # match any URL beginning with /overview
|
||||
(?: # begin an optional non-capturing group
|
||||
/(.+) # capture any path after the "/overview" excluding the leading slash
|
||||
)? # end the optional non-capturing group
|
||||
}x do |path|
|
||||
wiki = wiki_new
|
||||
@results = wiki.tree_list
|
||||
|
||||
if path
|
||||
@path = Pathname.new(path).cleanpath.to_s
|
||||
check_path = wiki.page_file_dir ? ::File.join(wiki.page_file_dir, @path, '/') : "#{@path}/"
|
||||
@results.select! {|result| result.path.start_with?(check_path) }
|
||||
end
|
||||
|
||||
@results.sort_by! {|result| result.name.downcase}
|
||||
|
||||
@ref = wiki.ref
|
||||
@newable = true
|
||||
mustache :overview
|
||||
end
|
||||
end # gollum namespace
|
||||
|
||||
get %r{/(.+?)/([0-9a-f]{40})} do
|
||||
file_path = params[:captures][0]
|
||||
version = params[:captures][1]
|
||||
wikip = wiki_page(file_path, version)
|
||||
name = wikip.fullname
|
||||
path = wikip.path
|
||||
if page = wikip.page
|
||||
@page = page
|
||||
@name = name
|
||||
@content = page.formatted_data
|
||||
@version = version
|
||||
@historical = true
|
||||
@bar_side = wikip.wiki.bar_side
|
||||
@navbar = true
|
||||
mustache :page
|
||||
elsif file = wikip.wiki.file(file_path, version, true)
|
||||
show_file(file)
|
||||
else
|
||||
halt 404
|
||||
end
|
||||
end
|
||||
|
||||
get '/\.redirects\.gollum' do
|
||||
forbid('Accessing this resource is not allowed.')
|
||||
end
|
||||
|
||||
get '/*' do
|
||||
show_page_or_file(params[:splat].first)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def show_page_or_file(fullpath)
|
||||
wiki = wiki_new
|
||||
if page = wiki.page(fullpath)
|
||||
@page = page
|
||||
@name = page.filename_stripped
|
||||
@content = page.formatted_data
|
||||
@upload_dest = find_upload_dest(Pathname.new(fullpath).cleanpath.to_s)
|
||||
|
||||
# Extensions and layout data
|
||||
@editable = true
|
||||
@toc_content = wiki.universal_toc ? @page.toc_data : nil
|
||||
@mathjax = wiki.mathjax
|
||||
@h1_title = wiki.h1_title
|
||||
@bar_side = wiki.bar_side
|
||||
@allow_uploads = wiki.allow_uploads
|
||||
@navbar = true
|
||||
mustache :page
|
||||
elsif file = wiki.file(fullpath, wiki.ref, true)
|
||||
show_file(file)
|
||||
elsif @redirects_enabled && redirect_path = wiki.redirects[fullpath]
|
||||
redirect to("#{encodeURIComponent(redirect_path)}?redirected_from=#{encodeURIComponent(fullpath)}")
|
||||
else
|
||||
if @allow_editing
|
||||
path = fullpath[-1] == '/' ? "#{fullpath}#{wiki.index_page}" : fullpath # Append default index page if no page name is supplied
|
||||
redirect to("/gollum/create/#{clean_url(encodeURIComponent(path))}")
|
||||
else
|
||||
@message = "The requested page does not exist."
|
||||
status 404
|
||||
return mustache :error
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def show_file(file)
|
||||
return unless file
|
||||
if file.on_disk?
|
||||
send_file file.on_disk_path, :disposition => 'inline'
|
||||
else
|
||||
content_type file.mime_type
|
||||
file.raw_data
|
||||
end
|
||||
end
|
||||
|
||||
def load_template(path)
|
||||
template_page = wiki_page(::File.join(path, '_Template')).page || wiki_page('/_Template').page
|
||||
template_page ? Gollum::TemplateFilter.apply_filters(template_page.text_data) : nil
|
||||
end
|
||||
|
||||
def update_wiki_page(wiki, page, content, commit, name = nil, format = nil)
|
||||
return if !page ||
|
||||
((!content || page.raw_data == content) && page.format == format)
|
||||
name ||= page.name
|
||||
format = (format || page.format).to_sym
|
||||
content ||= page.raw_data
|
||||
wiki.update_page(page, name, format, content.to_s, commit)
|
||||
end
|
||||
|
||||
def wiki_page(path, version = nil)
|
||||
pathname = (Pathname.new('/') + path).cleanpath
|
||||
wiki = wiki_new
|
||||
OpenStruct.new(:wiki => wiki, :page => wiki.page(pathname.to_s, version = version),
|
||||
:name => pathname.basename.sub_ext('').to_s, :path => pathname.dirname.to_s, :ext => pathname.extname, :fullname => pathname.basename.to_s, :fullpath => pathname.to_s)
|
||||
end
|
||||
|
||||
def wiki_new
|
||||
Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
||||
end
|
||||
|
||||
# Options parameter to Gollum::Committer#initialize
|
||||
# :message - The String commit message.
|
||||
# :name - The String author full name.
|
||||
# :email - The String email address.
|
||||
# message is sourced from the incoming request parameters
|
||||
# author details are sourced from the session, to be populated by rack middleware ahead of us
|
||||
def commit_message
|
||||
msg = (params[:message].nil? or params[:message].empty?) ? "[no message]" : params[:message]
|
||||
commit_message = { :message => msg }
|
||||
author_parameters = session['gollum.author']
|
||||
commit_message.merge! author_parameters unless author_parameters.nil?
|
||||
commit_message
|
||||
end
|
||||
|
||||
def find_upload_dest(path)
|
||||
settings.wiki_options[:allow_uploads] ?
|
||||
(settings.wiki_options[:per_page_uploads] ?
|
||||
path : 'uploads'
|
||||
) : ''
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,29 @@
|
||||
require 'octicons'
|
||||
|
||||
module Precious
|
||||
module Assets
|
||||
MANIFEST = %w(app.js editor.js app.css criticmarkup.css fileview.css ie7.css print.css *.png *.jpg *.svg *.eot *.ttf)
|
||||
ASSET_URL = 'gollum/assets'
|
||||
|
||||
def self.sprockets(dir = File.dirname(File.expand_path(__FILE__)))
|
||||
env = Sprockets::Environment.new
|
||||
env.append_path ::File.join(dir, 'public/gollum/stylesheets/')
|
||||
env.append_path ::File.join(dir, 'public/gollum/javascript')
|
||||
env.append_path ::File.join(dir, 'public/gollum/images')
|
||||
env.append_path ::File.join(dir, 'public/gollum/fonts')
|
||||
|
||||
env.js_compressor = :uglify unless Precious::App.development?
|
||||
env.css_compressor = :scss
|
||||
|
||||
env.context_class.class_eval do
|
||||
def base_url
|
||||
self.class.class_variable_get(:@@base_url)
|
||||
end
|
||||
include ::Octicons
|
||||
include ::Precious::Views::RouteHelpers
|
||||
include ::Precious::Views::OcticonHelpers
|
||||
end
|
||||
env
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,71 +0,0 @@
|
||||
module Gollum
|
||||
class BlobEntry
|
||||
# Gets the String SHA for this blob.
|
||||
attr_reader :sha
|
||||
|
||||
# Gets the String full path for this blob.
|
||||
attr_reader :path
|
||||
|
||||
def initialize(sha, path)
|
||||
@sha = sha
|
||||
@path = path
|
||||
@dir = @name = @blob = nil
|
||||
end
|
||||
|
||||
# Gets the normalized directory path for this blob.
|
||||
def dir
|
||||
@dir ||= self.class.normalize_dir(::File.dirname(@path))
|
||||
end
|
||||
|
||||
# Gets the String file base name for this blob.
|
||||
def name
|
||||
@name ||= ::File.basename(@path)
|
||||
end
|
||||
|
||||
# Gets a Grit::Blob instance for this blob.
|
||||
#
|
||||
# repo - Grit::Repo instance for the Grit::Blob.
|
||||
#
|
||||
# Returns an unbaked Grit::Blob instance.
|
||||
def blob(repo)
|
||||
@blob ||= Grit::Blob.create(repo, :id => @sha, :name => @name)
|
||||
end
|
||||
|
||||
# Gets a Page instance for this blob.
|
||||
#
|
||||
# wiki - Gollum::Wiki instance for the Gollum::Page
|
||||
#
|
||||
# Returns a Gollum::Page instance.
|
||||
def page(wiki, commit)
|
||||
blob = self.blob(wiki.repo)
|
||||
page = wiki.page_class.new(wiki).populate(blob, self.dir)
|
||||
page.version = commit
|
||||
page
|
||||
end
|
||||
|
||||
def inspect
|
||||
%(#<Gollum::BlobEntry #{@sha} #{@path}>)
|
||||
end
|
||||
|
||||
# Normalizes a given directory name for searching through tree paths.
|
||||
# Ensures that a directory begins with a slash, or
|
||||
#
|
||||
# normalize_dir("") # => ""
|
||||
# normalize_dir(".") # => ""
|
||||
# normalize_dir("foo") # => "/foo"
|
||||
# normalize_dir("/foo/") # => "/foo"
|
||||
# normalize_dir("/") # => ""
|
||||
#
|
||||
# dir - String directory name.
|
||||
#
|
||||
# Returns a normalized String directory name, or nil if no directory
|
||||
# is given.
|
||||
def self.normalize_dir(dir)
|
||||
if dir
|
||||
dir = ::File.expand_path(dir, '/')
|
||||
dir = '' if dir == '/'
|
||||
end
|
||||
dir
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,65 +0,0 @@
|
||||
module Gollum
|
||||
class File
|
||||
Wiki.file_class = self
|
||||
|
||||
# Public: Initialize a file.
|
||||
#
|
||||
# wiki - The Gollum::Wiki in question.
|
||||
#
|
||||
# Returns a newly initialized Gollum::File.
|
||||
def initialize(wiki)
|
||||
@wiki = wiki
|
||||
@blob = nil
|
||||
@path = nil
|
||||
end
|
||||
|
||||
# Public: The on-disk filename of the file.
|
||||
#
|
||||
# Returns the String name.
|
||||
def name
|
||||
@blob && @blob.name
|
||||
end
|
||||
|
||||
# Public: The raw contents of the page.
|
||||
#
|
||||
# Returns the String data.
|
||||
def raw_data
|
||||
@blob && @blob.data
|
||||
end
|
||||
|
||||
# Public: The Grit::Commit version of the file.
|
||||
attr_reader :version
|
||||
|
||||
# Public: The String path of the file.
|
||||
attr_reader :path
|
||||
|
||||
# Public: The String mime type of the file.
|
||||
def mime_type
|
||||
@blob.mime_type
|
||||
end
|
||||
|
||||
#########################################################################
|
||||
#
|
||||
# Internal Methods
|
||||
#
|
||||
#########################################################################
|
||||
|
||||
# Find a file in the given Gollum repo.
|
||||
#
|
||||
# name - The full String path.
|
||||
# version - The String version ID to find.
|
||||
#
|
||||
# Returns a Gollum::File or nil if the file could not be found.
|
||||
def find(name, version)
|
||||
checked = name.downcase
|
||||
map = @wiki.tree_map_for(version)
|
||||
sha = @wiki.ref_map[version] || version
|
||||
if entry = map.detect { |entry| entry.path.downcase == checked }
|
||||
@path = name
|
||||
@blob = Grit::Blob.create(@wiki.repo, :id => entry.sha, :name => entry.name)
|
||||
@version = Grit::Commit.create(@wiki.repo, :id => sha)
|
||||
self
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,164 +0,0 @@
|
||||
require 'cgi'
|
||||
require 'sinatra'
|
||||
require 'gollum'
|
||||
require 'mustache/sinatra'
|
||||
|
||||
require 'gollum/frontend/views/layout'
|
||||
require 'gollum/frontend/views/editable'
|
||||
|
||||
module Precious
|
||||
class App < Sinatra::Base
|
||||
register Mustache::Sinatra
|
||||
|
||||
dir = File.dirname(File.expand_path(__FILE__))
|
||||
|
||||
# We want to serve public assets for now
|
||||
|
||||
set :public, "#{dir}/public"
|
||||
set :static, true
|
||||
|
||||
set :mustache, {
|
||||
# Tell mustache where the Views constant lives
|
||||
:namespace => Precious,
|
||||
|
||||
# Mustache templates live here
|
||||
:templates => "#{dir}/templates",
|
||||
|
||||
# Tell mustache where the views are
|
||||
:views => "#{dir}/views"
|
||||
}
|
||||
|
||||
# Sinatra error handling
|
||||
configure :development, :staging do
|
||||
set :raise_errors, false
|
||||
set :show_exceptions, true
|
||||
set :dump_errors, true
|
||||
set :clean_trace, false
|
||||
end
|
||||
|
||||
get '/' do
|
||||
show_page_or_file('Home')
|
||||
end
|
||||
|
||||
get '/edit/*' do
|
||||
@name = params[:splat].first
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
if page = wiki.page(@name)
|
||||
@page = page
|
||||
@content = page.raw_data
|
||||
mustache :edit
|
||||
else
|
||||
mustache :create
|
||||
end
|
||||
end
|
||||
|
||||
post '/edit/*' do
|
||||
name = params[:splat].first
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
page = wiki.page(name)
|
||||
format = params[:format].intern
|
||||
name = params[:rename] if params[:rename]
|
||||
|
||||
wiki.update_page(page, name, format, params[:content], commit_message)
|
||||
|
||||
redirect "/#{CGI.escape(Gollum::Page.cname(name))}"
|
||||
end
|
||||
|
||||
post '/create/*' do
|
||||
name = params[:page]
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
|
||||
format = params[:format].intern
|
||||
|
||||
begin
|
||||
wiki.write_page(name, format, params[:content], commit_message)
|
||||
redirect "/#{CGI.escape(name)}"
|
||||
rescue Gollum::DuplicatePageError => e
|
||||
@message = "Duplicate page: #{e.message}"
|
||||
mustache :error
|
||||
end
|
||||
end
|
||||
|
||||
post '/preview' do
|
||||
format = params['wiki_format']
|
||||
data = params['text']
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
wiki.preview_page("Preview", data, format).formatted_data
|
||||
end
|
||||
|
||||
get '/history/:name' do
|
||||
@name = params[:name]
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
@page = wiki.page(@name)
|
||||
@page_num = [params[:page].to_i, 1].max
|
||||
@versions = @page.versions :page => @page_num
|
||||
mustache :history
|
||||
end
|
||||
|
||||
post '/compare/:name' do
|
||||
@versions = params[:versions] || []
|
||||
if @versions.size < 2
|
||||
redirect "/history/#{CGI.escape(params[:name])}"
|
||||
else
|
||||
redirect "/compare/%s/%s...%s" % [
|
||||
CGI.escape(params[:name]),
|
||||
@versions.last,
|
||||
@versions.first]
|
||||
end
|
||||
end
|
||||
|
||||
get '/compare/:name/:version_list' do
|
||||
@name = params[:name]
|
||||
@versions = params[:version_list].split(/\.{2,3}/)
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
@page = wiki.page(@name)
|
||||
diffs = wiki.repo.diff(@versions.first, @versions.last, @page.path)
|
||||
@diff = diffs.first
|
||||
mustache :compare
|
||||
end
|
||||
|
||||
get %r{/(.+?)/([0-9a-f]{40})} do
|
||||
name = params[:captures][0]
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
if page = wiki.page(name, params[:captures][1])
|
||||
@page = page
|
||||
@name = name
|
||||
@content = page.formatted_data
|
||||
mustache :page
|
||||
else
|
||||
halt 404
|
||||
end
|
||||
end
|
||||
|
||||
get '/search' do
|
||||
@query = params[:q]
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
@results = wiki.search @query
|
||||
mustache :search
|
||||
end
|
||||
|
||||
get '/*' do
|
||||
show_page_or_file(params[:splat].first)
|
||||
end
|
||||
|
||||
def show_page_or_file(name)
|
||||
wiki = Gollum::Wiki.new(settings.gollum_path)
|
||||
if page = wiki.page(name)
|
||||
@page = page
|
||||
@name = name
|
||||
@content = page.formatted_data
|
||||
mustache :page
|
||||
elsif file = wiki.file(name)
|
||||
content_type file.mime_type
|
||||
file.raw_data
|
||||
else
|
||||
@name = name
|
||||
mustache :create
|
||||
end
|
||||
end
|
||||
|
||||
def commit_message
|
||||
{ :message => params[:message] }
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,194 +0,0 @@
|
||||
#editbar {
|
||||
border-left: 1px solid #888;
|
||||
border-top: 1px solid #888;
|
||||
border-right: 1px solid #888;
|
||||
overflow: hidden;
|
||||
font-family: sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#editbar .inner {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#editbar .current {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
#editbar .menu {
|
||||
overflow: hidden;
|
||||
background: white;
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#EBF1FF));
|
||||
background: -moz-linear-gradient(top, #fff, #EBF1FF);
|
||||
}
|
||||
|
||||
#editbar .group {
|
||||
float: left;
|
||||
height: 26px;
|
||||
margin: 3px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
#editbar .group-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#editbar .group-right .tab.format {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
#editbar .group-separator {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
#editbar .button {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
background: #e7ecfb url(/images/editbar-buttons.png);
|
||||
border: 1px solid #ddd;
|
||||
text-indent: -100px;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
padding: 1px;
|
||||
display: block;
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
-khtml-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
#editbar .button:hover {
|
||||
background-color: #d9dde7;
|
||||
border-color: #aaa;
|
||||
}
|
||||
|
||||
#editbar .bold {
|
||||
background-position: -97px 4px;
|
||||
}
|
||||
|
||||
#editbar .italic {
|
||||
background-position: -147px 4px;
|
||||
}
|
||||
|
||||
#editbar .link {
|
||||
background-position: -197px 4px;
|
||||
}
|
||||
|
||||
#editbar .image {
|
||||
background-position: -247px 4px;
|
||||
}
|
||||
|
||||
#editbar .ul {
|
||||
background-position: 3px 4px;
|
||||
}
|
||||
|
||||
#editbar .ol {
|
||||
background-position: -47px 4px;
|
||||
}
|
||||
|
||||
#editbar .tab {
|
||||
float: left;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#editbar .tab a {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
height: 26px;
|
||||
padding-left: 18px;
|
||||
padding-right: 12px;
|
||||
line-height: 26px;
|
||||
text-decoration: none;
|
||||
background-image: url(/images/twiddle-right.png);
|
||||
background-position: 0 50%;
|
||||
background-repeat: no-repeat;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
#editbar .tab a.open {
|
||||
background-image: url(/images/twiddle-down.png);
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#editbar .tab a.open:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#editbar .tab a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#editbar .sections {
|
||||
clear: both;
|
||||
float: left;
|
||||
width: 100%;
|
||||
overflow: visible;
|
||||
border-top: 1px solid #888;
|
||||
height: 185px;
|
||||
background-color: #E0EEF7;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#editbar .sections .toc {
|
||||
float: left;
|
||||
width: 20%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#editbar .sections .toc div {
|
||||
cursor: pointer;
|
||||
padding: 4px 4px 4px 6px;
|
||||
background-color: #E0EEF7;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
#editbar .sections .toc div.current {
|
||||
cursor: default;
|
||||
background-color: white;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#editbar .sections .pages {
|
||||
overflow: auto;
|
||||
background-color: white;
|
||||
float: right;
|
||||
width: 80%;
|
||||
height: 185px;
|
||||
}
|
||||
|
||||
#editbar .sections .page {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#editbar .sections .pages th {
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
padding: 5px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#editbar .sections .pages td {
|
||||
color: black;
|
||||
padding: 5px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
#editbar .sections .pages span.invisible {
|
||||
color: #bbb;
|
||||
padding-left: 1px;
|
||||
}
|
||||
|
||||
#editbar .sections .pages .shortcodes th {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#editbar .sections .pages .shortcodes ul {
|
||||
list-style-type: none;
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
a.absent {
|
||||
color: #a00;
|
||||
}
|
||||
|
||||
/* Images */
|
||||
|
||||
.frame {
|
||||
margin: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.frame img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.frame > span {
|
||||
display: block;
|
||||
border: 1px solid #aaa;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.frame span span {
|
||||
display: block;
|
||||
font-size: 10pt;
|
||||
margin: 0;
|
||||
padding: 4px 0 2px 0;
|
||||
text-align: center;
|
||||
line-height: 10pt;
|
||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
.float-left {
|
||||
float: left;
|
||||
padding: .5em 1em .25em 0;
|
||||
}
|
||||
|
||||
.float-right {
|
||||
float: right;
|
||||
padding: .5em 0 .25em 1em;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
display: block;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
display: block;
|
||||
text-align: right;
|
||||
}
|
||||
@@ -1,726 +0,0 @@
|
||||
/****************************************************************************/
|
||||
/* Base
|
||||
/****************************************************************************/
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height: 100%;
|
||||
color: black;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: white;
|
||||
font: 13.34px helvetica, arial, freesans, clean, sans-serif;
|
||||
*font-size: small;
|
||||
}
|
||||
|
||||
table {
|
||||
font-size: inherit;
|
||||
font: 100%;
|
||||
}
|
||||
|
||||
select, input[type=text], input[type=password], input[type=image], textarea {
|
||||
font: 99% helvetica, arial, freesans, sans-serif;
|
||||
}
|
||||
select, option {
|
||||
padding: 0 .25em;
|
||||
}
|
||||
optgroup {
|
||||
margin-top: .5em;
|
||||
}
|
||||
|
||||
input.text {
|
||||
padding: 1px 0;
|
||||
}
|
||||
pre, code {
|
||||
font: 12px Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
|
||||
}
|
||||
|
||||
body * {
|
||||
line-height: 1.4em;
|
||||
}
|
||||
|
||||
p{ margin:1em 0; }
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
abbr {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
height: 0;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
}
|
||||
* html .clearfix {height: 1%;}
|
||||
.clearfix {display:inline-block;}
|
||||
.clearfix {display: block;}
|
||||
|
||||
/* always show vertical scroll bar to prevent page jitter */
|
||||
html {overflow-y: scroll;}
|
||||
|
||||
.site {
|
||||
margin: 2em auto 0 auto;
|
||||
width: 920px;
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* Guides
|
||||
/****************************************************************************/
|
||||
|
||||
#guides {
|
||||
|
||||
}
|
||||
|
||||
/* index */
|
||||
|
||||
#guides .index {
|
||||
|
||||
}
|
||||
|
||||
#guides h1 {
|
||||
margin-bottom: .5em;
|
||||
}
|
||||
|
||||
#guides .index ul {
|
||||
list-style-type: none;
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
#guides .index ul li {
|
||||
padding-left: 1.5em;
|
||||
background: white url(/images/modules/guides/book.png) no-repeat;
|
||||
}
|
||||
|
||||
#guides .index .new {
|
||||
margin-top: 1em;
|
||||
border-top: 1px solid #ccc;
|
||||
padding-top: .5em;
|
||||
}
|
||||
|
||||
#guides .index .new ul li {
|
||||
background: white url(/images/modules/guides/book_add.png) no-repeat;
|
||||
}
|
||||
|
||||
#guides .index .new ul li a {
|
||||
color: #c00;
|
||||
}
|
||||
|
||||
#guides .write .delete_page {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* guide */
|
||||
|
||||
#guides .guide {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* main */
|
||||
|
||||
#guides .guide .main {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* sidebar */
|
||||
|
||||
#guides .guide .sidebar {
|
||||
float: right;
|
||||
width: 15em;
|
||||
border-left: 4px solid #e6e6e6;
|
||||
margin: 2.1em 0 0 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
#guides .guide .sidebar h3 {
|
||||
margin: 0 0 .5em 0;
|
||||
}
|
||||
|
||||
#guides .guide .sidebar ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
color: #888;
|
||||
|
||||
}
|
||||
|
||||
#guides .guide .sidebar ul li {
|
||||
padding-left: 12px;
|
||||
background: white url(/images/modules/guides/sidebar/bullet_blue.png) -4px 0 no-repeat;
|
||||
margin: .2em 0;
|
||||
}
|
||||
|
||||
/* admin */
|
||||
|
||||
#guides .admin {
|
||||
clear: both;
|
||||
margin-top: 3em;
|
||||
border-top: 4px solid #e6e6e6;
|
||||
padding-top: .3em;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* write */
|
||||
|
||||
#guides .write {
|
||||
|
||||
}
|
||||
|
||||
#guides .write label {
|
||||
font-size: 110%;
|
||||
color: #666;
|
||||
display: block;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
#guides .write input.text {
|
||||
padding: 5px;
|
||||
border: 1px solid #888;
|
||||
width: 40em;
|
||||
}
|
||||
|
||||
#guides .write textarea {
|
||||
width: 100%;
|
||||
height: 25em;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#guides .write label span.title {
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#guides .write .actions input {
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
#guides .write #preview_bucket {
|
||||
border: 1px solid #888;
|
||||
background-color: white;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* Wiki
|
||||
/****************************************************************************/
|
||||
|
||||
.wikistyle h1, .wikistyle h2, .wikistyle h3, .wikistyle h4, .wikistyle h5, .wikistyle h6 {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.wikistyle h1 {
|
||||
font-size: 170% !important;
|
||||
border-top: 4px solid #aaa !important;
|
||||
padding-top: .5em !important;
|
||||
margin-top: 1.5em !important;
|
||||
}
|
||||
|
||||
.wikistyle h2 {
|
||||
font-size: 150% !important;
|
||||
margin-top: 1.5em !important;
|
||||
border-top: 4px solid #e0e0e0 !important;
|
||||
padding-top: .5em !important;
|
||||
}
|
||||
|
||||
.wikistyle h3 {
|
||||
margin-top: 1em !important;
|
||||
}
|
||||
|
||||
.wikistyle p {
|
||||
margin: 1em 0 !important;
|
||||
line-height: 1.5em !important;
|
||||
}
|
||||
|
||||
.wikistyle ul {
|
||||
margin: 1em 0 1em 2em !important;
|
||||
}
|
||||
|
||||
.wikistyle ol {
|
||||
margin: 1em 0 1em 2em !important;
|
||||
}
|
||||
|
||||
.wikistyle ul ul,
|
||||
.wikistyle ul ol,
|
||||
.wikistyle ol ol,
|
||||
.wikistyle ol ul {
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.wikistyle blockquote {
|
||||
margin: 1em 0 !important;
|
||||
border-left: 5px solid #ddd !important;
|
||||
padding-left: .6em !important;
|
||||
color: #555 !important;
|
||||
}
|
||||
|
||||
.wikistyle dt {
|
||||
font-weight: bold !important;
|
||||
margin-left: 1em !important;
|
||||
}
|
||||
|
||||
.wikistyle dd {
|
||||
margin-left: 2em !important;
|
||||
margin-bottom: 1em !important;
|
||||
}
|
||||
|
||||
.wikistyle table {
|
||||
margin: 1em 0 !important;
|
||||
}
|
||||
|
||||
.wikistyle table th {
|
||||
border-bottom: 1px solid #bbb !important;
|
||||
padding: .2em 1em !important;
|
||||
}
|
||||
|
||||
.wikistyle table td {
|
||||
border-bottom: 1px solid #ddd !important;
|
||||
padding: .2em 1em !important;
|
||||
}
|
||||
|
||||
.wikistyle pre {
|
||||
margin: 1em 0 !important;
|
||||
font-size: 90% !important;
|
||||
background-color: #f8f8ff !important;
|
||||
border: 1px solid #dedede !important;
|
||||
padding: .5em !important;
|
||||
line-height: 1.5em !important;
|
||||
color: #444 !important;
|
||||
overflow: auto !important;
|
||||
}
|
||||
|
||||
.wikistyle pre code {
|
||||
padding: 0 !important;
|
||||
font-size: 100% !important;
|
||||
background-color: #f8f8ff !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
.wikistyle code {
|
||||
font-size: 90% !important;
|
||||
background-color: #f8f8ff !important;
|
||||
color: #444 !important;
|
||||
padding: 0 .2em !important;
|
||||
border: 1px solid #dedede !important;
|
||||
}
|
||||
|
||||
/* console */
|
||||
|
||||
.wikistyle pre.console {
|
||||
margin: 1em 0 !important;
|
||||
font-size: 90% !important;
|
||||
background-color: black !important;
|
||||
padding: .5em !important;
|
||||
line-height: 1.5em !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.wikistyle pre.console code {
|
||||
padding: 0 !important;
|
||||
font-size: 100% !important;
|
||||
background-color: black !important;
|
||||
border: none !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.wikistyle pre.console span {
|
||||
color: #888 !important;
|
||||
}
|
||||
|
||||
.wikistyle pre.console span.command {
|
||||
color: yellow !important;
|
||||
}
|
||||
|
||||
/* Wiki form */
|
||||
|
||||
.wiki-form .inner {
|
||||
margin: 0;
|
||||
padding: 0 0 0 5px;
|
||||
background: #fff;
|
||||
border: solid 1px #888;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.wiki-form input[type=text] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
label.wiki-label {
|
||||
padding: 1em 5px;
|
||||
}
|
||||
|
||||
/* Special markup considerations */
|
||||
|
||||
.wikistyle.gollum.footer {
|
||||
border-top: 4px solid #f0f0f0;
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
.wikistyle.gollum > h1:first-child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* asciidoc */
|
||||
|
||||
.wikistyle.gollum.asciidoc > div#header > h1:first-child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wikistyle.gollum.asciidoc .ulist p,
|
||||
.wikistyle.gollum.asciidoc .olist p {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.wikistyle.gollum.asciidoc .loweralpha {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
.wikistyle.gollum.asciidoc .lowerroman {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
|
||||
.wikistyle.gollum.asciidoc .upperalpha {
|
||||
list-style-type: upper-alpha;
|
||||
}
|
||||
|
||||
.wikistyle.gollum.asciidoc .upperroman {
|
||||
list-style-type: upper-roman;
|
||||
}
|
||||
|
||||
/* org */
|
||||
|
||||
.wikistyle.gollum.org > p.title:first-child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wikistyle.gollum.org p:first-child + h1 {
|
||||
border-top: none !important;
|
||||
}
|
||||
|
||||
/* pod */
|
||||
|
||||
.wikistyle.gollum.pod > a.dummyTopAnchor:first-child + h1 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wikistyle.gollum.pod h1 a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* rest */
|
||||
|
||||
.wikistyle.gollum.rest > div.document > div.section > h1:first-child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* Comment Form
|
||||
/****************************************************************************/
|
||||
|
||||
.comment-form-error{
|
||||
margin:-15px 0 15px 0;
|
||||
font-weight:bold;
|
||||
color:#aa0000;
|
||||
}
|
||||
|
||||
.comment-form{
|
||||
margin:-10px 0 10px 0;
|
||||
padding:5px;
|
||||
background:#eee;
|
||||
-webkit-border-radius:5px;
|
||||
-moz-border-radius:5px;
|
||||
}
|
||||
|
||||
.comment-form textarea{
|
||||
margin:0;
|
||||
padding: 5px 0;
|
||||
width:100%;
|
||||
height:100px;
|
||||
}
|
||||
|
||||
.comment-form p.help{
|
||||
margin:3px 0 0 0;
|
||||
float:right;
|
||||
font-size:11px;
|
||||
color:#666;
|
||||
}
|
||||
|
||||
.comment-form ul.tabs{
|
||||
margin:0 0 5px 0;
|
||||
}
|
||||
|
||||
.comment-form ul.tabs li{
|
||||
list-style-type:none;
|
||||
margin:0;
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
.comment-form ul.tabs a{
|
||||
display:inline-block;
|
||||
padding:2px 8px;
|
||||
font-size:11px;
|
||||
font-weight:bold;
|
||||
text-decoration:none;
|
||||
color:#666;
|
||||
border:1px solid transparent;
|
||||
-webkit-border-radius:10px;
|
||||
-moz-border-radius:10px;
|
||||
}
|
||||
|
||||
.comment-form ul.tabs a.selected{
|
||||
color:#333;
|
||||
background:#fff;
|
||||
border-color:#bbb;
|
||||
border-right-color: #ddd;
|
||||
border-bottom-color: #ddd;
|
||||
}
|
||||
|
||||
.comment-form .comment{
|
||||
margin:5px 0 0 0;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* History
|
||||
/****************************************************************************/
|
||||
|
||||
table.commits {
|
||||
width: 100%;
|
||||
border-left: 1px solid #ccc;
|
||||
border-right: 1px solid #ccc;
|
||||
border-top: 1px solid #ccc;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
table.commits tr td {
|
||||
background-color: #eaf2f5;
|
||||
}
|
||||
|
||||
table.commits tr.selected td {
|
||||
background-color: #FEFFE6;
|
||||
}
|
||||
|
||||
table.commits th {
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #ccc;
|
||||
padding: .3em .6em;
|
||||
background-color: #eee;
|
||||
font-size: 95%;
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
table.commits td {
|
||||
border-bottom: 1px solid #ccc;
|
||||
padding: .3em .6em;
|
||||
}
|
||||
|
||||
table.commits td.sha,
|
||||
table.commits td.message {
|
||||
font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
table.commits td.checkbox {
|
||||
width: 3%;
|
||||
}
|
||||
|
||||
table.commits td.sha {
|
||||
width: 6%;
|
||||
}
|
||||
|
||||
table.commits td.human {
|
||||
font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
|
||||
font-size: 80%;
|
||||
width: 4%;
|
||||
color: #888;
|
||||
}
|
||||
|
||||
table.commits td.author {
|
||||
width: 15%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.commits td.author img {
|
||||
vertical-align: middle;
|
||||
border: 1px solid #ccc;
|
||||
padding: 1px;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
table.commits td.message a {
|
||||
color: black;
|
||||
}
|
||||
|
||||
table.commits td.message a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
table.commits td.date {
|
||||
width: 12%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/* Files
|
||||
/****************************************************************************/
|
||||
|
||||
#files {
|
||||
|
||||
}
|
||||
|
||||
#files .file {
|
||||
border: 1px solid #ccc;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#files .file .syntax{
|
||||
border:none;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
#files .file .meta {
|
||||
padding:0 5px;
|
||||
height:33px;
|
||||
line-height:33px;
|
||||
font-size:12px;
|
||||
color:#333;
|
||||
background:url(/images/modules/commit/file_head.gif) 0 0 repeat-x #eee;
|
||||
text-shadow:1px 1px 0 rgba(255, 255, 255, 0.5);
|
||||
border-bottom: 1px solid #ccc;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#files .file .meta .info {
|
||||
float: left;
|
||||
height:33px;
|
||||
line-height:33px;
|
||||
font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
|
||||
}
|
||||
|
||||
#files .file .meta .info span{
|
||||
padding-left:9px;
|
||||
margin-left:5px;
|
||||
background:url(/images/modules/commit/action_separator.png) 0 50% no-repeat;
|
||||
}
|
||||
|
||||
#files .file .meta .info span:first-child, #files .file .meta .info .icon + span{
|
||||
background:transparent;
|
||||
margin-left:0;
|
||||
padding-left:0;
|
||||
}
|
||||
|
||||
#files .file .meta .info span.icon{
|
||||
float:left;
|
||||
margin:5px 5px 0 0;
|
||||
padding:3px;
|
||||
background:#f7f7f7;
|
||||
border:1px solid #ccc;
|
||||
border-right-color:#e5e5e5;
|
||||
border-bottom-color:#e5e5e5;
|
||||
-webkit-border-radius:3px;
|
||||
-moz-border-radius:3px;
|
||||
border-radius:3px;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
#files .file .meta .actions {
|
||||
float: right;
|
||||
height:33px;
|
||||
line-height:33px;
|
||||
}
|
||||
|
||||
#files .file .meta .actions li{
|
||||
list-style-type:none;
|
||||
float:left;
|
||||
margin:0 0 0 7px;
|
||||
height:33px;
|
||||
line-height:33px;
|
||||
padding-left:9px;
|
||||
font-size:11px;
|
||||
background:url(/images/modules/commit/action_separator.png) 0 50% no-repeat;
|
||||
}
|
||||
|
||||
#files .file .meta .actions li:first-child{
|
||||
background:transparent;
|
||||
margin-left:0;
|
||||
padding-left:0;
|
||||
}
|
||||
|
||||
#files .file .meta .actions li a{
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
#files .file .meta .actions li code{
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
#files .file .meta .actions li label input{
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
|
||||
#files .file .data {
|
||||
font-size: 80%;
|
||||
overflow: auto;
|
||||
background-color: #f8f8ff;
|
||||
}
|
||||
|
||||
#files .file .data.empty {
|
||||
font-size: 90%;
|
||||
padding:5px 10px;
|
||||
color:#777;
|
||||
}
|
||||
|
||||
#files .image {
|
||||
padding: 1.2em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#files .image img {
|
||||
max-width: 60em;
|
||||
}
|
||||
|
||||
#files .file .data pre, #files .file .line-data, #files .file .line-number {
|
||||
font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace;
|
||||
font-size: 115%;
|
||||
}
|
||||
|
||||
#files .file .data .highlight {
|
||||
padding: 1em 0;
|
||||
}
|
||||
|
||||
#files .file .data .highlight div {
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
#files .file .data .line_numbers {
|
||||
background-color: #ececec;
|
||||
color: #aaa;
|
||||
padding: 1em .5em;
|
||||
border-right: 1px solid #ddd;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#files .file .data td.line_numbers{
|
||||
padding:0 0.5em;
|
||||
font-family: 'Bitstream Vera Sans Mono', 'Courier', monospace;
|
||||
font-size: 115%;
|
||||
-moz-user-select:none;
|
||||
-khtml-user-select:none;
|
||||
user-select:none;
|
||||
}
|
||||
|
||||
#files .file .data .line_numbers span,
|
||||
#files .file .data .line_numbers a {
|
||||
color: #aaa;
|
||||
cursor: pointer;
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
.highlight { background: #ffffff; }
|
||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
.highlight .k { font-weight: bold } /* Keyword */
|
||||
.highlight .o { font-weight: bold } /* Operator */
|
||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||
.highlight .gc { color: #999; background-color: #EAF2F5 }
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #009999 } /* Literal.Number */
|
||||
.highlight .s { color: #d14 } /* Literal.String */
|
||||
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #008080 } /* Name.Constant */
|
||||
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 181 B |
Binary file not shown.
|
Before Width: | Height: | Size: 184 B |
Binary file not shown.
|
Before Width: | Height: | Size: 290 B |
File diff suppressed because it is too large
Load Diff
@@ -1,480 +0,0 @@
|
||||
OVERVIEW:
|
||||
|
||||
MathJax (TM) is an open source, Ajax-based math display solution designed
|
||||
with a goal of consolidating advances in many web technologies in a
|
||||
single definitive math-on-the-web platform supporting all major
|
||||
browsers.
|
||||
|
||||
Some of the main features of MathJax include:
|
||||
|
||||
o High-quality display of LaTeX and MathML math notation in HTML pages
|
||||
|
||||
o Supported in most browsers with no plug-ins, extra fonts, or special
|
||||
setup for the reader
|
||||
|
||||
o Easy for authors, flexible for publishers, extensible for developers
|
||||
|
||||
o Supports math accessibility, cut and paste interoperability and other
|
||||
advanced functionality
|
||||
|
||||
o Powerful API for integration with other web applications
|
||||
|
||||
See http://www.mathjax.org/ for additional details.
|
||||
|
||||
|
||||
INSTALLATION:
|
||||
|
||||
MathJax can be used on a web server to support mathematics in your
|
||||
public web pages, or it can be used locally from your hard disk for
|
||||
your private pages. To use MathJax in either way, you will need to
|
||||
obtain a copy of MathJax (see below) and its font package. These two
|
||||
are separate pieces because the fonts are not likely to change often,
|
||||
while the main code will be updated fairly regularly.
|
||||
|
||||
Obtaining MathJax from SourceForge via SVN:
|
||||
|
||||
The easiest way to obtain MathJax and keep it up-to-date is to use the
|
||||
subversion program (svn) to check it out from the MathJax project at
|
||||
SourceForge.net. The page
|
||||
|
||||
http://sourceforge.net/projects/mathjax/develop
|
||||
|
||||
lists the command you need to use to obtain a copy of MathJax via svn.
|
||||
Once you have checked out a version of MathJax, you will find that it
|
||||
includes a file called "fonts.zip" in the top-level directory. You
|
||||
will need to unpack that file in order to complete the installation of
|
||||
MathJax. It will create a fonts directory that contains the web fonts
|
||||
and images fonts used by MathJax to support users who do not have math
|
||||
fonts installed on their computers. Once you have checked out
|
||||
MathJax, you will need to move the MathJax directory to your web
|
||||
server in a location that is convenient for your use.
|
||||
|
||||
Obtaining MathJax from SourceForge as an archive file:
|
||||
|
||||
You can obtain MathJax from the MathJax project at SourceForge via
|
||||
the link
|
||||
|
||||
http://sourceforge.net/projects/mathjax/files/
|
||||
|
||||
where you will need to download a copy of the MathJax ZIP file (for
|
||||
the current version) and the MathJax-webfonts ZIP file. Unpack the
|
||||
MathJax ZIP file first, and then unpack the MathJax-webfonts ZIP file
|
||||
into that. That should produce a fonts directory in the MathJax
|
||||
folder (and MathJax/fonts should contain an HTML-CSS directory). The
|
||||
fonts directory contains web fonts and image fonts used by MathJax to
|
||||
support users who do not have math fonts installed on their
|
||||
computers. Once you have unpacked both archives, you can move the
|
||||
MathJax directory to your web server in a location that is convenient
|
||||
for your use.
|
||||
|
||||
|
||||
TESTING MATHJAX:
|
||||
|
||||
Once you have MathJax installed, you can use the files in the
|
||||
MathJax/test directory to test that your installation is working
|
||||
properly. You can also use it to test if your version of MathJax
|
||||
needs updating. If you have checked out MathJax using subversion
|
||||
(svn), you can simply use "svn status" to see if your installation
|
||||
needs to be updated, and "svn update" to get any updates.
|
||||
|
||||
|
||||
USING MATHJAX IN A WEB PAGE:
|
||||
|
||||
To use MathJax in a web page, you need to load MathJax.js near the top of
|
||||
the document (preferably in the document HEAD). A SCRIPT tag like
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js"></script>
|
||||
|
||||
will do it if you have MathJax at the top level of your web server.
|
||||
When called in this form, MathJax can be configured through the file
|
||||
MathJax/config/MathJax.js, which contains the parameters that control
|
||||
MathJax. There are comments in this file that explain what each of
|
||||
the parameters does, so look there for details.
|
||||
|
||||
Alternatively, you can configure MathJax in-line within your web page
|
||||
(avoiding an extra file transfer). To do that, place the
|
||||
configuration information within the SCRIPT tag itself, as in the
|
||||
following example:
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js">
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["tex2jax.js","TeX/noErrors.js"],
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
tex2jax: {inlineMath: [['$','$'],["\\(","\\)"]]},
|
||||
"HTML-CSS": {availableFonts:["TeX"]}
|
||||
});
|
||||
</script>
|
||||
|
||||
which loads the tex2jax preprocessor and an extension that causes TeX
|
||||
errors to show the original TeX code rather than an error message,
|
||||
specifies the input and output jax (input format is TeX and output
|
||||
format is HTML/CSS), configures the tex2jax preprocessor to allow
|
||||
dollar signs to delimit inline-math as well as \(...\), and forces the
|
||||
HTML/CSS output to use the MathJax TeX fonts (in particular, the STIX
|
||||
fonts won't be used.)
|
||||
|
||||
If you configure MathJax in this fashion, the MathJax/config/MathJax.js
|
||||
file is not loaded, and your in-line configuration is used instead.
|
||||
Note that you can include any of the parameters from the
|
||||
config/MathJax.js file (and in fact any arbitrary JavaScript as well).
|
||||
|
||||
With the default configuration, MathJax runs the tex2jax preprocessor
|
||||
to look for TeX-style mathematics delimiters as a means of identifying
|
||||
the mathematics on the page. This uses \(...\) to mark in-line
|
||||
mathematics and \[...\] or $$...$$ for displayed mathematics. LaTeX
|
||||
environments can also mark mathematics, as in
|
||||
\begin{equation}...\end{equation}. Once the preprocessor runs,
|
||||
MathJax will typeset the mathematics on the page.
|
||||
|
||||
Note that there can not be HTML tags within the math delimiters (other
|
||||
than <BR>) as TeX-formatted math does not include HTML tags. Also,
|
||||
since the mathematics is initially given as text on the page, you need
|
||||
to be careful that your mathematics doesn't look like HTML tags to the
|
||||
browser (which parses the page before MathJax gets to see it). In
|
||||
particular, that means that you have to be careful about things like
|
||||
less-than and greater-than signs (<,>), and ampersands (&), which have
|
||||
special meaning to the browsers. For example,
|
||||
|
||||
... when $x<y$ we have ...
|
||||
|
||||
will cause a problem, because the brower will think "<y" is the
|
||||
beginning of a tag named "y" (even though there is no such tag in
|
||||
HTML). Usually, it is sufficient to simply put spaces around these
|
||||
symbols to cause the browser to avoid them, so
|
||||
|
||||
... when $x < y$ we have ...
|
||||
|
||||
should work. Alternatively, you can use the HTML entities <, >
|
||||
and & to encode these characters so that the browser will not
|
||||
interpret them, but MathJax will. E.g.,
|
||||
|
||||
... when $x < y$ we have ...
|
||||
|
||||
Finally, there are \lt and \gt macros defined to make it easier to
|
||||
enter < and > using TeX-like syntax:
|
||||
|
||||
... when $x \lt y$ we have ...
|
||||
|
||||
Keep in mind that the browser interprets your text before MathJax
|
||||
does.
|
||||
|
||||
|
||||
MATHJAX WITH NO PREPROCESSOR:
|
||||
|
||||
The usual way to use MathJax is with the tex2jax preprocessor, but if
|
||||
you are generating web pages via some other preprocessor of your own,
|
||||
you may wish to bypass the tex2math preprocessing and mark the
|
||||
mathematics in your page directly. This avoids an extra file
|
||||
transfer, the time involed in running the tex2jax preprocessor, and
|
||||
the issues involving less-than, greater-than, and ampersand discussed
|
||||
in the section above.
|
||||
|
||||
When MathJax processes a page, it looks for mathematics stored in
|
||||
special SCRIPT tags. These are
|
||||
|
||||
<script type="math/tex">...</script>
|
||||
|
||||
for in-line math, and
|
||||
|
||||
<script type="math/tex; mode=display">...</script>
|
||||
|
||||
for displayed math, where the contents of the SCRIPT tags are TeX or
|
||||
LaTeX mathematics. Since SCRIPT tags can include less-than,
|
||||
greater-than, and ampersand characters, this neatly avoids the problem
|
||||
that these cause when you use the tex2jax preprocessor.
|
||||
|
||||
Unfortunately, this method introduces a problem of its own, due to a
|
||||
bug in Internet Explorer. The problem is that IE incorrectly removes
|
||||
blank spaces from the page in order to avoid what it considers to be
|
||||
multiple spaces in a row. In particular, if there is a space both
|
||||
before and after a tag that IE thinks does not insert content into the
|
||||
page, it removes one of the two blanks. Because SCRIPT tags don't
|
||||
get displayed, IE will remove one of the spaces, so
|
||||
|
||||
... when <script type="math/tex">x < y</script> we have ...
|
||||
|
||||
will become "...whenx < y we have..." in the output, with no space
|
||||
between the "when" and the "x". Because the space is removed before
|
||||
MathJax runs, MathJax has no way to recover the missing space, as it
|
||||
simply is no longer part of the page as far as IE is concerned.
|
||||
|
||||
MathJax provides two different mechanisms to avoid this problem. One
|
||||
is to add a prefix or postfix for the mathematics tags, which is text
|
||||
that you insert before or after the tag that MathJax will remove when
|
||||
it processes the tag. Patterns for the prefix and postfix are given
|
||||
in the "preJax" and "postJax" parameters of the MathJax.Hub.Config()
|
||||
command (see the MathJax/config/MathJax.js file for more details).
|
||||
For example, setting
|
||||
|
||||
preJax: "@@"
|
||||
|
||||
would mean that
|
||||
|
||||
... when @@<script type="math/tex">x < y</script> we have ...
|
||||
|
||||
would produce ".. when x < y we have ..." properly typeset. (One need
|
||||
not use both a preJax and postJax, as one is enough, but both are
|
||||
provided so that you can use either or both in combination.) Note,
|
||||
however, that the "@@" in this example will be displayed as part of
|
||||
the page until MathJax processes the mathematics and replaces the
|
||||
preJax with the typeset mathematics. This may cause visual confusion
|
||||
that disturbs your readers. It might be better to use something like
|
||||
"[math]" as the text for the preJax, since this may make more sense to
|
||||
your readers. Because the pre- and postJax are regular expression
|
||||
patterns (not litteral strings), you will need to handle this
|
||||
carefully because [ and ] have special meaning in regular expressions.
|
||||
Use
|
||||
|
||||
preJax: "\\[math\\]"
|
||||
|
||||
to make preJax be "\[math\]" (the double backslashes are to quote the
|
||||
backslash as part of the JavaScript string, and the resulting \[ and
|
||||
\] quote these characters in the resulting regular expression so they
|
||||
are treated as literal characters rather than having their special
|
||||
meansings in regular expressions).
|
||||
|
||||
The other approach is to use a "MathJax preview" before the SCRIPT
|
||||
tag. This is a means by which you can supply an alternative form for
|
||||
the mathematics to be displayed prior to when MathJax runs. You
|
||||
could use a simple HTML version (if the mathematics is simple enough),
|
||||
or an IMG tag, or just the raw TeX code, for example. Note that the
|
||||
mathematics between the SCRIPT tags is NOT displayed (since it is a
|
||||
script, not text), so the preview can be used to show the TeX code up
|
||||
until the mathematics is typeset. (The tex2jax preprocessor does that
|
||||
automatically, for example). To make a preview, include a SPAN with
|
||||
CLASS="MathJax_Preview" as the element just before the math SCRIPT
|
||||
tag, e.g.,
|
||||
|
||||
... when <span class="MathJax_Preview">x < y</span><script
|
||||
type="math/tex">x < y</script> we have ...
|
||||
|
||||
This circumvents the Internet Explorer space-removal bug, while at the
|
||||
same time giving your readers a preview of the mathematics until
|
||||
MathJax has been able to typeset it.
|
||||
|
||||
You can use CSS styles to make it easier to distinguish the preview
|
||||
from the rest of the text. For example:
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js">
|
||||
MathJax.Hub.Config({
|
||||
...
|
||||
styles: {
|
||||
".MathJax_Preview": {
|
||||
color: "red",
|
||||
border: "1px solid",
|
||||
padding: "2px"
|
||||
}
|
||||
},
|
||||
...
|
||||
});
|
||||
</script>
|
||||
|
||||
would cause the preview mathematics to be shown in red, with a border
|
||||
and 2px of padding between the border and the preview text.
|
||||
|
||||
|
||||
MATHJAX WITH MATHML:
|
||||
|
||||
In addition to the TeX input processor, MathJax includes a MathML input
|
||||
processor, so that you can specify your mathematics using MathML rather
|
||||
than TeX, if you wish. (The input and output processors are called "jax".)
|
||||
As with the TeX input jax, there is a pre-processor that looks for MathML
|
||||
in your web page (XHTML or HTML) and converts it to the form needed by
|
||||
MathJax. The preprocessor is called "mml2jax.js", and the associated input
|
||||
jax is "input/MathML". You can request these in your
|
||||
MathJax/config/MathJax.js file, or in line, as in the following example:
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js">
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["mml2jax.js"],
|
||||
jax: ["input/MathML","output/HTML-CSS"]
|
||||
});
|
||||
</script>
|
||||
|
||||
When it is used, the mml2jax preprocessor will scan your page for <math>
|
||||
tags and insert them into the <script> tags that MathJax needs to identify
|
||||
the mathematics on the page. This works in both HTML and XHTML pages, and
|
||||
with browsers that don't have native support for MathML. While MathJax is
|
||||
not as fast as a native implementation of MathML, it does bring MathML to
|
||||
all major browsers. (It is even possible to set up a GreaseMonkey-style
|
||||
script to have MathJax automatically process any MathML on any page you
|
||||
visit, so MathJax can be used to make MathML available even when the page
|
||||
author has not specifically loaded MathJax. There are some caveats for
|
||||
this, however, so such a script is not currently being supplied.)
|
||||
|
||||
For MathML that is handled via the pre-processor, you should not use the
|
||||
MathML named entities, but rather use the numeric entities like √ or
|
||||
unicode characters embedded in the page itself. The reason is that the
|
||||
entities are replaced by the browser before MathJax runs, and some browsers
|
||||
report errors for unknown entities; for browsers that are not MathML-aware,
|
||||
that will cause errors to be displayed for the MathML entities. While that
|
||||
might not occur in the browser you are using to compose your pages, it can
|
||||
happen with other browsers, so you should avoid the named entities whenever
|
||||
possible. If you must use named entities, you may need to declare them in
|
||||
the DOCTYPE declaration by hand.
|
||||
|
||||
|
||||
MATHML WITH NO PREPROCESSOR:
|
||||
|
||||
Just as there is a way to enter TeX code without a preprocessor, MathJax
|
||||
provides a means of specifying MathML without a preprocessor. In this
|
||||
case, you enclose your complete <math> substree within a
|
||||
<script type="math/mml">...</script> tag. E.g.:
|
||||
|
||||
<script type="math/mml">
|
||||
<math display="block">
|
||||
<mi>x</mi><mo>=</mo><mn>1</mn>
|
||||
</math>
|
||||
</script>
|
||||
|
||||
Note that the <math> tag's display attribute controls whether the node is
|
||||
typeset in-line or as a displayed equation. The same caveats concerning
|
||||
spacing apply to MathML as to TeX, so see the section on MATHJAX WITH NO
|
||||
PREPROCESSOR above for how to deal with an Internet Explorer bug that
|
||||
requires special treatment.
|
||||
|
||||
|
||||
MATHML OUTPUT:
|
||||
|
||||
In addition to the HTML-CSS output jax, MathJax provides a native-MathML
|
||||
output jax that generates MathML to display your mathematics rather than
|
||||
complicated HTML with CSS. For browsers that support MathML, this can be
|
||||
considerably faster, plus it provides for accessibility and the ability to
|
||||
cut and paste mathematics that MathML offers. MathML output is available
|
||||
for both TeX input and MathML input, so MathJax can act as a TeX-to-MathML
|
||||
converter right in the browser.
|
||||
|
||||
To use the native MathML output jax, specify "output/NativeMML" rather than
|
||||
"output/HTML-CSS" in the jax array of your MathJax.Hub.Config() call (or in
|
||||
MathJax/config/MathJax.js). For example:
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js">
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["tex2jax.js"],
|
||||
jax: ["input/TeX","output/NativeMML"]
|
||||
});
|
||||
</script>
|
||||
|
||||
Note that this will only work for those browsers that support MathML
|
||||
natively, so you should be careful to know your audience if you use this
|
||||
output jax. Also, note that the MathML output jax produces MathML3.0, not
|
||||
2.0, and so some browsers may not be able to handle all the constructs that
|
||||
MathJax will produce. Although it is slower, the HTML-CSS output jax is
|
||||
more reliable than the NativeMML output jax, at least from a cross-browser
|
||||
standpoint, particularly when the TeX input jax is used.
|
||||
|
||||
Because of the speed of the native MathML rendering, some users may prefer
|
||||
to use that than the HTML-CSS output jax, but you may not want to prevent
|
||||
those who don't have native MathML support from viewing your pages, so you
|
||||
may want to select between NativeMML and HTML-CSS automatically, depending
|
||||
on the capabilities of the browser. MathJax provides a configuration file
|
||||
that does just that. To use it, include "MMLorHTML.js" in the config array
|
||||
of your MathJax.Hub.Config() call. If you use this, be sure NOT to include
|
||||
an output jax in your jax array, as MMLorHTML.js will fill that in for you.
|
||||
For example:
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js">
|
||||
MathJax.Hub.Config({
|
||||
config: ["MMLorHTML.js"],
|
||||
extensions: ["tex2jax.js"],
|
||||
jax: ["input/TeX"]
|
||||
});
|
||||
</script>
|
||||
|
||||
In the case where both NativeMML and HTML-CSS are supported, the MMLorHTML
|
||||
configuration file will choose HTML-CSS, even though it is slower; this is
|
||||
because it is more reliable, since MathJax produces MathML3.0 and not all
|
||||
browsers can display that. This is configurable, however, and you may want
|
||||
to change the preference to NativeMML instead, especially if your input
|
||||
language is MathML already. This can be done using the MMLorHTML section
|
||||
of your configuration:
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js">
|
||||
MathJax.Hub.Config({
|
||||
config: ["MMLorHTML.js"],
|
||||
extensions: ["tex2jax.js"],
|
||||
jax: ["input/TeX"],
|
||||
MMLorHTML: {prefer: "MML"}
|
||||
});
|
||||
</script>
|
||||
|
||||
Note, however, that not all users will have your own preferences about what
|
||||
"looks best" or "performs best", so while you may value speed above all
|
||||
else, others may value readability or reliability more. Also, remember
|
||||
that browsers other than the one you are using (or the same browser on
|
||||
other operating systems) may not support native MathML as well as yours
|
||||
does. For example, Opera does handle simple MathML fairly well, but breaks
|
||||
down quickly for some more complex equations, and while you may have
|
||||
Firefox all set up for MathML, others may not have installed the needed
|
||||
fonts, and will be unhappy to get a warning dialog box whenever they visit
|
||||
your web page. So think carefully about the assumptions you are making on
|
||||
behalf of your readers. At some point, MathJax may include a control panel
|
||||
that will allow users to select preferences on their own, but that is not
|
||||
available currently.
|
||||
|
||||
|
||||
CONVERSION FROM JSMATH:
|
||||
|
||||
If you are currently using jsMath and would like to switch to MathJax, the
|
||||
transition should be fairly straight-forward. If you are using jsMath's
|
||||
easy/load.js, then you should simply switch the line that loads
|
||||
jsMath/easy/load.js to
|
||||
|
||||
<script src="path-to-mathjax/MathJax/MathJax.js"></script>
|
||||
|
||||
where "path-to-mathjax" is the path to the MathJax folder on your server.
|
||||
This uses the MathJax/config/MathJax.js file to configure MathJax, similar
|
||||
to easy/load.js, and you can read the comments in that file for details.
|
||||
Be sure to include "tex2jax.js" in your extensions array if you want the
|
||||
TeX preprocessor to run (comparable to the tex2math plugin for jsMath).
|
||||
|
||||
If you did not use the tex2math plugin for jsMath and instead inserted your
|
||||
own <span class="math">...</span> and <div class="math">...</div> tags with
|
||||
class="math", then you need to do a little more work for MathJax. These
|
||||
need to be replaced by <script type="math/tex">...</script> and <script
|
||||
type="math/tex; mode=display">...</script> tags. See also the section
|
||||
MATHJAX WITHOUT A PREPROCESSOR above for some caveats concerning an
|
||||
Internet Explorer bug that you will need to be aware of.
|
||||
|
||||
If you are using a preprocessor of your own to write your HTML files, it
|
||||
should be a simple matter of changing over the inserted tags to the ones
|
||||
that MathJax needs. If you have existing HTML pages, however, and don't
|
||||
want to (or can't) reprocess them, then you may want to use the jsMath2jax
|
||||
preprocessor, which will first convert the span and div tags to script tags
|
||||
before running MathJax. To do so, include "jsMath2jax.js" in your
|
||||
extensions array, as in the following example:
|
||||
|
||||
<script type="text/javascript" src="/MathJax/MathJax.js">
|
||||
MathJax.Hub.Config({
|
||||
extensions: ["jsMath2jax.js"],
|
||||
jax: ["input/TeX", "output/HTML-CSS"]
|
||||
});
|
||||
</script>
|
||||
|
||||
You should remove all the jsMath calls, like jsMath.Process(), or script
|
||||
tags that load jsMath extensions. Only the single script tag that loads
|
||||
MathJax should be needed.
|
||||
|
||||
If you have created pages with dynamic mathematics that is processed by
|
||||
jsMath on the fly, that is handled somewhat differently with MathJax.
|
||||
MathJax has a richer API for dealing with mathematics on the page, but the
|
||||
documentation is not yet ready. There have been discussions in the MathJax
|
||||
on-line forums that deal with this topic, so your best bet right now is to
|
||||
read them.
|
||||
|
||||
|
||||
COMMUNITY:
|
||||
|
||||
The main MathJax website is www.mathjax.org, and it includes announcements
|
||||
and other important information. MathJax also has a SourceForge site at
|
||||
http://sourceforge.net/projects/mathjax/ that includes the download site
|
||||
for the MathJax distribution, the bug-tracker for reporting bugs, and
|
||||
several user forums for asking questions and getting assistance:
|
||||
|
||||
Bug tracker: http://sourceforge.net/tracker/?group_id=261188&atid=1240827
|
||||
MathJax Help: http://sourceforge.net/projects/mathjax/forums/forum/948701
|
||||
Open Discussion: http://sourceforge.net/projects/mathjax/forums/forum/948700
|
||||
|
||||
Before reporting a bug, please check that it has not already been reported.
|
||||
Also, please use the bug tracker for reporting bugs rather than the help
|
||||
forum.
|
||||
@@ -1,63 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/MMLorHTML.js
|
||||
*
|
||||
* Chooses between the NativeMML and HTML-CSS output jax depending
|
||||
* on the capabilities of the browser and configuration settings
|
||||
* of the page.
|
||||
*
|
||||
* This file should be added to the config array when configuring
|
||||
* MathJax. Note that if you include this, you should NOT include
|
||||
* an output jax in the jax array (it will be added for you by
|
||||
* this file).
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
(function (HUB) {
|
||||
var CONFIG = MathJax.Hub.Insert({prefer: "HTML"},(MathJax.Hub.config.MMLorHTML||{}));
|
||||
|
||||
var MINBROWSERVERSION = {
|
||||
Firefox: 3.0,
|
||||
Opera: 9.52,
|
||||
MSIE: 6.0,
|
||||
Chrome: 0.3,
|
||||
Safari: 2.0,
|
||||
Konqueror: 4.0
|
||||
};
|
||||
|
||||
var canUseHTML = (HUB.Browser.version === "0.0" ||
|
||||
HUB.Browser.versionAtLeast(MINBROWSERVERSION[HUB.Browser]||0.0));
|
||||
|
||||
var MathPlayer; try {new ActiveXObject("MathPlayer.Factory.1"); MathPlayer = true} catch(err) {MathPlayer = false};
|
||||
|
||||
var canUseMML = (HUB.Browser.isFirefox && HUB.Browser.versionAtLeast("1.5")) ||
|
||||
(HUB.Browser.isMSIE && MathPlayer) ||
|
||||
(HUB.Browser.isOpera && HUB.Browser.versionAtLeast("9.52"));
|
||||
if (canUseHTML || canUseMML) {
|
||||
if (canUseMML && (CONFIG.prefer === "MML" || !canUseHTML))
|
||||
{HUB.config.jax.push("output/NativeMML")} else {HUB.config.jax.push("output/HTML-CSS")}
|
||||
} else {
|
||||
HUB.PreProcess.disabled = true;
|
||||
HUB.prepareScripts.disabled = true;
|
||||
MathJax.Message.Set("Your browser does not support MathJax",null,4000);
|
||||
HUB.Startup.signal.Post("MathJax not supported");
|
||||
}
|
||||
|
||||
})(MathJax.Hub);
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");
|
||||
@@ -1,351 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/config/MathJax.js
|
||||
*
|
||||
* This configuration file is loaded when there is no explicit
|
||||
* configuration script in the <script> tag that loads MathJax.js
|
||||
*
|
||||
* Use it to customize the MathJax settings. See comments below.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009-10 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Config({
|
||||
|
||||
//
|
||||
// A comma-separated list of configuration files to load
|
||||
// when MathJax starts up. E.g., to define local macros, etc.
|
||||
// teh default directory is the MathJax/config directory.
|
||||
//
|
||||
// Example: config: ["local/local.js"],
|
||||
// Example: config: ["local/local.js","MMLtoHTML.js"],
|
||||
//
|
||||
config: [],
|
||||
|
||||
//
|
||||
// A comma-separated list of CSS stylesheet files to be loaded
|
||||
// when MathJax starts up. The default directory is the
|
||||
// MathJax/config directory.
|
||||
//
|
||||
// Example: styleSheets: ["MathJax.css"],
|
||||
//
|
||||
styleSheets: [],
|
||||
|
||||
//
|
||||
// Styles to be defined dynamically at startup time.
|
||||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax .merror": {
|
||||
// color: "blue",
|
||||
// "background-color": "green"
|
||||
// }
|
||||
// },
|
||||
//
|
||||
styles: {},
|
||||
|
||||
//
|
||||
// A comma-separated list of input and output jax to initialize at startup.
|
||||
// Their main code is only loaded when they are actually used, so it is not
|
||||
// inefficient to include jax that are not actually used on the page. These
|
||||
// are found in the MathJax/jax directory.
|
||||
//
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
|
||||
//
|
||||
// A comma-separated list of extensions to load at startup. The default
|
||||
// directory is MathJax/extensions.
|
||||
//
|
||||
// Example: extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],
|
||||
//
|
||||
extensions: ["tex2jax.js"],
|
||||
|
||||
//
|
||||
// Comma-separated lists of .js and .css files to load at startup that depend
|
||||
// on the browser being used. The default directory is MathJax/config/browsers.
|
||||
//
|
||||
browser: {
|
||||
MSIE: [],
|
||||
Chrome: [],
|
||||
Safari: [],
|
||||
Firefox: [],
|
||||
Opera: []
|
||||
},
|
||||
|
||||
//
|
||||
// Patterns to remove from before and after math script tags. If you are not
|
||||
// using one of the preprocessors (e.g., tex2jax), you need to insert something
|
||||
// etra into your HTML file in order to avoid a bug in Internet Explorer (IE
|
||||
// removes spaces from the DOM that it things are redundent, and since a SCRIPT
|
||||
// tag usually doesn't add content to the page, if there is a space before and after
|
||||
// a MathJax SCRIPT tag, IE will remove the first space. When MathJax inserts
|
||||
// the typeset mathematics, this means there will be no space before it and the
|
||||
// preceeding text. In order to avoid this, you should include some "guard characters"
|
||||
// before or after the math SCRIPT tag; define the patterns you want to use below.
|
||||
// Note that these are actually regular expressions, so you will need to quote
|
||||
// special characters. If both are defined, both must be present in order to be
|
||||
// removed. See also the preRemoveClass comments below.
|
||||
//
|
||||
// Example:
|
||||
// preJax: "\\\\", // makes a double backslash the preJax text
|
||||
// or
|
||||
// preJax: "\[\[", // jax scripts must be enclosed in double brackets
|
||||
// postJax: "\]\]",
|
||||
//
|
||||
preJax: null,
|
||||
postJax: null,
|
||||
|
||||
//
|
||||
// The CSS class for a math preview to be removed preceeding a MathJax SCRIPT tag.
|
||||
// This allows you to include a math preview in a form that will be displayed prior
|
||||
// to MathJax loading performing its typesetting. It also avoids the Internet Explorer
|
||||
// space-removal bug, and can be used in place of preJax and postJax if that is more
|
||||
// convenient. For example
|
||||
//
|
||||
// <span class="MathJax_Preview">[math]</span><script type="math/tex">...</script>
|
||||
//
|
||||
// would display "[math]" in place of the math until MathJax is able to typeset it.
|
||||
//
|
||||
preRemoveClass: "MathJax_Preview",
|
||||
|
||||
//
|
||||
// This value controls whether the "Processing Math: nn%" message are displayed
|
||||
// in the lower left-hand corner. Set to "false" to prevent those messages (though
|
||||
// file loading and other messages will still be shown).
|
||||
//
|
||||
showProcessingMessages: true,
|
||||
|
||||
//
|
||||
// Normally MathJax will perform its starup commands (loading of
|
||||
// configuration, styles, jax, and so on) as soon as it can. If you
|
||||
// expect to be doing additional configuration on the page, however, you
|
||||
// may want to have it wait until the page's onload hander is called. If so,
|
||||
// set this to "onload".
|
||||
//
|
||||
delayStartupUntil: "none",
|
||||
|
||||
//
|
||||
// Normally MathJax will typeset the mathematics on the page as soon as
|
||||
// the page is loaded. If you want to delay that process, in which case
|
||||
// you will need to call MathJax.Hub.Typeset() yourself by hand, set
|
||||
// this value to true.
|
||||
//
|
||||
skipStartupTypeset: false,
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the tex2jax preprocessor (when you have included
|
||||
// "tex2jax.js" in the extensions list above).
|
||||
//
|
||||
tex2jax: {
|
||||
|
||||
//
|
||||
// The Id of the element to be processed (defaults to full document)
|
||||
//
|
||||
element: null,
|
||||
|
||||
//
|
||||
// The delimiters that surround in-line math expressions. The first in each
|
||||
// pair is the initial delimiter and the second is the terminal delimiter.
|
||||
// Comment out any that you don't want, but be sure there is no extra
|
||||
// comma at the end of the last item in the list -- some browsers won't
|
||||
// be able to handle that.
|
||||
//
|
||||
inlineMath: [
|
||||
// ['$','$'], // uncomment this for standard TeX math delimiters
|
||||
['\\(','\\)']
|
||||
],
|
||||
|
||||
//
|
||||
// The delimiters that surround displayed math expressions. The first in each
|
||||
// pair is the initial delimiter and the second is the terminal delimiter.
|
||||
// Comment out any that you don't want, but be sure there is no extra
|
||||
// comma at the end of the last item in the list -- some browsers won't
|
||||
// be able to handle that.
|
||||
//
|
||||
displayMath: [
|
||||
['$$','$$'],
|
||||
['\\[','\\]']
|
||||
],
|
||||
|
||||
//
|
||||
// Set to "true" to allow \$ to produce a dollar without starting in-line
|
||||
// math mode. If you uncomment the ['$','$'] line above, you should change
|
||||
// this to true so that you can insert plain dollar signs into your documents
|
||||
//
|
||||
processEscapes: false,
|
||||
|
||||
//
|
||||
// Controls whether tex2jax processes LaTeX environments outside of math
|
||||
// mode. Set to "false" to prevent processing of environments except within
|
||||
// math mode.
|
||||
//
|
||||
processEnvironments: true,
|
||||
|
||||
//
|
||||
// Controls whether tex2jax inserts MathJax_Preview spans so that the TeX
|
||||
// code is visible until it is processed by MathJax. Set to "false" to prevent
|
||||
// the previews from being inserted (the math will simply disappear until it is
|
||||
// typeset).
|
||||
//
|
||||
previewTeX: true
|
||||
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the jsMath2jax preprocessor (when you have included
|
||||
// "jsMath2jax.js" in the extensions list above).
|
||||
//
|
||||
jsMath2jax: {
|
||||
//
|
||||
// Controls whether jsMath2tex inserts MathJax_Preview elements so that
|
||||
// the TeX code is visible until it is processed by MathJax. Set to "false"
|
||||
// to prevent previews from being inserted (the math will simply disappear
|
||||
// until it is typeset).
|
||||
//
|
||||
previewTeX: true
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the TeX input jax.
|
||||
//
|
||||
TeX: {
|
||||
|
||||
//
|
||||
// This specifies the side on which \tag{} macros will place the tags.
|
||||
// Set to "left" to place on the left-hand side.
|
||||
//
|
||||
TagSide: "right",
|
||||
|
||||
//
|
||||
// This is the amound of indentation (from right or left) for the tags.
|
||||
//
|
||||
TagIndent: ".8em",
|
||||
|
||||
//
|
||||
// This is the width to use for the multline environment
|
||||
//
|
||||
MultLineWidth: "85%"
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the MathML inupt jax.
|
||||
//
|
||||
MathML: {
|
||||
//
|
||||
// This specifies whether to use TeX spacing or MathML spacing when the
|
||||
// HTML-CSS output jax is used.
|
||||
//
|
||||
useMathMLspacing: false
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the HTML-CSS output jax.
|
||||
//
|
||||
"HTML-CSS": {
|
||||
|
||||
//
|
||||
// This controls the global scaling of mathematics as compared to the
|
||||
// surrounding text. Values between 100 and 133 are usually good choices.
|
||||
//
|
||||
scale: 100,
|
||||
|
||||
//
|
||||
// This is a list of the fonts available to MathJax in the
|
||||
// MathJax/Fonts/HTML-CSS directory. If you don't want MathJax
|
||||
// to use one of these fonts (when available on the user's computer),
|
||||
// remove it from the list. Use an empty list to force the use of
|
||||
// web fonts (or image fonts).
|
||||
//
|
||||
availableFonts: ["STIX","TeX"],
|
||||
|
||||
//
|
||||
// This is the preferred font to use when more than one of those
|
||||
// listed above is available.
|
||||
//
|
||||
preferredFont: "TeX",
|
||||
|
||||
//
|
||||
// This is the web-based font to use when none of the fonts listed
|
||||
// above are available on the user's computer. Note that currently
|
||||
// only the TeX font is available in a web-based form. Set this to
|
||||
//
|
||||
// webFont: null,
|
||||
//
|
||||
// if you want to prevent the use of web-based fonts.
|
||||
//
|
||||
webFont: "TeX",
|
||||
|
||||
//
|
||||
// This is the font to use for image fallback mode (when none of the
|
||||
// fonts listed above are available and the browser doesn't support
|
||||
// web-fonts via the @font-face CSS directive). Note that currently
|
||||
// only the TeX font is available as an image font. Set this to
|
||||
//
|
||||
// imageFont: null,
|
||||
//
|
||||
// if you want to prevent the use of image fonts (e.g., you have not
|
||||
// installed the image fonts on your server). In this case, only
|
||||
// browsers that support web-based fonts will be able to view your pages
|
||||
// without having the fonts installed on the client computer. The browsers
|
||||
// that support web-based fonts include: IE6 and later, Chrome, Safari3.1
|
||||
// and above, Firefox3.5 and later, and Opera10 and later. Note that
|
||||
// Firefox3.0 is NOT on this list, so without image fonts, FF3.0 users
|
||||
// will be required to to download and install either the STIX fonts or the
|
||||
// MathJax TeX fonts.
|
||||
//
|
||||
imageFont: "TeX",
|
||||
|
||||
//
|
||||
// This allows you to define or modify the styles used to display
|
||||
// various math elements created by MathJax.
|
||||
//
|
||||
// Example:
|
||||
// styles: {
|
||||
// ".MathJax_Display": {
|
||||
// "text-align": "left", // left aligned displayed math
|
||||
// "margin-left": "3em", // with 3em indentation
|
||||
// },
|
||||
// ".MathJax_Preview": {
|
||||
// "font-size": "80%", // preview uses a smaller font
|
||||
// color: "red" // and is in red
|
||||
// }
|
||||
// }
|
||||
//
|
||||
styles: {}
|
||||
},
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// These parameters control the MMLorHTML configuration file.
|
||||
// NOTE: if you add MMLorHTML.js to the config array above,
|
||||
// you must REMOVE the output jax from the jax array.
|
||||
//
|
||||
MMLorHTML: {
|
||||
//
|
||||
// The output jax that is to be preferred when both are possible
|
||||
// (set to "MML" for native MathML, "HTML" for MathJax's HTML-CSS output jax).
|
||||
//
|
||||
prefer: "HTML"
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/config/MathJax.js");
|
||||
@@ -1,37 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/config/local/local.js
|
||||
*
|
||||
* Include changes and configuration local to your installation
|
||||
* in this file. For example, common macros can be defined here
|
||||
* (see below). To use this file, add "local/local.js" to the
|
||||
* config array in MathJax.js or your MathJax.Hub.Config() call.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
|
||||
// place macros here. E.g.:
|
||||
// TEX.Macro("R","{\\bf R}");
|
||||
// TEX.Macro("op","\\mathop{\\rm #1}",1); // a macro with 1 parameter
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/config/local/local.js");
|
||||
@@ -1,376 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/AMSmath.js
|
||||
*
|
||||
* Implements AMS math environments and macros.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var TEXDEF = TEX.Definitions;
|
||||
var STACKITEM = TEX.Stack.Item;
|
||||
|
||||
var COLS = function (W) {return W.join("em ") + "em"};
|
||||
|
||||
MathJax.Hub.Insert(TEXDEF,{
|
||||
macros: {
|
||||
mathring: ['Accent','2DA'], // or 0x30A
|
||||
|
||||
nobreakspace: 'Tilde',
|
||||
negmedspace: ['Spacer',MML.LENGTH.NEGATIVEMEDIUMMATHSPACE],
|
||||
negthickspace: ['Spacer',MML.LENGTH.NEGATIVETHICKMATHSPACE],
|
||||
|
||||
intI: ['Macro','\\mathchoice{\\!}{}{}{}\\!\\!\\int'],
|
||||
// iint: ['MultiIntegral','\\int\\intI'], // now in core TeX input jax
|
||||
// iiint: ['MultiIntegral','\\int\\intI\\intI'], // now in core TeX input jax
|
||||
iiiint: ['MultiIntegral','\\int\\intI\\intI\\intI'],
|
||||
idotsint: ['MultiIntegral','\\int\\cdots\\int'],
|
||||
|
||||
dddot: ['Macro','\\mathop{#1}\\limits^{\\textstyle \\mathord{.}\\mathord{.}\\mathord{.}}',1],
|
||||
ddddot: ['Macro','\\mathop{#1}\\limits^{\\textstyle \\mathord{.}\\mathord{.}\\mathord{.}\\mathord{.}}',1],
|
||||
|
||||
sideset: ['Macro','\\mathop{\\mathop{\\rlap{\\phantom{#3}}}\\nolimits#1\\!\\mathop{#3}\\nolimits#2}',3],
|
||||
|
||||
boxed: ['Macro','\\fbox{$\\displaystyle{#1}$}',1],
|
||||
|
||||
tag: 'HandleTag',
|
||||
notag: 'HandleNoTag',
|
||||
|
||||
substack: ['Macro','\\begin{subarray}{c}#1\\end{subarray}',1],
|
||||
|
||||
injlim: ['Macro','\\mathop{\\rm inj\\,lim}'],
|
||||
projlim: ['Macro','\\mathop{\\rm proj\\,lim}'],
|
||||
varliminf: ['Macro','\\mathop{\\underline{\\rm lim}}'],
|
||||
varlimsup: ['Macro','\\mathop{\\overline{\\rm lim}}'],
|
||||
varinjlim: ['Macro','\\mathop{\\underrightarrow{\\rm lim\\Rule{-1pt}{0pt}{1pt}}\\Rule{0pt}{0pt}{.45em}}'],
|
||||
varprojlim: ['Macro','\\mathop{\\underleftarrow{\\rm lim\\Rule{-1pt}{0pt}{1pt}}\\Rule{0pt}{0pt}{.45em}}'],
|
||||
|
||||
DeclareMathOperator: 'HandleDeclareOp',
|
||||
operatorname: 'HandleOperatorName',
|
||||
|
||||
genfrac: 'Genfrac',
|
||||
frac: ['Genfrac',"","","",""],
|
||||
tfrac: ['Genfrac',"","","",1],
|
||||
dfrac: ['Genfrac',"","","",0],
|
||||
binom: ['Genfrac',"(",")","0em",""],
|
||||
tbinom: ['Genfrac',"(",")","0em",1],
|
||||
dbinom: ['Genfrac',"(",")","0em",0],
|
||||
|
||||
cfrac: 'CFrac',
|
||||
|
||||
shoveleft: ['HandleShove',MML.ALIGN.LEFT],
|
||||
shoveright: ['HandleShove',MML.ALIGN.RIGHT],
|
||||
|
||||
xrightarrow: ['xArrow',0x2192,5,6],
|
||||
xleftarrow: ['xArrow',0x2190,7,3]
|
||||
},
|
||||
|
||||
environment: {
|
||||
align: ['AMSarray',null,true,true, 'rlrlrlrlrlrl',COLS([5/18,2,5/18,2,5/18,2,5/18,2,5/18,2,5/18])],
|
||||
'align*': ['AMSarray',null,false,true, 'rlrlrlrlrlrl',COLS([5/18,2,5/18,2,5/18,2,5/18,2,5/18,2,5/18])],
|
||||
multline: ['Multline',null,true],
|
||||
'multline*': ['Multline',null,false],
|
||||
split: ['AMSarray',null,false,false,'rl',COLS([5/18])],
|
||||
gather: ['AMSarray',null,true,true, 'c'],
|
||||
'gather*': ['AMSarray',null,false,true, 'c'],
|
||||
|
||||
alignat: ['AlignAt',null,true,true],
|
||||
'alignat*': ['AlignAt',null,false,true],
|
||||
alignedat: ['AlignAt',null,false,false],
|
||||
|
||||
aligned: ['Array',null,null,null,'rlrlrlrlrlrl',COLS([5/18,2,5/18,2,5/18,2,5/18,2,5/18,2,5/18]),".5em",'D'],
|
||||
gathered: ['Array',null,null,null,'c',null,".5em",'D'],
|
||||
|
||||
subarray: ['Array',null,null,null,null,COLS([0,0,0,0]),"0.1em",'S',1],
|
||||
smallmatrix: ['Array',null,null,null,'c',COLS([1/3]),".2em",'S',1]
|
||||
},
|
||||
|
||||
delimiter: {
|
||||
'\\lvert': ['2223',{texClass:MML.TEXCLASS.OPEN}],
|
||||
'\\rvert': ['2223',{texClass:MML.TEXCLASS.CLOSE}],
|
||||
'\\lVert': ['2225',{texClass:MML.TEXCLASS.OPEN}],
|
||||
'\\rVert': ['2225',{texClass:MML.TEXCLASS.CLOSE}]
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
TEX.Parse.Augment({
|
||||
|
||||
/*
|
||||
* Add the tag to the environment to be added to the table row later
|
||||
*/
|
||||
HandleTag: function (name) {
|
||||
var arg = this.trimSpaces(this.GetArgument(name));
|
||||
if (arg === "*") {arg = this.GetArgument(name)} else {arg = "("+arg+")"}
|
||||
if (this.stack.global.notag)
|
||||
{TEX.Error(name+" not allowed in "+this.stack.global.notag+" environment")}
|
||||
if (this.stack.global.tag) {TEX.Error("Multiple "+name)}
|
||||
this.stack.global.tag = MML.mtd.apply(MML,this.InternalMath(arg));
|
||||
},
|
||||
HandleNoTag: function (name) {
|
||||
if (this.stack.global.tag) {delete this.stack.global.tag}
|
||||
},
|
||||
|
||||
/*
|
||||
* Handle \DeclareMathOperator
|
||||
*/
|
||||
HandleDeclareOp: function (name) {
|
||||
var limits = "";
|
||||
var cs = this.trimSpaces(this.GetArgument(name));
|
||||
if (cs == "*") {
|
||||
limits = "\\limits";
|
||||
cs = this.trimSpaces(this.GetArgument(name));
|
||||
}
|
||||
if (cs.charAt(0) == "\\") {cs = cs.substr(1)}
|
||||
var op = this.GetArgument(name);
|
||||
op = op.replace(/\*/g,'\\text{*}').replace(/-/g,'\\text{-}');
|
||||
TEX.Definitions.macros[cs] = ['Macro','\\mathop{\\rm '+op+'}'+limits];
|
||||
},
|
||||
|
||||
HandleOperatorName: function (name) {
|
||||
var limits = "\\nolimits";
|
||||
var op = this.trimSpaces(this.GetArgument(name));
|
||||
if (op == "*") {
|
||||
limits = "\\limits";
|
||||
op = this.trimSpaces(this.GetArgument(name));
|
||||
}
|
||||
op = op.replace(/\*/g,'\\text{*}').replace(/-/g,'\\text{-}');
|
||||
this.string = '\\mathop{\\rm '+op+'}'+limits+" "+this.string.slice(this.i);
|
||||
this.i = 0;
|
||||
},
|
||||
|
||||
/*
|
||||
* Record presence of \shoveleft and \shoveright
|
||||
*/
|
||||
HandleShove: function (name,shove) {
|
||||
var top = this.stack.Top();
|
||||
if (top.type !== "multline" || top.data.length) {TEX.Error(name+" must come at the beginning of the line")}
|
||||
top.data.shove = shove;
|
||||
},
|
||||
|
||||
/*
|
||||
* Handle \cfrac
|
||||
*/
|
||||
CFrac: function (name) {
|
||||
var lr = this.trimSpaces(this.GetBrackets(name)),
|
||||
num = this.GetArgument(name),
|
||||
den = this.GetArgument(name);
|
||||
var frac = MML.mfrac(TEX.Parse('\\strut\\textstyle{'+num+'}',this.stack.env).mml(),
|
||||
TEX.Parse('\\strut\\textstyle{'+den+'}',this.stack.env).mml());
|
||||
lr = ({l:MML.ALIGN.LEFT, r:MML.ALIGN.RIGHT,"":""})[lr];
|
||||
if (lr == null) {TEX.Error("Illegal alignment specified in "+name)}
|
||||
if (lr) {frac.numalign = frac.denomalign = lr}
|
||||
this.Push(frac);
|
||||
},
|
||||
|
||||
/*
|
||||
* Implement AMS generalized fraction
|
||||
*/
|
||||
Genfrac: function (name,left,right,thick,style) {
|
||||
if (left == null) {left = this.GetDelimiterArg(name)} else {left = this.convertDelimiter(left)}
|
||||
if (right == null) {right = this.GetDelimiterArg(name)} else {right = this.convertDelimiter(right)}
|
||||
if (thick == null) {thick = this.GetArgument(name)}
|
||||
if (style == null) {style = this.trimSpaces(this.GetArgument(name))}
|
||||
var num = this.ParseArg(name);
|
||||
var den = this.ParseArg(name);
|
||||
var frac = MML.mfrac(num,den);
|
||||
if (thick !== "") {frac.linethickness = thick}
|
||||
if (left || right) {frac = MML.mfenced(frac).With({open: left, close: right})}
|
||||
if (style !== "") {
|
||||
var STYLE = (["D","T","S","SS"])[style];
|
||||
if (STYLE == null) {TEX.Error("Bad math style for "+name)}
|
||||
frac = MML.mstyle(frac);
|
||||
if (STYLE === "D") {frac.displaystyle = true; frac.scriptlevel = 0}
|
||||
else {frac.displaystyle = false; frac.scriptlevel = style - 1}
|
||||
}
|
||||
|
||||
this.Push(frac);
|
||||
},
|
||||
|
||||
/*
|
||||
* Implements multline environment (mostly handled through STACKITEM below)
|
||||
*/
|
||||
Multline: function (begin,numbered) {
|
||||
this.Push(begin);
|
||||
return STACKITEM.multline().With({
|
||||
arraydef: {
|
||||
displaystyle: true,
|
||||
rowspacing: ".5em",
|
||||
width: TEX.config.MultLineWidth, columnwidth:"100%",
|
||||
side: TEX.config.TagSide,
|
||||
minlabelspacing: TEX.config.TagIndent
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/*
|
||||
* Handle AMS aligned environments
|
||||
*/
|
||||
AMSarray: function (begin,numbered,taggable,align,spacing) {
|
||||
this.Push(begin);
|
||||
align = align.replace(/[^clr]/g,'').split('').join(' ');
|
||||
align = align.replace(/l/g,'left').replace(/r/g,'right').replace(/c/g,'center');
|
||||
return STACKITEM.AMSarray(begin.name,numbered,taggable,this.stack).With({
|
||||
arraydef: {
|
||||
displaystyle: true,
|
||||
rowspacing: ".5em",
|
||||
columnalign: align,
|
||||
columnspacing: (spacing||"1em"),
|
||||
rowspacing: "3pt",
|
||||
side: TEX.config.TagSide,
|
||||
minlabelspacing: TEX.config.TagIndent
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
AlignAt: function (begin,numbered,taggable) {
|
||||
var n = this.GetArgument("\\begin{"+begin.name+"}");
|
||||
if (n.match(/[^0-9]/)) {TEX.Error("Argument to \\begin{"+begin.name+"} must me a positive integer")}
|
||||
align = ""; spacing = [];
|
||||
while (n > 0) {align += "rl"; spacing.push("0em 0em"); n--}
|
||||
spacing = spacing.join(" ");
|
||||
if (taggable) {return this.AMSarray(begin,numbered,taggable,align,spacing)}
|
||||
return this.Array(begin,null,null,align,spacing,".5em",'D');
|
||||
},
|
||||
|
||||
/*
|
||||
* Handle multiple integrals (make a mathop if followed by limits)
|
||||
*/
|
||||
MultiIntegral: function (name,integral) {
|
||||
var next = this.GetNext();
|
||||
if (next === "\\") {
|
||||
var i = this.i; next = this.GetArgument(name); this.i = i;
|
||||
if (next === "\\limits") {
|
||||
if (name === "\\idotsint") {integral = "\\!\\!\\mathop{\\,\\,"+integral+"}"}
|
||||
else {integral = "\\!\\!\\!\\mathop{\\,\\,\\,"+integral+"}"}
|
||||
}
|
||||
}
|
||||
this.string = integral + " " + this.string.slice(this.i);
|
||||
this.i = 0;
|
||||
},
|
||||
|
||||
xArrow: function (name,chr,l,r) {
|
||||
var def = {width: "+"+(l+r)+"mu", lspace: l+"mu"};
|
||||
var bot = this.GetBrackets(name),
|
||||
top = this.ParseArg(name);
|
||||
var arrow = MML.mo(MML.chars(String.fromCharCode(chr))).With({
|
||||
stretchy: true, texClass: MML.TEXCLASS.REL
|
||||
});
|
||||
var mml = MML.munderover(arrow);
|
||||
mml.SetData(mml.over,MML.mpadded(top).With(def).With({voffset:".15em"}));
|
||||
if (bot) {
|
||||
bot = TEX.Parse(bot,this.stack.env).mml()
|
||||
mml.SetData(mml.under,MML.mpadded(bot).With(def).With({voffset:"-.24em"}));
|
||||
}
|
||||
this.Push(mml);
|
||||
},
|
||||
|
||||
/*
|
||||
* Get a delimiter or empty argument
|
||||
*/
|
||||
GetDelimiterArg: function (name) {
|
||||
var c = this.trimSpaces(this.GetArgument(name));
|
||||
if (c == "") {return null}
|
||||
if (!TEXDEF.delimiter[c]) {TEX.Error("Missing or unrecognized delimiter for "+name)}
|
||||
return this.convertDelimiter(c);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
* Implement multline environment via a STACKITEM
|
||||
*/
|
||||
STACKITEM.multline = STACKITEM.array.Subclass({
|
||||
type: "multline",
|
||||
EndEntry: function () {
|
||||
var mtd = MML.mtd.apply(MML,this.data);
|
||||
if (this.data.shove) {mtd.columnalign = this.data.shove}
|
||||
this.row.push(mtd);
|
||||
this.data = [];
|
||||
},
|
||||
EndRow: function () {
|
||||
if (this.row.length != 1) {TEX.Error("multline rows must have exactly one column")}
|
||||
this.table.push(this.row); this.row = [];
|
||||
},
|
||||
EndTable: function () {
|
||||
this.SUPER(arguments).EndTable.call(this);
|
||||
if (this.table.length) {
|
||||
var m = this.table.length-1, i;
|
||||
if (!this.table[0][0].columnalign) {this.table[0][0].columnalign = MML.ALIGN.LEFT}
|
||||
if (!this.table[m][0].columnalign) {this.table[m][0].columnalign = MML.ALIGN.RIGHT}
|
||||
var mtr = MML.mtr;
|
||||
if (this.global.tag) {
|
||||
this.table[0] = [this.global.tag].concat(this.table[0]);
|
||||
delete this.global.tag; mtr = MML.mlabeledtr;
|
||||
}
|
||||
this.table[0] = mtr.apply(MML,this.table[0]);
|
||||
for (i = 1, m = this.table.length; i < m; i++)
|
||||
{this.table[i] = MML.mtr.apply(MML,this.table[i])}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
STACKITEM.AMSarray = STACKITEM.array.Subclass({
|
||||
type: "AMSarray",
|
||||
Init: function (name,numbered,taggable,stack) {
|
||||
this.SUPER(arguments).Init.apply(this);
|
||||
this.numbered = numbered;
|
||||
this.save_notag = stack.global.notag;
|
||||
stack.global.notag = (taggable ? null : name);
|
||||
},
|
||||
EndRow: function () {
|
||||
var mtr = MML.mtr;
|
||||
if (this.global.tag) {
|
||||
this.row = [this.global.tag].concat(this.row);
|
||||
mtr = MML.mlabeledtr;
|
||||
delete this.global.tag;
|
||||
}
|
||||
this.table.push(mtr.apply(MML,this.row)); this.row = [];
|
||||
},
|
||||
EndTable: function () {
|
||||
this.SUPER(arguments).EndTable.call(this);
|
||||
this.global.notag = this.save_notag;
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// Look for \tag on a formula and make an mtable to include it
|
||||
//
|
||||
STACKITEM.start.Augment({
|
||||
oldCheckItem: STACKITEM.start.prototype.checkItem,
|
||||
checkItem: function (item) {
|
||||
if (item.type === "stop") {
|
||||
var mml = this.mmlData();
|
||||
if (this.global.tag) {
|
||||
mml = MML.mtable(MML.mlabeledtr(this.global.tag,MML.mtd(mml)));
|
||||
mml.side = TEX.config.TagSide;
|
||||
mml.minlabelspacing = TEX.config.TagIndent;
|
||||
delete this.global.tag;
|
||||
}
|
||||
return STACKITEM.mml(mml);
|
||||
}
|
||||
return this.SUPER(arguments).checkItem.call(this,item);
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX AMSmath Ready");
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMSmath.js");
|
||||
@@ -1,385 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/AMSsymbols.js
|
||||
*
|
||||
* Implements macros for accessing the AMS symbol fonts.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
|
||||
MathJax.Hub.Insert(MathJax.InputJax.TeX.Definitions,{
|
||||
|
||||
mathchar0mi: {
|
||||
// Lowercase Greek letters
|
||||
digamma: '03DD',
|
||||
varkappa: '03F0',
|
||||
|
||||
// Uppercase Greek letters
|
||||
varGamma: ['0393',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varDelta: ['0394',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varTheta: ['0398',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varLambda: ['039B',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varXi: ['039E',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varPi: ['03A0',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varSigma: ['03A3',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varUpsilon: ['03A5',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varPhi: ['03A6',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varPsi: ['03A8',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
varOmega: ['03A9',{mathvariant: MML.VARIANT.ITALIC}],
|
||||
|
||||
// Hebrew letters
|
||||
beth: '2136',
|
||||
gimel: '2137',
|
||||
daleth: '2138',
|
||||
|
||||
// Miscellaneous symbols
|
||||
// hbar: '0127', // in MathJax_Main
|
||||
backprime: ['2035',{variantForm: true}],
|
||||
hslash: ['210F',{variantForm: true}],
|
||||
varnothing: ['2205',{variantForm: true}],
|
||||
blacktriangle: '25B2',
|
||||
triangledown: '25BD',
|
||||
blacktriangledown: '25BC',
|
||||
square: '25A1',
|
||||
Box: '25A1',
|
||||
blacksquare: '25A0',
|
||||
lozenge: '25CA',
|
||||
Diamond: '25CA',
|
||||
blacklozenge: '29EB',
|
||||
circledS: ['24C8',{mathvariant: MML.VARIANT.NORMAL}],
|
||||
bigstar: '2605',
|
||||
// angle: '2220', // in MathJax_Main
|
||||
sphericalangle: '2222',
|
||||
measuredangle: '2221',
|
||||
nexists: '2204',
|
||||
complement: '2201',
|
||||
mho: '2127',
|
||||
eth: ['00F0',{mathvariant: MML.VARIANT.NORMAL}],
|
||||
Finv: '2132',
|
||||
diagup: '2571',
|
||||
Game: '2141',
|
||||
diagdown: '2572',
|
||||
Bbbk: ['006B',{mathvariant: MML.VARIANT.DOUBLESTRUCK}],
|
||||
|
||||
yen: '00A5',
|
||||
circledR: '00AE',
|
||||
checkmark: '2713',
|
||||
maltese: '2720'
|
||||
},
|
||||
|
||||
mathchar0mo: {
|
||||
// Binary operators
|
||||
dotplus: '2214',
|
||||
ltimes: '22C9',
|
||||
smallsetminus: ['2216',{variantForm: true}],
|
||||
rtimes: '22CA',
|
||||
Cap: '22D2',
|
||||
doublecap: '22D2',
|
||||
leftthreetimes: '22CB',
|
||||
Cup: '22D3',
|
||||
doublecup: '22D3',
|
||||
rightthreetimes: '22CC',
|
||||
barwedge: '22BC',
|
||||
curlywedge: '22CF',
|
||||
veebar: '22BB',
|
||||
curlyvee: '22CE',
|
||||
doublebarwedge: '2A5E',
|
||||
boxminus: '229F',
|
||||
circleddash: '229D',
|
||||
boxtimes: '22A0',
|
||||
circledast: '229B',
|
||||
boxdot: '22A1',
|
||||
circledcirc: '229A',
|
||||
boxplus: '229E',
|
||||
centerdot: '22C5',
|
||||
divideontimes: '22C7',
|
||||
intercal: '22BA',
|
||||
|
||||
// Binary relations
|
||||
leqq: '2266',
|
||||
geqq: '2267',
|
||||
leqslant: '2A7D',
|
||||
geqslant: '2A7E',
|
||||
eqslantless: '2A95',
|
||||
eqslantgtr: '2A96',
|
||||
lesssim: '2272',
|
||||
gtrsim: '2273',
|
||||
lessapprox: '2A85',
|
||||
gtrapprox: '2A86',
|
||||
approxeq: '224A',
|
||||
lessdot: '22D6',
|
||||
gtrdot: '22D7',
|
||||
lll: '22D8',
|
||||
llless: '22D8',
|
||||
ggg: '22D9',
|
||||
gggtr: '22D9',
|
||||
lessgtr: '2276',
|
||||
gtrless: '2277',
|
||||
lesseqgtr: '22DA',
|
||||
gtreqless: '22DB',
|
||||
lesseqqgtr: '2A8B',
|
||||
gtreqqless: '2A8C',
|
||||
doteqdot: '2251',
|
||||
Doteq: '2251',
|
||||
eqcirc: '2256',
|
||||
risingdotseq: '2253',
|
||||
circeq: '2257',
|
||||
fallingdotseq: '2252',
|
||||
triangleq: '225C',
|
||||
backsim: '223D',
|
||||
thicksim: ['223C',{variantForm: true}],
|
||||
backsimeq: '22CD',
|
||||
thickapprox: '2248',
|
||||
subseteqq: '2AC5',
|
||||
supseteqq: '2AC6',
|
||||
Subset: '22D0',
|
||||
Supset: '22D1',
|
||||
sqsubset: '228F',
|
||||
sqsupset: '2290',
|
||||
preccurlyeq: '227C',
|
||||
succcurlyeq: '227D',
|
||||
curlyeqprec: '22DE',
|
||||
curlyeqsucc: '22DF',
|
||||
precsim: '227E',
|
||||
succsim: '227F',
|
||||
precapprox: '2AB7',
|
||||
succapprox: '2AB8',
|
||||
vartriangleleft: '22B2',
|
||||
lhd: '22B2',
|
||||
vartriangleright: '22B3',
|
||||
rhd: '22B3',
|
||||
trianglelefteq: '22B4',
|
||||
unlhd: '22B4',
|
||||
trianglerighteq: '22B5',
|
||||
unrhd: '22B5',
|
||||
vDash: '22A8',
|
||||
Vdash: '22A9',
|
||||
Vvdash: '22AA',
|
||||
smallsmile: '2323',
|
||||
shortmid: ['2223',{variantForm: true}],
|
||||
smallfrown: '2322',
|
||||
shortparallel: ['2225',{variantForm: true}],
|
||||
bumpeq: '224F',
|
||||
between: '226C',
|
||||
Bumpeq: '224E',
|
||||
pitchfork: '22D4',
|
||||
varpropto: '221D',
|
||||
backepsilon: '220D',
|
||||
blacktriangleleft: '25C0',
|
||||
blacktriangleright: '25B6',
|
||||
therefore: '2234',
|
||||
because: '2235',
|
||||
eqsim: '2242',
|
||||
vartriangle: ['25B3',{variantForm: true}],
|
||||
Join: '22C8',
|
||||
|
||||
// Negated relations
|
||||
nless: '226E',
|
||||
ngtr: '226F',
|
||||
nleq: '2270',
|
||||
ngeq: '2271',
|
||||
nleqslant: ['2A87',{variantForm: true}],
|
||||
ngeqslant: ['2A88',{variantForm: true}],
|
||||
nleqq: ['2270',{variantForm: true}],
|
||||
ngeqq: ['2271',{variantForm: true}],
|
||||
lneq: '2A87',
|
||||
gneq: '2A88',
|
||||
lneqq: '2268',
|
||||
gneqq: '2269',
|
||||
lvertneqq: ['2268',{variantForm: true}],
|
||||
gvertneqq: ['2269',{variantForm: true}],
|
||||
lnsim: '22E6',
|
||||
gnsim: '22E7',
|
||||
lnapprox: '2A89',
|
||||
gnapprox: '2A8A',
|
||||
nprec: '2280',
|
||||
nsucc: '2281',
|
||||
npreceq: ['22E0',{variantForm: true}],
|
||||
nsucceq: ['22E1',{variantForm: true}],
|
||||
precneqq: '2AB5',
|
||||
succneqq: '2AB6',
|
||||
precnsim: '22E8',
|
||||
succnsim: '22E9',
|
||||
precnapprox: '2AB9',
|
||||
succnapprox: '2ABA',
|
||||
nsim: '2241',
|
||||
ncong: '2246',
|
||||
nshortmid: ['2224',{variantForm: true}],
|
||||
nshortparallel: ['2226',{variantForm: true}],
|
||||
nmid: '2224',
|
||||
nparallel: '2226',
|
||||
nvdash: '22AC',
|
||||
nvDash: '22AD',
|
||||
nVdash: '22AE',
|
||||
nVDash: '22AF',
|
||||
ntriangleleft: '22EA',
|
||||
ntriangleright: '22EB',
|
||||
ntrianglelefteq: '22EC',
|
||||
ntrianglerighteq: '22ED',
|
||||
nsubseteq: '2288',
|
||||
nsupseteq: '2289',
|
||||
nsubseteqq: ['2288',{variantForm: true}],
|
||||
nsupseteqq: ['2289',{variantForm: true}],
|
||||
subsetneq: '228A',
|
||||
supsetneq: '228B',
|
||||
varsubsetneq: ['228A',{variantForm: true}],
|
||||
varsupsetneq: ['228B',{variantForm: true}],
|
||||
subsetneqq: '2ACB',
|
||||
supsetneqq: '2ACC',
|
||||
varsubsetneqq: ['2ACB',{variantForm: true}],
|
||||
varsupsetneqq: ['2ACC',{variantForm: true}],
|
||||
|
||||
|
||||
// Arrows
|
||||
leftleftarrows: '21C7',
|
||||
rightrightarrows: '21C9',
|
||||
leftrightarrows: '21C6',
|
||||
rightleftarrows: '21C4',
|
||||
Lleftarrow: '21DA',
|
||||
Rrightarrow: '21DB',
|
||||
twoheadleftarrow: '219E',
|
||||
twoheadrightarrow: '21A0',
|
||||
leftarrowtail: '21A2',
|
||||
rightarrowtail: '21A3',
|
||||
looparrowleft: '21AB',
|
||||
looparrowright: '21AC',
|
||||
leftrightharpoons: '21CB',
|
||||
rightleftharpoons: ['21CC',{variantForm: true}],
|
||||
curvearrowleft: '21B6',
|
||||
curvearrowright: '21B7',
|
||||
circlearrowleft: '21BA',
|
||||
circlearrowright: '21BB',
|
||||
Lsh: '21B0',
|
||||
Rsh: '21B1',
|
||||
upuparrows: '21C8',
|
||||
downdownarrows: '21CA',
|
||||
upharpoonleft: '21BF',
|
||||
upharpoonright: '21BE',
|
||||
downharpoonleft: '21C3',
|
||||
restriction: '21BE',
|
||||
multimap: '22B8',
|
||||
downharpoonright: '21C2',
|
||||
leftrightsquigarrow: '21AD',
|
||||
rightsquigarrow: '21DD',
|
||||
leadsto: '21DD',
|
||||
dashrightarrow: '21E2',
|
||||
dashleftarrow: '21E0',
|
||||
|
||||
// Negated arrows
|
||||
nleftarrow: '219A',
|
||||
nrightarrow: '219B',
|
||||
nLeftarrow: '21CD',
|
||||
nRightarrow: '21CF',
|
||||
nleftrightarrow: '21AE',
|
||||
nLeftrightarrow: '21CE'
|
||||
},
|
||||
|
||||
delimiter: {
|
||||
// corners
|
||||
"\\ulcorner": '250C',
|
||||
"\\urcorner": '2510',
|
||||
"\\llcorner": '2514',
|
||||
"\\lrcorner": '2518'
|
||||
},
|
||||
|
||||
macros: {
|
||||
implies: ['Macro','\\;\\Longrightarrow\\;'],
|
||||
impliedby: ['Macro','\\;\\Longleftarrow\\;']
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var REL = MML.mo.OPTYPES.REL;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
infix: {
|
||||
'\u2322': REL, // smallfrown
|
||||
'\u2323': REL, // smallsmile
|
||||
'\u25B3': REL, // vartriangle
|
||||
'\uE006': REL, // nshortmid
|
||||
'\uE007': REL, // nshortparallel
|
||||
'\uE00C': REL, // lvertneqq
|
||||
'\uE00D': REL, // gvertneqq
|
||||
'\uE00E': REL, // ngeqq
|
||||
'\uE00F': REL, // ngeqslant
|
||||
'\uE010': REL, // nleqslant
|
||||
'\uE011': REL, // nleqq
|
||||
'\uE016': REL, // nsubseteqq
|
||||
'\uE017': REL, // varsubsetneqq
|
||||
'\uE018': REL, // nsupseteqq
|
||||
'\uE019': REL, // varsupsetneqq
|
||||
'\uE01A': REL, // varsubsetneq
|
||||
'\uE01B': REL, // varsupsetneq
|
||||
'\uE04B': REL, // npreceq
|
||||
'\uE04F': REL // nsucceq
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (MathJax.Hub.Browser.isMSIE) {
|
||||
MathJax.InputJax.TeX.Definitions.mathchar0mi.digamma = ['03DC',{variantForm: true}];
|
||||
MathJax.InputJax.TeX.Definitions.mathchar0mi.varkappa = ['03F0',{variantForm: true}];
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
|
||||
var HTMLCSS = MathJax.OutputJax["HTML-CSS"];
|
||||
var TEXDEF = MathJax.InputJax.TeX.Definitions;
|
||||
var VARIANT = HTMLCSS.FONTDATA.VARIANT;
|
||||
if (HTMLCSS.fontInUse === "TeX") {
|
||||
VARIANT["-TeX-variant"] = {
|
||||
fonts: ["MathJax_AMS","MathJax_Main","MathJax_Size1"],
|
||||
remap: {0x2268: 0xE00C, 0x2269: 0xE00D, 0x2270: 0xE011, 0x2271: 0xE00E,
|
||||
0x2A87: 0xE010, 0x2A88: 0xE00F, 0x2224: 0xE006, 0x2226: 0xE007,
|
||||
0x2288: 0xE016, 0x2289: 0xE018, 0x228A: 0xE01A, 0x228B: 0xE01B,
|
||||
0x2ACB: 0xE017, 0x2ACC: 0xE019, 0x03DC: 0xE008, 0x03F0: 0xE009}
|
||||
};
|
||||
if (HTMLCSS.msieIE6) {
|
||||
MathJax.Hub.Insert(VARIANT["-TeX-variant"].remap,{
|
||||
0x2190:[0xE2C1,"-WinIE6"], 0x2192:[0xE2C0,"-WinIE6"],
|
||||
0x2223:[0xE2C2,"-WinIE6"], 0x2225:[0xE2C3,"-WinIE6"],
|
||||
0x223C:[0xE2C4,"-WinIE6"], 0x25B3:[0xE2D3,"-WinIE6"]
|
||||
});
|
||||
}
|
||||
}
|
||||
if (HTMLCSS.fontInUse === "STIX") {
|
||||
TEXDEF.mathchar0mi.varnothing = '2205';
|
||||
TEXDEF.mathchar0mi.hslash = '210F';
|
||||
TEXDEF.mathchar0mi.blacktriangle = '25B4';
|
||||
TEXDEF.mathchar0mi.blacktriangledown = '25BE';
|
||||
TEXDEF.mathchar0mi.square = '25FB';
|
||||
TEXDEF.mathchar0mi.blacksquare = '25FC';
|
||||
TEXDEF.mathchar0mi.vartriangle = ['25B3',{mathsize:"71%"}];
|
||||
TEXDEF.mathchar0mi.triangledown = ['25BD',{mathsize:"71%"}];
|
||||
TEXDEF.mathchar0mo.blacktriangleleft = '25C2';
|
||||
TEXDEF.mathchar0mo.blacktriangleright = '25B8';
|
||||
TEXDEF.mathchar0mo.smallsetminus = '2216';
|
||||
MathJax.Hub.Insert(VARIANT["-STIX-variant"],{
|
||||
remap: {0x2A87: 0xE010, 0x2A88: 0xE00F, 0x2270: 0xE011, 0x2271: 0xE00E,
|
||||
0x22E0: 0xE04B, 0x22E1: 0xE04F, 0x2288: 0xE016, 0x2289: 0xE018}
|
||||
});
|
||||
}
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX AMSsymbols Ready");
|
||||
|
||||
});
|
||||
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMSsymbols.js");
|
||||
@@ -1,43 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/autobold.js
|
||||
*
|
||||
* Adds \boldsymbol around mathematics that appears in a section
|
||||
* of an HTML page that is in bold.
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var oldPrefilter = TEX.prefilterMath;
|
||||
|
||||
TEX.prefilterMath = function (math,displaystyle,script) {
|
||||
var span = script.parentNode.insertBefore(document.createElement("span"),script);
|
||||
span.visibility = "hidden";
|
||||
span.style.fontFamily = "Times, serif";
|
||||
span.appendChild(document.createTextNode("ABCXYZabcxyz"));
|
||||
var W = span.offsetWidth;
|
||||
span.style.fontWeight = "bold";
|
||||
if (span.offsetWidth == W) {math = "\\bf {"+math+"}"}
|
||||
span.parentNode.removeChild(span);
|
||||
return oldPrefilter.call(TEX,math,displaystyle,script);
|
||||
};
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX autobold Ready");
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/autobold.js");
|
||||
@@ -1,109 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/boldsymbol.js
|
||||
*
|
||||
* Implements the \boldsymbol{...} command to make bold
|
||||
* versions of all math characters (not just variables).
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var TEXDEF = TEX.Definitions;
|
||||
|
||||
var BOLDVARIANT = {};
|
||||
BOLDVARIANT[MML.VARIANT.NORMAL] = MML.VARIANT.BOLD;
|
||||
BOLDVARIANT[MML.VARIANT.ITALIC] = MML.VARIANT.BOLDITALIC;
|
||||
BOLDVARIANT[MML.VARIANT.FRAKTUR] = MML.VARIANT.BOLDFRAKTUR;
|
||||
BOLDVARIANT[MML.VARIANT.SCRIPT] = MML.VARIANT.BOLDSCRIPT;
|
||||
BOLDVARIANT[MML.VARIANT.SANSSERIF] = MML.VARIANT.BOLDSANSSERIF;
|
||||
BOLDVARIANT["-tex-caligraphic"] = "-tex-caligraphic-bold";
|
||||
BOLDVARIANT["-tex-oldstyle"] = "-tex-oldstyle-bold";
|
||||
|
||||
TEXDEF.macros.boldsymbol = 'Boldsymbol';
|
||||
|
||||
TEX.Parse.Augment({
|
||||
mmlToken: function (token) {
|
||||
if (this.stack.env.boldsymbol) {
|
||||
var variant = token.Get("mathvariant");
|
||||
if (variant == null) {token.mathvariant = MML.VARIANT.BOLD}
|
||||
else {token.mathvariant = (BOLDVARIANT[variant]||variant)}
|
||||
}
|
||||
return token;
|
||||
},
|
||||
|
||||
Boldsymbol: function (name) {
|
||||
var boldsymbol = this.stack.env.boldsymbol,
|
||||
font = this.stack.env.font;
|
||||
this.stack.env.boldsymbol = true;
|
||||
this.stack.env.font = null;
|
||||
var mml = this.ParseArg(name);
|
||||
this.stack.env.font = font;
|
||||
this.stack.env.boldsymbol = boldsymbol;
|
||||
this.Push(mml);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
|
||||
var HTMLCSS = MathJax.OutputJax["HTML-CSS"];
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var FONTS = HTMLCSS.FONTDATA.FONTS;
|
||||
var VARIANT = HTMLCSS.FONTDATA.VARIANT;
|
||||
|
||||
if (HTMLCSS.fontInUse === "TeX") {
|
||||
FONTS["MathJax_Caligraphic-bold"] = "Caligraphic/Bold/Main.js";
|
||||
|
||||
VARIANT["-tex-caligraphic-bold"] =
|
||||
{fonts:["MathJax_Caligraphic-bold","MathJax_Main-bold","MathJax_Main","MathJax_Math","MathJax_Size1"],
|
||||
offsetA: 0x41, variantA: "bold-italic"};
|
||||
VARIANT["-tex-oldstyle-bold"] =
|
||||
{fonts:["MathJax_Caligraphic-bold","MathJax_Main-bold","MathJax_Main","MathJax_Math","MathJax_Size1"]};
|
||||
|
||||
if (HTMLCSS.msieCheckGreek && HTMLCSS.Font.testFont({
|
||||
family:"MathJax_Greek", weight:"bold", style:"italic", testString: HTMLCSS.msieCheckGreek
|
||||
})) {
|
||||
VARIANT["bold-italic"].offsetG = 0x391; VARIANT["bold-italic"].variantG = "-Greek-Bold-Italic";
|
||||
VARIANT["-Greek-Bold-Italic"] = {fonts:["MathJax_Greek-bold-italic"]};
|
||||
FONTS["MathJax_Greek-bold-italic"] = "Greek/BoldItalic/Main.js";
|
||||
}
|
||||
|
||||
if (MathJax.Hub.Browser.isChrome && !MathJax.Hub.Browser.versionAtLeast("5.0")) {
|
||||
VARIANT["-tex-caligraphic-bold"].remap = {0x54: [0xE2F0,"-WinChrome"]};
|
||||
}
|
||||
|
||||
} else if (HTMLCSS.fontInUse === "STIX") {
|
||||
VARIANT["-tex-caligraphic-bold"] = {
|
||||
fonts:["STIXGeneral-bold-italic","STIXNonUnicode-bold-italic","STIXNonUnicode","STIXGeneral","STIXSizeOneSym"],
|
||||
offsetA: 0xE247, noLowerCase: 1
|
||||
};
|
||||
VARIANT["-tex-oldstyle-bold"] = {
|
||||
fonts:["STIXGeneral-bold","STIXNonUnicode-bold","STIXGeneral","STIXSizeOneSym"], offsetN: 0xE263,
|
||||
remap: {0xE264: 0xE267, 0xE265: 0xE26B, 0xE266: 0xE26F, 0xE267: 0xE273,
|
||||
0xE268: 0xE277, 0xE269: 0xE27B, 0xE26A: 0xE27F, 0xE26B: 0xE283,
|
||||
0xE26C: 0xE287}
|
||||
};
|
||||
}
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX boldsymbol Ready");
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/boldsymbol.js");
|
||||
@@ -1,65 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/mathchoice.js
|
||||
*
|
||||
* Implements the \mathchoice macro (rarely used)
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var TEXDEF = TEX.Definitions;
|
||||
|
||||
TEXDEF.macros.mathchoice = 'MathChoice';
|
||||
|
||||
TEX.Parse.Augment({
|
||||
|
||||
MathChoice: function (name) {
|
||||
var D = this.ParseArg(name),
|
||||
T = this.ParseArg(name),
|
||||
S = this.ParseArg(name),
|
||||
SS = this.ParseArg(name);
|
||||
this.Push(MML.TeXmathchoice(D,T,S,SS));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
MML.TeXmathchoice = MML.mbase.Subclass({
|
||||
type: "TeXmathchoice",
|
||||
choice: function () {
|
||||
var values = this.getValues("displaystyle","scriptlevel");
|
||||
if (values.scriptlevel > 0) {return Math.min(3,values.scriptlevel + 1)}
|
||||
return (values.displaystyle ? 0 : 1);
|
||||
},
|
||||
setTeXclass: function (prev) {return this.Core().setTeXclass(prev)},
|
||||
isSpacelike: function () {return this.Core().isSpacelike()},
|
||||
isEmbellished: function () {return this.Core().isEmbellished()},
|
||||
Core: function () {return this.data[this.choice()]},
|
||||
toHTML: function (span) {
|
||||
span = this.HTMLcreateSpan(span);
|
||||
span.bbox = this.Core().toHTML(span).bbox;
|
||||
return span;
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX mathchoice Ready");
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/mathchoice.js");
|
||||
@@ -1,185 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/newcommand.js
|
||||
*
|
||||
* Implements the \newcommand, \newenvironment and \def
|
||||
* macros, and is loaded automatically when needed.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var TEXDEF = TEX.Definitions;
|
||||
|
||||
MathJax.Hub.Insert(TEXDEF,{
|
||||
macros: {
|
||||
newcommand: 'NewCommand',
|
||||
newenvironment: 'NewEnvironment',
|
||||
def: 'MacroDef'
|
||||
}
|
||||
})
|
||||
|
||||
TEX.Parse.Augment({
|
||||
|
||||
/*
|
||||
* Implement \newcommand{\name}[n]{...}
|
||||
*/
|
||||
NewCommand: function (name) {
|
||||
var cs = this.trimSpaces(this.GetArgument(name)),
|
||||
n = this.trimSpaces(this.GetBrackets(name)),
|
||||
def = this.GetArgument(name);
|
||||
if (n === '') {n = null}
|
||||
if (cs.charAt(0) === "\\") {cs = cs.substr(1)}
|
||||
if (!cs.match(/^(.|[a-z]+)$/i)) {TEX.Error("Illegal control sequence name for "+name)}
|
||||
if (n != null && !n.match(/^[0-9]+$/)) {TEX.Error("Illegal number of parameters specified in "+name)}
|
||||
TEXDEF.macros[cs] = ['Macro',def,n];
|
||||
},
|
||||
|
||||
/*
|
||||
* Implement \newenvironment{name}[n]{begincmd}{endcmd}
|
||||
*/
|
||||
NewEnvironment: function (name) {
|
||||
var env = this.trimSpaces(this.GetArgument(name)),
|
||||
n = this.trimSpaces(this.GetBrackets(name)),
|
||||
bdef = this.GetArgument(name),
|
||||
edef = this.GetArgument(name);
|
||||
if (n === '') {n = null}
|
||||
if (n != null && !n.match(/^[0-9]+$/)) {TEX.Error("Illegal number of parameters specified in "+name)}
|
||||
TEXDEF.environment[env] = ['BeginEnv','EndEnv',bdef,edef,n];
|
||||
},
|
||||
|
||||
/*
|
||||
* Implement \def command
|
||||
*/
|
||||
MacroDef: function (name) {
|
||||
var cs = this.GetCSname(name),
|
||||
params = this.GetTemplate(name,"\\"+cs),
|
||||
def = this.GetArgument(name);
|
||||
if (!(params instanceof Array)) {TEXDEF.macros[cs] = ['Macro',def,params]}
|
||||
else {TEXDEF.macros[cs] = ['MacroWithTemplate',def,params[0],params[1]]}
|
||||
},
|
||||
|
||||
/*
|
||||
* Get a CS name or give an error
|
||||
*/
|
||||
GetCSname: function (cmd) {
|
||||
var c = this.GetNext();
|
||||
if (c !== "\\") {TEX.Error("\\ must be followed by a control sequence")}
|
||||
var cs = this.trimSpaces(this.GetArgument(cmd));
|
||||
return cs.substr(1);
|
||||
},
|
||||
|
||||
/*
|
||||
* Get a \def parameter template
|
||||
*/
|
||||
GetTemplate: function (cmd,cs) {
|
||||
var c, params = [], n = 0;
|
||||
c = this.GetNext(); var i = this.i;
|
||||
while (this.i < this.string.length) {
|
||||
c = this.GetNext();
|
||||
if (c === '#') {
|
||||
if (i !== this.i) {params[n] = this.string.substr(i,this.i-i)}
|
||||
c = this.string.charAt(++this.i);
|
||||
if (!c.match(/^[1-9]$/)) {TEX.Error("Illegal use of # in template for "+cs)}
|
||||
if (parseInt(c) != ++n) {TEX.Error("Parameters for "+cs+" must be numbered sequentially")}
|
||||
i = this.i+1;
|
||||
} else if (c === '{') {
|
||||
if (i !== this.i) {params[n] = this.string.substr(i,this.i-i)}
|
||||
if (params.length > 0) {return [n,params]} else {return n}
|
||||
}
|
||||
this.i++;
|
||||
}
|
||||
TEX.Error("Missing replacement string for definition of "+cmd);
|
||||
},
|
||||
|
||||
/*
|
||||
* Process a macro with a parameter template
|
||||
*/
|
||||
MacroWithTemplate: function (name,text,n,params) {
|
||||
if (n) {
|
||||
var args = [], c = this.GetNext();
|
||||
if (params[0] && !this.MatchParam(params[0]))
|
||||
{TEX.Error("Use of "+name+" doesn't match its definition")}
|
||||
for (var i = 0; i < n; i++) {args.push(this.GetParameter(name,params[i+1]))}
|
||||
text = this.SubstituteArgs(args,text);
|
||||
}
|
||||
this.string = this.AddArgs(text,this.string.slice(this.i));
|
||||
this.i = 0;
|
||||
},
|
||||
|
||||
/*
|
||||
* Process a user-defined environment
|
||||
*/
|
||||
BeginEnv: function (begin,bdef,edef,n) {
|
||||
if (n) {
|
||||
var args = [];
|
||||
for (var i = 0; i < n; i++) {args.push(this.GetArgument("\\begin{"+name+"}"))}
|
||||
bdef = this.SubstituteArgs(args,bdef);
|
||||
edef = this.SubstituteArgs(args,edef);
|
||||
}
|
||||
begin.edef = edef;
|
||||
this.string = this.AddArgs(bdef,this.string.slice(this.i)); this.i = 0;
|
||||
return begin;
|
||||
},
|
||||
EndEnv: function (begin,row) {
|
||||
this.string = this.AddArgs(begin.edef,this.string.slice(this.i)); this.i = 0
|
||||
return row;
|
||||
},
|
||||
|
||||
/*
|
||||
* Find a single parameter delimited by a trailing template
|
||||
*/
|
||||
GetParameter: function (name,param) {
|
||||
if (param == null) {return this.GetArgument(name)}
|
||||
var i = this.i, j = 0, hasBraces = 0;
|
||||
while (this.i < this.string.length) {
|
||||
if (this.string.charAt(this.i) === '{') {
|
||||
if (this.i === i) {hasBraces = 1}
|
||||
this.GetArgument(name); j = this.i - i;
|
||||
} else if (this.MatchParam(param)) {
|
||||
if (hasBraces) {i++; j -= 2}
|
||||
return this.string.substr(i,j);
|
||||
} else {
|
||||
this.i++; j++; hasBraces = 0;
|
||||
}
|
||||
}
|
||||
TEX.Error("Runaway argument for "+name+"?");
|
||||
},
|
||||
|
||||
/*
|
||||
* Check if a template is at the current location.
|
||||
* (The match must be exact, with no spacing differences. TeX is
|
||||
* a little more forgiving than this about spaces after macro names)
|
||||
*/
|
||||
MatchParam: function (param) {
|
||||
if (this.string.substr(this.i,param.length) !== param) {return 0}
|
||||
this.i += param.length;
|
||||
return 1;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
TEX.Environment = function (name) {
|
||||
TEXDEF.environment[name] = ['BeginEnv','EndEnv'].concat([].slice.call(arguments,1));
|
||||
}
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX newcommand Ready");
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/newcommand.js");
|
||||
@@ -1,169 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/noErrors.js
|
||||
*
|
||||
* Prevents the TeX error messages from being displayed and shows the
|
||||
* original TeX code instead. You can configure whether the dollar signs
|
||||
* are shown or not for in-line math, and whether to put all the TeX on
|
||||
* one line or use multiple-lines.
|
||||
*
|
||||
* To configure this extension, use
|
||||
*
|
||||
* MathJax.Hub.Configure({
|
||||
* TeX: {
|
||||
* noErrors: {
|
||||
* inlineDelimiters: ["",""], // or ["$","$"] or ["\\(","\\)"]
|
||||
* multiLine: true, // false for TeX on all one line
|
||||
* style: {
|
||||
* "font-family": "serif",
|
||||
* "font-size": "80%",
|
||||
* "color": "black",
|
||||
* "border": "1px solid"
|
||||
* // add any additional CSS styles that you want
|
||||
* // (be sure there is no extra comma at the end of the last item)
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* });
|
||||
*
|
||||
* Display-style math is always shown in multi-line format, and without
|
||||
* delimiters, as it will already be set off in its own centered
|
||||
* paragraph, like standard display mathematics.
|
||||
*
|
||||
* The default settings place the invalid TeX in a multi-line box with a
|
||||
* black border. If you want it to look as though the TeX is just part of
|
||||
* the paragraph, use
|
||||
*
|
||||
* MathJax.Hub.Configure({
|
||||
* TeX: {
|
||||
* noErrors: {
|
||||
* inlineDelimiters: ["$","$"], // or ["",""] or ["\\(","\\)"]
|
||||
* multiLine: false,
|
||||
* style: {
|
||||
* "font-size": "normal",
|
||||
* "border": ""
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* });
|
||||
*
|
||||
* You may also wish to set the font family, as the default is "serif"
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
(function () {
|
||||
|
||||
//
|
||||
// The configuration defaults, augmented by the user settings
|
||||
//
|
||||
MathJax.Extension["TeX/noErrors"] = {
|
||||
config: MathJax.Hub.Insert({
|
||||
multiLine: true,
|
||||
inlineDelimiters: ["",""], // or use ["$","$"] or ["\\(","\\)"]
|
||||
style: {
|
||||
"font-family": "serif",
|
||||
"font-size": "80%",
|
||||
"color": "black",
|
||||
"border": "1px solid"
|
||||
}
|
||||
},((MathJax.Hub.config.TeX||{}).noErrors||{}))
|
||||
};
|
||||
|
||||
var CONFIG = MathJax.Extension["TeX/noErrors"].config;
|
||||
var NBSP = String.fromCharCode(0xA0);
|
||||
|
||||
MathJax.Hub.Config({
|
||||
TeX: {
|
||||
Augment: {
|
||||
//
|
||||
// Make error messages be the original TeX code
|
||||
// Mark them as errors and multi-line or not, and for
|
||||
// multi-line TeX, make spaces non-breakable (to get formatting right)
|
||||
//
|
||||
formatError: function (err,math,displaystyle,script) {
|
||||
var delim = CONFIG.inlineDelimiters;
|
||||
var multiLine = (displaystyle || CONFIG.multiLine);
|
||||
if (!displaystyle) {math = delim[0] + math + delim[1]}
|
||||
if (multiLine) {math = math.replace(/ /g,NBSP)} else {math = math.replace(/\n/g," ")}
|
||||
return MathJax.ElementJax.mml.merror(math).With({isError:true, multiLine: multiLine});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"HTML-CSS": {
|
||||
styles: {
|
||||
".MathJax .merror": MathJax.Hub.Insert({
|
||||
"font-style": null,
|
||||
"background-color": null,
|
||||
"vertical-align": (MathJax.Hub.Browser.isMSIE && CONFIG.multiLine ? "-2px" : "")
|
||||
},CONFIG.style)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
})();
|
||||
|
||||
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
var HTMLCSS = MathJax.OutputJax["HTML-CSS"];
|
||||
var CONFIG = MathJax.Extension["TeX/noErrors"].config;
|
||||
|
||||
//
|
||||
// Override math toHTML routine so that error messages
|
||||
// don't have the clipping and other unneeded overhead
|
||||
//
|
||||
var math_toHTML = MML.math.prototype.toHTML;
|
||||
MML.math.Augment({
|
||||
toHTML: function (span) {
|
||||
if (this.data[0] && this.data[0].data[0] && this.data[0].data[0].isError) {
|
||||
return this.data[0].data[0].toHTML(span);
|
||||
}
|
||||
return math_toHTML.call(this,span);
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
// Override merror toHTML routine so that it puts out the
|
||||
// TeX code in an inlin-block with line breaks as in the original
|
||||
//
|
||||
MML.merror.Augment({
|
||||
toHTML: function (span) {
|
||||
span = this.HTMLcreateSpan(span);
|
||||
if (this.multiLine) {span.style.display = "inline-block"}
|
||||
var text = this.data[0].data.join("").split(/\n/);
|
||||
for (var i = 0, m = text.length; i < m; i++) {
|
||||
HTMLCSS.addText(span,text[i]);
|
||||
if (i !== m-1) {HTMLCSS.addElement(span,"br")}
|
||||
}
|
||||
var HD = HTMLCSS.getHD(span.parentNode), W = HTMLCSS.getW(span.parentNode);
|
||||
if (m > 1) {
|
||||
var H = (HD.h + HD.d)/2, x = HTMLCSS.TeX.x_height/2;
|
||||
var scale = HTMLCSS.config.styles[".MathJax .merror"]["font-size"];
|
||||
if (scale && scale.match(/%/)) {x *= parseInt(scale)/100}
|
||||
span.parentNode.style.verticalAlign = HTMLCSS.Em(HD.d+(x-H));
|
||||
HD.h = x + H; HD.d = H - x;
|
||||
}
|
||||
span.bbox = {h: HD.h, d: HD.d, w: W, lw: 0, rw: W};
|
||||
return span;
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX noErrors Ready");
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/noErrors.js");
|
||||
@@ -1,131 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/unicode.js
|
||||
*
|
||||
* Implements the \unicode extension to TeX to allow arbitrary unicode
|
||||
* code points to be entered into the TeX file. You can specify
|
||||
* the height and depth of the character (the width is determined by
|
||||
* the browser), and the default font from which to take the character.
|
||||
*
|
||||
* Examples:
|
||||
* \unicode{65} % the character 'A'
|
||||
* \unicode{x41} % the character 'A'
|
||||
* \unicode[.55,0.05]{x22D6} % less-than with dot, with height .55 and depth 0.05
|
||||
* \unicode[.55,0.05][Geramond]{x22D6} % same taken from Geramond font
|
||||
* \unicode[Garamond]{x22D6} % same, but with default height, depth of .8,.2
|
||||
*
|
||||
* Once a size and font are provided for a given conde point, they need
|
||||
* not be specified again in subsequent \unicode calls for that character.
|
||||
* Note that a font list can be given, but Internet Explorer has a buggy
|
||||
* implementation of font-family where it only looks in the first
|
||||
* available font and if the glyph is not in that, it does not look at
|
||||
* later fonts, but goes directly to the default font as set in the
|
||||
* Internet-Options/Font panel. For this reason, the default font list is
|
||||
* "STIXGeneral,'Arial Unicode MS'", so if the user has STIX fonts, the
|
||||
* symbol will be taken from that (almost all the symbols are in
|
||||
* STIXGeneral), otherwise Arial Unicode MS is tried.
|
||||
*
|
||||
* To configure the default font list, use
|
||||
*
|
||||
* MathJax.Hub.Configure({
|
||||
* TeX: {
|
||||
* unicode: {
|
||||
* fonts: "STIXGeneral,'Arial Unicode MS'"
|
||||
* }
|
||||
* }
|
||||
* });
|
||||
*
|
||||
* The result of \unicode will have TeX class ORD (e.g., it will act like a
|
||||
* variable). Use \mathbin, \mathrel, etc, to specify a different class.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
//
|
||||
// The configuration defaults, augmented by the user settings
|
||||
//
|
||||
MathJax.Extension["TeX/unicode"] = {
|
||||
unicode: {},
|
||||
config: MathJax.Hub.Insert({
|
||||
fonts: "STIXGeneral,'Arial Unicode MS'"
|
||||
},((MathJax.Hub.config.TeX||{}).unicode||{}))
|
||||
};
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
var FONTS = MathJax.Extension["TeX/unicode"].config.fonts;
|
||||
var UNICODE = MathJax.Extension["TeX/unicode"].unicode;
|
||||
|
||||
//
|
||||
// Add \unicode macro
|
||||
//
|
||||
TEX.Definitions.macros.unicode = 'Unicode';
|
||||
//
|
||||
// Implementation of \unicode in parser
|
||||
//
|
||||
TEX.Parse.Augment({
|
||||
Unicode: function(name) {
|
||||
var HD = this.GetBrackets(name), font;
|
||||
if (HD) {
|
||||
HD = HD.replace(/ /g,"");
|
||||
if (HD.match(/^(\d+(\.\d*)?|\.\d+),(\d+(\.\d*)?|\.\d+)$/))
|
||||
{HD = HD.split(/,/); font = this.GetBrackets(name)} else {font = HD; HD = null}
|
||||
}
|
||||
var n = this.trimSpaces(this.GetArgument(name)),
|
||||
N = parseInt(n.match(/^x/) ? "0"+n : n);
|
||||
UNICODE[N] = [800,200,500,0,500,{isUnknown:true, isUnicode:true, font:FONTS}];
|
||||
if (HD) {
|
||||
UNICODE[N][0] = Math.floor(HD[0]*1000);
|
||||
UNICODE[N][1] = Math.floor(HD[1]*1000);
|
||||
}
|
||||
var variant = this.stack.env.font, def = {};
|
||||
if (font) {
|
||||
def.fontfamily = font;
|
||||
if (variant) {
|
||||
if (variant.match(/bold/)) {def.fontweight = "bold"}
|
||||
if (variant.match(/italic/)) {def.fontstyle = "italic"}
|
||||
}
|
||||
UNICODE[N][5].font = font+","+FONTS
|
||||
} else if (variant) {def.mathvariant = variant}
|
||||
this.Push(MML.mtext(MML.entity("#"+n)).With(def));
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
|
||||
var HTMLCSS = MathJax.OutputJax["HTML-CSS"];
|
||||
var UNICODE = MathJax.Extension["TeX/unicode"].unicode;
|
||||
|
||||
//
|
||||
// Override lookupChar to add unicode character to font
|
||||
//
|
||||
var save_lookupChar = HTMLCSS.lookupChar;
|
||||
HTMLCSS.Augment({
|
||||
lookupChar: function (variant,n) {
|
||||
var font = save_lookupChar.call(this,variant,n);
|
||||
if (font[n][5] && font[n][5].isUnknown && UNICODE[n]) {font[n] = UNICODE[n]}
|
||||
return font;
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX unicode Ready");
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/unicode.js");
|
||||
@@ -1,53 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/TeX/verb.js
|
||||
*
|
||||
* Implements the \verb|...| command for including text verbatim
|
||||
* (with no processing of macros or special characters).
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
var TEX = MathJax.InputJax.TeX;
|
||||
var TEXDEF = TEX.Definitions;
|
||||
|
||||
TEXDEF.macros.verb = 'Verb';
|
||||
|
||||
TEX.Parse.Augment({
|
||||
|
||||
/*
|
||||
* Implement \verb|...|
|
||||
*/
|
||||
Verb: function (name) {
|
||||
var c = this.GetNext(); var start = ++this.i;
|
||||
if (c == "" ) {TEX.Error(name+" requires an argument")}
|
||||
while (this.i < this.string.length && this.string.charAt(this.i) != c) {this.i++}
|
||||
if (this.i == this.string.length)
|
||||
{TEX.Error("Can't find closing delimiter for "+name)}
|
||||
var text = this.string.slice(start,this.i); this.i++;
|
||||
this.Push(MML.mtext(text).With({mathvariant:MML.VARIANT.MONOSPACE}));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
MathJax.Hub.Startup.signal.Post("TeX verb Ready");
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/verb.js");
|
||||
@@ -1,77 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/jsMath2jax.js
|
||||
*
|
||||
* Implements a jsMath to Jax preprocessor that locates jsMath-style
|
||||
* <SPAN CLASS="math">...</SPAN> and <DIV CLASS="math">...</DIV> tags
|
||||
* and replaces them with SCRIPT tags for processing by MathJax.
|
||||
* (Note: use the tex2jax preprocessor to convert TeX delimiters or
|
||||
* custom delimiters to MathJax SCRIPT tags. This preprocessor is
|
||||
* only for the SPAN and DIV form of jsMath delimiters).
|
||||
*
|
||||
* To use this preprocessor, include "jsMath2jax.js" in the extensions
|
||||
* array in your config/MathJax.js file, or the MathJax.Hub.Config() call
|
||||
* in your HTML document.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Extension.jsMath2jax = {
|
||||
config: {
|
||||
previewTeX: true, // Set to false to prevent preview strings from being inserted
|
||||
},
|
||||
|
||||
PreProcess: function (element) {
|
||||
if (!this.configured) {
|
||||
MathJax.Hub.Insert(this.config,(MathJax.Hub.config.jsMath2jax||{}));
|
||||
this.previewClass = MathJax.Hub.config.preRemoveClass;
|
||||
this.configured = true;
|
||||
}
|
||||
if (typeof(element) === "string") {element = document.getElementById(element)}
|
||||
if (!element) {element = this.config.element || document.body}
|
||||
var span = element.getElementsByTagName("span"), i, m;
|
||||
for (i = 0, m = span.length; i < m; i++)
|
||||
{if (String(span[i].className).match(/\bmath\b/)) {this.ConvertMath(span[i],"")}}
|
||||
var div = element.getElementsByTagName("div");
|
||||
for (i = 0, m = div.length; i < m; i++)
|
||||
{if (String(div[i].className).match(/\bmath\b/)) {this.ConvertMath(div[i],"; mode=display")}}
|
||||
},
|
||||
|
||||
ConvertMath: function (node,mode) {
|
||||
var parent = node.parentNode,
|
||||
script = this.CreateMathTag(mode,node.innerHTML);
|
||||
if (node.nextSibling) {parent.insertBefore(script,node.nextSibling)}
|
||||
else {parent.appendChild(script)}
|
||||
if (this.config.previewTeX) {
|
||||
node.className = String(node.className).replace(/\bmath\b/,this.previewClass);
|
||||
} else {
|
||||
parent.removeChild(node);
|
||||
}
|
||||
},
|
||||
|
||||
CreateMathTag: function (mode,tex) {
|
||||
var script = document.createElement("script");
|
||||
script.type = "math/tex" + mode;
|
||||
if (MathJax.Hub.Browser.isMSIE) {script.text = tex}
|
||||
else {script.appendChild(document.createTextNode(tex))}
|
||||
return script;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.jsMath2jax]);
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/jsMath2jax.js");
|
||||
@@ -1,101 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/mml2jax.js
|
||||
*
|
||||
* Implements the MathML to Jax preprocessor that locates <math> nodes
|
||||
* within the text of a document and replaces them with SCRIPT tags
|
||||
* for processing by MathJax.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Extension.mml2jax = {
|
||||
config: {
|
||||
element: null // The ID of the element to be processed
|
||||
// (defaults to full document)
|
||||
},
|
||||
MMLnamespace: "http://www.w3.org/1998/Math/MathML",
|
||||
|
||||
PreProcess: function (element) {
|
||||
if (!this.configured) {
|
||||
MathJax.Hub.Insert(this.config,(MathJax.Hub.config.mml2jax||{}));
|
||||
this.configured = true;
|
||||
}
|
||||
if (typeof(element) === "string") {element = document.getElementById(element)}
|
||||
if (!element) {element = this.config.element || document.body}
|
||||
var math = element.getElementsByTagName("math");
|
||||
if (math.length === 0 && element.getElementsByTagNameNS)
|
||||
{math = element.getElementsByTagNameNS(this.MMLnamespace,"math")}
|
||||
if (this.msieMathTagBug) {
|
||||
for (var i = math.length-1; i >= 0; i--) {
|
||||
if (math[i].nodeName === "MATH") {this.msieProcessMath(math[i])}
|
||||
else {this.ProcessMath(math[i])}
|
||||
}
|
||||
} else {
|
||||
for (var i = math.length-1; i >= 0; i--) {this.ProcessMath(math[i])}
|
||||
}
|
||||
},
|
||||
|
||||
ProcessMath: function (math) {
|
||||
var parent = math.parentNode;
|
||||
var script = document.createElement("script");
|
||||
script.type = "math/mml";
|
||||
parent.insertBefore(script,math);
|
||||
if (this.msieScriptBug) {
|
||||
var html = math.outerHTML; var prefix;
|
||||
html = html.replace(/<\?import .*?>/,"").replace(/<(\/?)m:/g,"<$1").replace(/ /g," ");
|
||||
script.text = html;
|
||||
parent.removeChild(math);
|
||||
} else {
|
||||
script.appendChild(math);
|
||||
}
|
||||
},
|
||||
|
||||
msieProcessMath: function (math) {
|
||||
var parent = math.parentNode;
|
||||
var script = document.createElement("script");
|
||||
script.type = "math/mml";
|
||||
parent.insertBefore(script,math);
|
||||
var mml = "";
|
||||
while (math && math.nodeName !== "/MATH") {
|
||||
if (math.nodeName === "#text" || math.nodeName === "#comment")
|
||||
{mml += math.nodeValue} else {mml += this.toLowerCase(math.outerHTML)}
|
||||
var node = math;
|
||||
math = math.nextSibling;
|
||||
node.parentNode.removeChild(node);
|
||||
}
|
||||
script.text = mml + "</math>";
|
||||
},
|
||||
toLowerCase: function (string) {
|
||||
var parts = string.split(/"/);
|
||||
for (var i = 0, m = parts.length; i < m; i += 2) {parts[i] = parts[i].toLowerCase()}
|
||||
return parts.join('"');
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
MathJax.Hub.Browser.Select({
|
||||
MSIE: function (browser) {
|
||||
MathJax.Hub.Insert(MathJax.Extension.mml2jax,{
|
||||
msieScriptBug: true,
|
||||
msieMathTagBug: true
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.mml2jax]);
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js");
|
||||
@@ -1,242 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/tex2jax.js
|
||||
*
|
||||
* Implements the TeX to Jax preprocessor that locates TeX code
|
||||
* within the text of a document and replaces it with SCRIPT tags
|
||||
* for processing by MathJax.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Extension.tex2jax = {
|
||||
config: {
|
||||
element: null, // The ID of the element to be processed
|
||||
// (defaults to full document)
|
||||
|
||||
inlineMath: [ // The start/stop pairs for in-line math
|
||||
['$','$'], // (comment out any you don't want, or add your own, but
|
||||
['\\(','\\)'] // be sure that you don't have an extra comma at the end)
|
||||
],
|
||||
|
||||
displayMath: [ // The start/stop pairs for display math
|
||||
['$$','$$'], // (comment out any you don't want, or add your own, but
|
||||
['\\[','\\]'] // be sure that you don't have an extra comma at the end)
|
||||
],
|
||||
|
||||
processEscapes: 0, // set to 1 to allow \$ to produce a dollar without
|
||||
// starting in-line math mode
|
||||
|
||||
processEnvironments: 1, // set to 1 to process \begin{xxx}...\end{xxx} outside
|
||||
// of math mode
|
||||
|
||||
previewTeX: 1 // set to 0 to not insert MathJax_Preview spans
|
||||
|
||||
},
|
||||
|
||||
PreProcess: function (element) {
|
||||
if (!this.configured) {
|
||||
MathJax.Hub.Insert(this.config,(MathJax.Hub.config.tex2jax||{}));
|
||||
this.configured = true;
|
||||
}
|
||||
if (typeof(element) === "string") {element = document.getElementById(element)}
|
||||
if (!element) {element = this.config.element || document.body}
|
||||
this.createPatterns();
|
||||
this.scanElement(element,element.nextSibling);
|
||||
},
|
||||
|
||||
createPatterns: function () {
|
||||
var starts = [], i, m, config = this.config;
|
||||
this.match = {};
|
||||
for (i = 0, m = config.inlineMath.length; i < m; i++) {
|
||||
starts.push(this.patternQuote(config.inlineMath[i][0]));
|
||||
this.match[config.inlineMath[i][0]] = {
|
||||
mode: "",
|
||||
end: config.inlineMath[i][1],
|
||||
pattern: this.endPattern(config.inlineMath[i][1])
|
||||
};
|
||||
}
|
||||
for (i = 0, m = config.displayMath.length; i < m; i++) {
|
||||
starts.push(this.patternQuote(config.displayMath[i][0]));
|
||||
this.match[config.displayMath[i][0]] = {
|
||||
mode: "; mode=display",
|
||||
end: config.displayMath[i][1],
|
||||
pattern: this.endPattern(config.displayMath[i][1])
|
||||
};
|
||||
}
|
||||
this.start = new RegExp(
|
||||
starts.sort(this.sortLength).join("|") +
|
||||
(config.processEnvironments ? "|\\\\begin\\{([^}]*)\\}" : "") +
|
||||
(config.processEscapes ? "|\\\\*\\\\\\\$" : ""), "g"
|
||||
);
|
||||
},
|
||||
|
||||
patternQuote: function (s) {return s.replace(/([\^$(){}+*?\-|\[\]\:\\])/g,'\\$1')},
|
||||
|
||||
endPattern: function (end) {
|
||||
return new RegExp(this.patternQuote(end)+"|\\\\.","g");
|
||||
},
|
||||
|
||||
sortLength: function (a,b) {
|
||||
if (a.length !== b.length) {return b.length - a.length}
|
||||
return (a == b ? 0 : (a < b ? -1 : 1));
|
||||
},
|
||||
|
||||
scanElement: function (element,stop,ignore) {
|
||||
var cname, tname;
|
||||
while (element && element != stop) {
|
||||
if (element.nodeName.toLowerCase() === '#text') {
|
||||
if (!ignore) {element = this.scanText(element)}
|
||||
} else {
|
||||
cname = (typeof(element.className) === "undefined" ? "" : element.className);
|
||||
tname = (typeof(element.tagName) === "undefined" ? "" : element.tagName);
|
||||
if (typeof(cname) !== "string") {cname = String(cname)} // jsxgraph uses non-string class names!
|
||||
if (element.firstChild && !cname.match(/(^| )MathJax/) &&
|
||||
!tname.match(/^(script|noscript|style|textarea|pre|code)$/i)) {
|
||||
ignore = (ignore || cname.match(/(^| )tex2jax_ignore( |$)/)) &&
|
||||
!cname.match(/(^| )tex2jax_process( |$)/);
|
||||
this.scanElement(element.firstChild,stop,ignore);
|
||||
}
|
||||
}
|
||||
if (element) {element = element.nextSibling}
|
||||
}
|
||||
},
|
||||
|
||||
scanText: function (element) {
|
||||
if (element.nodeValue.replace(/\s+/,'') == '') {return element}
|
||||
var match, prev;
|
||||
this.search = {start: true};
|
||||
this.pattern = this.start;
|
||||
while (element) {
|
||||
this.pattern.lastIndex = 0;
|
||||
while (element && element.nodeName.toLowerCase() === '#text' &&
|
||||
(match = this.pattern.exec(element.nodeValue))) {
|
||||
if (this.search.start) {element = this.startMatch(match,element)}
|
||||
else {element = this.endMatch(match,element)}
|
||||
}
|
||||
if (this.search.matched) {element = this.encloseMath(element)}
|
||||
if (element) {
|
||||
do {prev = element; element = element.nextSibling}
|
||||
while (element && (element.nodeName.toLowerCase() === 'br' ||
|
||||
element.nodeName.toLowerCase() === '#comment'));
|
||||
if (!element || element.nodeName !== '#text') {return prev}
|
||||
}
|
||||
}
|
||||
return element;
|
||||
},
|
||||
|
||||
startMatch: function (match,element) {
|
||||
var delim = this.match[match[0]];
|
||||
if (delim != null) { // a start delimiter
|
||||
this.search = {
|
||||
end: delim.end, mode: delim.mode,
|
||||
open: element, olen: match[0].length, opos: this.pattern.lastIndex - match[0].length
|
||||
};
|
||||
this.switchPattern(delim.pattern);
|
||||
} else if (match[0].substr(0,6) === "\\begin") { // \begin{...}
|
||||
this.search = {
|
||||
end: "\\end{"+match[1]+"}", mode: "; mode=display",
|
||||
open: element, olen: 0, opos: this.pattern.lastIndex - match[0].length,
|
||||
isBeginEnd: true
|
||||
};
|
||||
this.switchPattern(this.endPattern(this.search.end));
|
||||
} else { // escaped dollar signs
|
||||
var dollar = match[0].replace(/\\(.)/g,'$1');
|
||||
element.nodeValue = element.nodeValue.substr(0,match.index) + dollar +
|
||||
element.nodeValue.substr(match.index + match[0].length);
|
||||
this.pattern.lastIndex -= match[0].length - dollar.length;
|
||||
}
|
||||
return element;
|
||||
},
|
||||
|
||||
endMatch: function (match,element) {
|
||||
if (match[0] == this.search.end) {
|
||||
this.search.close = element;
|
||||
this.search.cpos = this.pattern.lastIndex;
|
||||
this.search.clen = (this.search.isBeginEnd ? 0 : match[0].length);
|
||||
this.search.matched = true;
|
||||
element = this.encloseMath(element);
|
||||
this.switchPattern(this.start);
|
||||
}
|
||||
return element;
|
||||
},
|
||||
|
||||
switchPattern: function (pattern) {
|
||||
pattern.lastIndex = this.pattern.lastIndex;
|
||||
this.pattern = pattern;
|
||||
this.search.start = (pattern === this.start);
|
||||
},
|
||||
|
||||
encloseMath: function (element) {
|
||||
var search = this.search, close = search.close, CLOSE;
|
||||
if (search.cpos === close.length) {close = close.nextSibling}
|
||||
else {close = close.splitText(search.cpos)}
|
||||
if (!close) {CLOSE = close = search.close.parentNode.appendChild(document.createTextNode(""))}
|
||||
if (element === search.close) {element = close}
|
||||
search.close = close;
|
||||
var math = search.open.splitText(search.opos);
|
||||
while (math.nextSibling && math.nextSibling !== close) {
|
||||
if (math.nextSibling.nodeValue !== null) {
|
||||
if (math.nextSibling.nodeName === "#comment") {
|
||||
math.nodeValue += math.nextSibling.nodeValue.replace(/^\[CDATA\[(.*)\]\]$/,"$1");
|
||||
} else {
|
||||
math.nodeValue += math.nextSibling.nodeValue;
|
||||
}
|
||||
} else {math.nodeValue += ' '}
|
||||
math.parentNode.removeChild(math.nextSibling);
|
||||
}
|
||||
var TeX = math.nodeValue.substr(search.olen,math.nodeValue.length-search.olen-search.clen);
|
||||
math.parentNode.removeChild(math);
|
||||
if (this.config.previewTeX) {this.createMathPreview(search.mode,TeX)}
|
||||
math = this.createMathTag(search.mode,TeX);
|
||||
this.search = {}; this.pattern.lastIndex = 0;
|
||||
if (CLOSE) {CLOSE.parentNode.removeChild(CLOSE)}
|
||||
return math;
|
||||
},
|
||||
|
||||
insertNode: function (node) {
|
||||
var search = this.search;
|
||||
if (search.close && search.close.parentNode) {
|
||||
search.close.parentNode.insertBefore(node,search.close);
|
||||
} else if (search.open.nextSibling) {
|
||||
search.open.parentNode.insertBefore(node,search.open.nextSibling);
|
||||
} else {
|
||||
search.open.parentNode.appendChild(node);
|
||||
}
|
||||
},
|
||||
|
||||
createMathPreview: function (mode,tex) {
|
||||
var preview = document.createElement("span");
|
||||
preview.className = MathJax.Hub.config.preRemoveClass;
|
||||
preview.appendChild(document.createTextNode(tex));
|
||||
this.insertNode(preview);
|
||||
return preview;
|
||||
},
|
||||
|
||||
createMathTag: function (mode,tex) {
|
||||
var script = document.createElement("script");
|
||||
script.type = "math/tex" + mode;
|
||||
if (MathJax.Hub.Browser.isMSIE) {script.text = tex}
|
||||
else {script.appendChild(document.createTextNode(tex))}
|
||||
this.insertNode(script);
|
||||
return script;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.tex2jax]);
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/tex2jax.js");
|
||||
@@ -1,140 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/extensions/toMathML.js
|
||||
*
|
||||
* Implements a toMathML() method for the mml Element Jax that returns
|
||||
* a MathML string from a given math expression.
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.Hub.Register.LoadHook("[MathJax]/jax/element/mml/jax.js",function () {
|
||||
var MML = MathJax.ElementJax.mml;
|
||||
|
||||
MML.mbase.Augment({
|
||||
|
||||
toMathML: function (space) {
|
||||
var inferred = (this.inferred && this.parent.inferRow);
|
||||
if (space == null) {space = ""}
|
||||
var tag = this.type, attr = this.MathMLattributes();
|
||||
if (tag === "mspace") {return space + "<"+tag+attr+" />"}
|
||||
var data = []; var SPACE = (this.isToken ? "" : space+(inferred ? "" : " "));
|
||||
for (var i = 0, m = this.data.length; i < m; i++) {
|
||||
if (this.data[i]) {data.push(this.data[i].toMathML(SPACE))}
|
||||
else if (!this.isToken) {data.push(SPACE+"<mrow />")}
|
||||
}
|
||||
if (this.isToken) {return space + "<"+tag+attr+">"+data.join("")+"</"+tag+">"}
|
||||
if (inferred) {return data.join("\n")}
|
||||
if (data.length === 0 || (data.length === 1 && data[0] === ""))
|
||||
{return space + "<"+tag+attr+" />"}
|
||||
return space + "<"+tag+attr+">\n"+data.join("\n")+"\n"+ space +"</"+tag+">";
|
||||
},
|
||||
|
||||
MathMLattributes: function () {
|
||||
var attr = [], defaults = this.defaults;
|
||||
var copy = this.copyAttributes,
|
||||
skip = this.skipAttributes;
|
||||
|
||||
if (this.type === "mstyle") {defaults = MML.math.prototype.defaults}
|
||||
for (var id in defaults) {if (!skip[id] && defaults.hasOwnProperty(id)) {
|
||||
var force = (id === "open" || id === "close");
|
||||
if (this[id] != null && (force || this[id] !== defaults[id])) {
|
||||
var value = this[id]; delete this[id];
|
||||
if (force || this.Get(id) !== value)
|
||||
{attr.push(id+'="'+this.quoteHTML(value)+'"')}
|
||||
this[id] = value;
|
||||
}
|
||||
}}
|
||||
for (var i = 0, m = copy.length; i < m; i++) {
|
||||
if (this[copy[i]] != null) {attr.push(copy[i]+'="'+this.quoteHTML(this[copy[i]])+'"')}
|
||||
}
|
||||
if (attr.length) {return " "+attr.join(" ")} else {return ""}
|
||||
},
|
||||
copyAttributes: [
|
||||
"fontfamily","fontsize","fontweight","fontstyle",
|
||||
"color","background",
|
||||
"id","class","href","style"
|
||||
],
|
||||
skipAttributes: {texClass: 1, useHeight: 1, texprimestyle: 1},
|
||||
|
||||
quoteHTML: function (string) {
|
||||
string = String(string).split("");
|
||||
for (var i = 0, m = string.length; i < m; i++) {
|
||||
var n = string[i].charCodeAt(0);
|
||||
if (n < 0x20 || n > 0x7E) {
|
||||
string[i] = "&#x"+n.toString(16).toUpperCase()+";";
|
||||
} else {
|
||||
var c = {'&':'&', '<':'<', '>':'>', '"':'"'}[string[i]];
|
||||
if (c) {string[i] = c}
|
||||
}
|
||||
}
|
||||
return string.join("");
|
||||
}
|
||||
});
|
||||
|
||||
MML.msubsup.Augment({
|
||||
toMathML: function (space) {
|
||||
var tag = this.type;
|
||||
if (this.data[this.sup] == null) {tag = "msub"}
|
||||
if (this.data[this.sub] == null) {tag = "msup"}
|
||||
var attr = this.MathMLattributes();
|
||||
delete this.data[0].inferred;
|
||||
var data = [];
|
||||
for (var i = 0, m = this.data.length; i < m; i++)
|
||||
{if (this.data[i]) {data.push(this.data[i].toMathML(space+" "))}}
|
||||
return space + "<"+tag+attr+">\n" + data.join("\n") + "\n" + space + "</"+tag+">";
|
||||
}
|
||||
});
|
||||
|
||||
MML.munderover.Augment({
|
||||
toMathML: function (space) {
|
||||
var tag = this.type;
|
||||
if (this.data[this.under] == null) {tag = "mover"}
|
||||
if (this.data[this.over] == null) {tag = "munder"}
|
||||
var attr = this.MathMLattributes();
|
||||
delete this.data[0].inferred;
|
||||
var data = [];
|
||||
for (var i = 0, m = this.data.length; i < m; i++)
|
||||
{if (this.data[i]) {data.push(this.data[i].toMathML(space+" "))}}
|
||||
return space + "<"+tag+attr+">\n" + data.join("\n") + "\n" + space + "</"+tag+">";
|
||||
}
|
||||
});
|
||||
|
||||
MML.TeXAtom.Augment({
|
||||
toMathML: function (space) {
|
||||
// FIXME: Handle spacing using mpadded?
|
||||
return space+"<mrow>\n"+this.data[0].toMathML(space+" ")+"\n"+space+"</mrow>";
|
||||
}
|
||||
});
|
||||
|
||||
MML.chars.Augment({
|
||||
toMathML: function (space) {return (space||"") + this.quoteHTML(this.toString())}
|
||||
});
|
||||
|
||||
MML.entity.Augment({
|
||||
toMathML: function (space) {return (space||"") + "&"+this.data[0]+";<!-- "+this.toString()+" -->"}
|
||||
});
|
||||
|
||||
MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function () {
|
||||
MML.TeXmathchoice.Augment({
|
||||
toMathML: function (space) {return this.Core().toMathML(space)}
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/extensions/toMathML.js");
|
||||
File diff suppressed because it is too large
Load Diff
-122
@@ -1,122 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/Arrows.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
infix: {
|
||||
'\u219A': MO.REL, // leftwards arrow with stroke
|
||||
'\u219B': MO.REL, // rightwards arrow with stroke
|
||||
'\u219C': MO.WIDEREL, // leftwards wave arrow
|
||||
'\u219D': MO.WIDEREL, // rightwards wave arrow
|
||||
'\u219E': MO.WIDEREL, // leftwards two headed arrow
|
||||
'\u219F': MO.WIDEREL, // upwards two headed arrow
|
||||
'\u21A0': MO.WIDEREL, // rightwards two headed arrow
|
||||
'\u21A1': MO.WIDEREL, // downwards two headed arrow
|
||||
'\u21A2': MO.WIDEREL, // leftwards arrow with tail
|
||||
'\u21A3': MO.WIDEREL, // rightwards arrow with tail
|
||||
'\u21A4': MO.WIDEREL, // leftwards arrow from bar
|
||||
'\u21A5': MO.WIDEREL, // upwards arrow from bar
|
||||
'\u21A7': MO.WIDEREL, // downwards arrow from bar
|
||||
'\u21A8': MO.WIDEREL, // up down arrow with base
|
||||
'\u21AB': MO.WIDEREL, // leftwards arrow with loop
|
||||
'\u21AC': MO.WIDEREL, // rightwards arrow with loop
|
||||
'\u21AD': MO.WIDEREL, // left right wave arrow
|
||||
'\u21AE': MO.REL, // left right arrow with stroke
|
||||
'\u21AF': MO.WIDEREL, // downwards zigzag arrow
|
||||
'\u21B0': MO.WIDEREL, // upwards arrow with tip leftwards
|
||||
'\u21B1': MO.WIDEREL, // upwards arrow with tip rightwards
|
||||
'\u21B2': MO.WIDEREL, // downwards arrow with tip leftwards
|
||||
'\u21B3': MO.WIDEREL, // downwards arrow with tip rightwards
|
||||
'\u21B4': MO.WIDEREL, // rightwards arrow with corner downwards
|
||||
'\u21B5': MO.WIDEREL, // downwards arrow with corner leftwards
|
||||
'\u21B6': MO.REL, // anticlockwise top semicircle arrow
|
||||
'\u21B7': MO.REL, // clockwise top semicircle arrow
|
||||
'\u21B8': MO.REL, // north west arrow to long bar
|
||||
'\u21B9': MO.WIDEREL, // leftwards arrow to bar over rightwards arrow to bar
|
||||
'\u21BA': MO.REL, // anticlockwise open circle arrow
|
||||
'\u21BB': MO.REL, // clockwise open circle arrow
|
||||
'\u21BE': MO.WIDEREL, // upwards harpoon with barb rightwards
|
||||
'\u21BF': MO.WIDEREL, // upwards harpoon with barb leftwards
|
||||
'\u21C2': MO.WIDEREL, // downwards harpoon with barb rightwards
|
||||
'\u21C3': MO.WIDEREL, // downwards harpoon with barb leftwards
|
||||
'\u21C4': MO.WIDEREL, // rightwards arrow over leftwards arrow
|
||||
'\u21C5': MO.WIDEREL, // upwards arrow leftwards of downwards arrow
|
||||
'\u21C6': MO.WIDEREL, // leftwards arrow over rightwards arrow
|
||||
'\u21C7': MO.WIDEREL, // leftwards paired arrows
|
||||
'\u21C8': MO.WIDEREL, // upwards paired arrows
|
||||
'\u21C9': MO.WIDEREL, // rightwards paired arrows
|
||||
'\u21CA': MO.WIDEREL, // downwards paired arrows
|
||||
'\u21CB': MO.WIDEREL, // leftwards harpoon over rightwards harpoon
|
||||
'\u21CD': MO.REL, // leftwards double arrow with stroke
|
||||
'\u21CE': MO.REL, // left right double arrow with stroke
|
||||
'\u21CF': MO.REL, // rightwards double arrow with stroke
|
||||
'\u21D6': MO.WIDEREL, // north west double arrow
|
||||
'\u21D7': MO.WIDEREL, // north east double arrow
|
||||
'\u21D8': MO.WIDEREL, // south east double arrow
|
||||
'\u21D9': MO.WIDEREL, // south west double arrow
|
||||
'\u21DA': MO.WIDEREL, // leftwards triple arrow
|
||||
'\u21DB': MO.WIDEREL, // rightwards triple arrow
|
||||
'\u21DC': MO.WIDEREL, // leftwards squiggle arrow
|
||||
'\u21DD': MO.WIDEREL, // rightwards squiggle arrow
|
||||
'\u21DE': MO.REL, // upwards arrow with double stroke
|
||||
'\u21DF': MO.REL, // downwards arrow with double stroke
|
||||
'\u21E0': MO.WIDEREL, // leftwards dashed arrow
|
||||
'\u21E1': MO.WIDEREL, // upwards dashed arrow
|
||||
'\u21E2': MO.WIDEREL, // rightwards dashed arrow
|
||||
'\u21E3': MO.WIDEREL, // downwards dashed arrow
|
||||
'\u21E4': MO.WIDEREL, // leftwards arrow to bar
|
||||
'\u21E5': MO.WIDEREL, // rightwards arrow to bar
|
||||
'\u21E6': MO.WIDEREL, // leftwards white arrow
|
||||
'\u21E7': MO.WIDEREL, // upwards white arrow
|
||||
'\u21E8': MO.WIDEREL, // rightwards white arrow
|
||||
'\u21E9': MO.WIDEREL, // downwards white arrow
|
||||
'\u21EA': MO.WIDEREL, // upwards white arrow from bar
|
||||
'\u21EB': MO.WIDEREL, // upwards white arrow on pedestal
|
||||
'\u21EC': MO.WIDEREL, // upwards white arrow on pedestal with horizontal bar
|
||||
'\u21ED': MO.WIDEREL, // upwards white arrow on pedestal with vertical bar
|
||||
'\u21EE': MO.WIDEREL, // upwards white double arrow
|
||||
'\u21EF': MO.WIDEREL, // upwards white double arrow on pedestal
|
||||
'\u21F0': MO.WIDEREL, // rightwards white arrow from wall
|
||||
'\u21F1': MO.REL, // north west arrow to corner
|
||||
'\u21F2': MO.REL, // south east arrow to corner
|
||||
'\u21F3': MO.WIDEREL, // up down white arrow
|
||||
'\u21F4': MO.REL, // right arrow with small circle
|
||||
'\u21F5': MO.WIDEREL, // downwards arrow leftwards of upwards arrow
|
||||
'\u21F6': MO.WIDEREL, // three rightwards arrows
|
||||
'\u21F7': MO.REL, // leftwards arrow with vertical stroke
|
||||
'\u21F8': MO.REL, // rightwards arrow with vertical stroke
|
||||
'\u21F9': MO.REL, // left right arrow with vertical stroke
|
||||
'\u21FA': MO.REL, // leftwards arrow with double vertical stroke
|
||||
'\u21FB': MO.REL, // rightwards arrow with double vertical stroke
|
||||
'\u21FC': MO.REL, // left right arrow with double vertical stroke
|
||||
'\u21FD': MO.WIDEREL, // leftwards open-headed arrow
|
||||
'\u21FE': MO.WIDEREL, // rightwards open-headed arrow
|
||||
'\u21FF': MO.WIDEREL // left right open-headed arrow
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/Arrows.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/BasicLatin.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
postfix: {
|
||||
'!!': [1,0,TEXCLASS.BIN], // multiple character operator: !!
|
||||
'\'': MO.ACCENT, // apostrophe
|
||||
'++': [0,0,TEXCLASS.BIN], // multiple character operator: ++
|
||||
'--': [0,0,TEXCLASS.BIN], // multiple character operator: --
|
||||
'..': [0,0,TEXCLASS.BIN], // multiple character operator: ..
|
||||
'...': MO.ORD // multiple character operator: ...
|
||||
},
|
||||
infix: {
|
||||
'!=': MO.BIN4, // multiple character operator: !=
|
||||
'&&': MO.BIN4, // multiple character operator: &&
|
||||
'**': [1,1,TEXCLASS.BIN], // multiple character operator: **
|
||||
'*=': MO.BIN4, // multiple character operator: *=
|
||||
'+=': MO.BIN4, // multiple character operator: +=
|
||||
'-=': MO.BIN4, // multiple character operator: -=
|
||||
'->': MO.BIN4, // multiple character operator: ->
|
||||
'//': MO.BIN4, // multiple character operator: //
|
||||
'/=': MO.BIN4, // multiple character operator: /=
|
||||
':=': MO.BIN4, // multiple character operator: :=
|
||||
'<=': MO.BIN4, // multiple character operator: <=
|
||||
'<>': [1,1,TEXCLASS.BIN], // multiple character operator: <>
|
||||
'==': MO.BIN4, // multiple character operator: ==
|
||||
'>=': MO.BIN4, // multiple character operator: >=
|
||||
'@': MO.ORD11, // commercial at
|
||||
'||': MO.BIN3 // multiple character operator: ||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/BasicLatin.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/CombDiacritMarks.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
postfix: {
|
||||
'\u0311': MO.ACCENT // combining inverted breve
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/CombDiacritMarks.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
Vendored
-35
@@ -1,35 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/CombDiactForSymbols.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
postfix: {
|
||||
'\u20DB': MO.ACCENT // combining three dots above
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/CombDiactForSymbols.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
Vendored
-40
@@ -1,40 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/GeneralPunctuation.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
prefix: {
|
||||
'\u2018': [0,0,TEXCLASS.OPEN,{fence: true}], // left single quotation mark
|
||||
'\u201C': [0,0,TEXCLASS.OPEN,{fence: true}] // left double quotation mark
|
||||
},
|
||||
postfix: {
|
||||
'\u2019': [0,0,TEXCLASS.CLOSE,{fence: true}], // right single quotation mark
|
||||
'\u201D': [0,0,TEXCLASS.CLOSE,{fence: true}] // right double quotation mark
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/GeneralPunctuation.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-66
@@ -1,66 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/GeometricShapes.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
infix: {
|
||||
'\u25A0': MO.BIN3, // black square
|
||||
'\u25A1': MO.BIN3, // white square
|
||||
'\u25AA': MO.BIN3, // black small square
|
||||
'\u25AB': MO.BIN3, // white small square
|
||||
'\u25AD': MO.BIN3, // white rectangle
|
||||
'\u25AE': MO.BIN3, // black vertical rectangle
|
||||
'\u25AF': MO.BIN3, // white vertical rectangle
|
||||
'\u25B0': MO.BIN3, // black parallelogram
|
||||
'\u25B1': MO.BIN3, // white parallelogram
|
||||
'\u25B2': MO.BIN4, // black up-pointing triangle
|
||||
'\u25B4': MO.BIN4, // black up-pointing small triangle
|
||||
'\u25B6': MO.BIN4, // black right-pointing triangle
|
||||
'\u25B7': MO.BIN4, // white right-pointing triangle
|
||||
'\u25B8': MO.BIN4, // black right-pointing small triangle
|
||||
'\u25BC': MO.BIN4, // black down-pointing triangle
|
||||
'\u25BE': MO.BIN4, // black down-pointing small triangle
|
||||
'\u25C0': MO.BIN4, // black left-pointing triangle
|
||||
'\u25C1': MO.BIN4, // white left-pointing triangle
|
||||
'\u25C2': MO.BIN4, // black left-pointing small triangle
|
||||
'\u25C4': MO.BIN4, // black left-pointing pointer
|
||||
'\u25C5': MO.BIN4, // white left-pointing pointer
|
||||
'\u25C6': MO.BIN4, // black diamond
|
||||
'\u25C7': MO.BIN4, // white diamond
|
||||
'\u25C8': MO.BIN4, // white diamond containing black small diamond
|
||||
'\u25C9': MO.BIN4, // fisheye
|
||||
'\u25CC': MO.BIN4, // dotted circle
|
||||
'\u25CD': MO.BIN4, // circle with vertical fill
|
||||
'\u25CE': MO.BIN4, // bullseye
|
||||
'\u25CF': MO.BIN4, // black circle
|
||||
'\u25D6': MO.BIN4, // left half black circle
|
||||
'\u25D7': MO.BIN4, // right half black circle
|
||||
'\u25E6': MO.BIN4 // white bullet
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/GeometricShapes.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/GreekAndCoptic.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
prefix: {
|
||||
'\u03C3': MO.ORD11 // greek small letter sigma
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/GreekAndCoptic.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-37
@@ -1,37 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/Latin1Supplement.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
postfix: {
|
||||
'\u00B0': MO.ORD, // degree sign
|
||||
'\u00B4': MO.ACCENT, // acute accent
|
||||
'\u00B8': MO.ACCENT // cedilla
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/Latin1Supplement.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/LetterlikeSymbols.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
prefix: {
|
||||
'\u2145': MO.ORD21, // double-struck italic capital d
|
||||
'\u2146': [2,0,TEXCLASS.ORD], // double-struck italic small d
|
||||
'\u2147': MO.ORD, // double-struck italic small e
|
||||
'\u2148': MO.ORD, // double-struck italic small i
|
||||
'\u2149': MO.ORD // double-struck italic small j
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/LetterlikeSymbols.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-228
@@ -1,228 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/MathOperators.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
prefix: {
|
||||
'\u2204': MO.ORD21, // there does not exist
|
||||
'\u221B': MO.ORD11, // cube root
|
||||
'\u221C': MO.ORD11, // fourth root
|
||||
'\u2221': MO.ORD, // measured angle
|
||||
'\u2222': MO.ORD, // spherical angle
|
||||
'\u222C': MO.INTEGRAL, // double integral
|
||||
'\u222D': MO.INTEGRAL, // triple integral
|
||||
'\u222F': MO.INTEGRAL, // surface integral
|
||||
'\u2230': MO.INTEGRAL, // volume integral
|
||||
'\u2231': MO.INTEGRAL, // clockwise integral
|
||||
'\u2232': MO.INTEGRAL, // clockwise contour integral
|
||||
'\u2233': MO.INTEGRAL // anticlockwise contour integral
|
||||
},
|
||||
infix: {
|
||||
'\u2201': [1,2,TEXCLASS.ORD], // complement
|
||||
'\u2206': MO.BIN3, // increment
|
||||
'\u220A': MO.REL, // small element of
|
||||
'\u220C': MO.REL, // does not contain as member
|
||||
'\u220D': MO.REL, // small contains as member
|
||||
'\u220E': MO.BIN3, // end of proof
|
||||
'\u2214': MO.BIN4, // dot plus
|
||||
'\u221F': MO.REL, // right angle
|
||||
'\u2224': MO.REL, // does not divide
|
||||
'\u2226': MO.REL, // not parallel to
|
||||
'\u2234': MO.REL, // therefore
|
||||
'\u2235': MO.REL, // because
|
||||
'\u2236': MO.REL, // ratio
|
||||
'\u2237': MO.REL, // proportion
|
||||
'\u2238': MO.BIN4, // dot minus
|
||||
'\u2239': MO.REL, // excess
|
||||
'\u223A': MO.BIN4, // geometric proportion
|
||||
'\u223B': MO.REL, // homothetic
|
||||
'\u223D': MO.REL, // reversed tilde
|
||||
'\u223D\u0331': MO.BIN3, // reversed tilde with underline
|
||||
'\u223E': MO.REL, // inverted lazy s
|
||||
'\u223F': MO.BIN3, // sine wave
|
||||
'\u2241': MO.REL, // not tilde
|
||||
'\u2242': MO.REL, // minus tilde
|
||||
'\u2242\u0338': MO.BIN4, // minus tilde with slash
|
||||
'\u2244': MO.REL, // not asymptotically equal to
|
||||
'\u2246': MO.REL, // approximately but not actually equal to
|
||||
'\u2247': MO.REL, // neither approximately nor actually equal to
|
||||
'\u2249': MO.REL, // not almost equal to
|
||||
'\u224A': MO.REL, // almost equal or equal to
|
||||
'\u224B': MO.REL, // triple tilde
|
||||
'\u224C': MO.REL, // all equal to
|
||||
'\u224E': MO.REL, // geometrically equivalent to
|
||||
'\u224E\u0338': MO.BIN4, // geometrically equivalent to with slash
|
||||
'\u224F': MO.REL, // difference between
|
||||
'\u224F\u0338': MO.BIN4, // difference between with slash
|
||||
'\u2251': MO.REL, // geometrically equal to
|
||||
'\u2252': MO.REL, // approximately equal to or the image of
|
||||
'\u2253': MO.REL, // image of or approximately equal to
|
||||
'\u2254': MO.REL, // colon equals
|
||||
'\u2255': MO.REL, // equals colon
|
||||
'\u2256': MO.REL, // ring in equal to
|
||||
'\u2257': MO.REL, // ring equal to
|
||||
'\u2258': MO.REL, // corresponds to
|
||||
'\u2259': MO.REL, // estimates
|
||||
'\u225A': MO.REL, // equiangular to
|
||||
'\u225C': MO.REL, // delta equal to
|
||||
'\u225D': MO.REL, // equal to by definition
|
||||
'\u225E': MO.REL, // measured by
|
||||
'\u225F': MO.REL, // questioned equal to
|
||||
'\u2262': MO.REL, // not identical to
|
||||
'\u2263': MO.REL, // strictly equivalent to
|
||||
'\u2266': MO.REL, // less-than over equal to
|
||||
'\u2266\u0338': MO.BIN4, // less-than over equal to with slash
|
||||
'\u2267': MO.REL, // greater-than over equal to
|
||||
'\u2268': MO.REL, // less-than but not equal to
|
||||
'\u2269': MO.REL, // greater-than but not equal to
|
||||
'\u226A\u0338': MO.BIN4, // much less than with slash
|
||||
'\u226B\u0338': MO.BIN4, // much greater than with slash
|
||||
'\u226C': MO.REL, // between
|
||||
'\u226D': MO.REL, // not equivalent to
|
||||
'\u226E': MO.REL, // not less-than
|
||||
'\u226F': MO.REL, // not greater-than
|
||||
'\u2270': MO.REL, // neither less-than nor equal to
|
||||
'\u2271': MO.REL, // neither greater-than nor equal to
|
||||
'\u2272': MO.REL, // less-than or equivalent to
|
||||
'\u2273': MO.REL, // greater-than or equivalent to
|
||||
'\u2274': MO.REL, // neither less-than nor equivalent to
|
||||
'\u2275': MO.REL, // neither greater-than nor equivalent to
|
||||
'\u2276': MO.REL, // less-than or greater-than
|
||||
'\u2277': MO.REL, // greater-than or less-than
|
||||
'\u2278': MO.REL, // neither less-than nor greater-than
|
||||
'\u2279': MO.REL, // neither greater-than nor less-than
|
||||
'\u227C': MO.REL, // precedes or equal to
|
||||
'\u227D': MO.REL, // succeeds or equal to
|
||||
'\u227E': MO.REL, // precedes or equivalent to
|
||||
'\u227F': MO.REL, // succeeds or equivalent to
|
||||
'\u227F\u0338': MO.BIN4, // succeeds or equivalent to with slash
|
||||
'\u2280': MO.REL, // does not precede
|
||||
'\u2281': MO.REL, // does not succeed
|
||||
'\u2282\u20D2': MO.BIN4, // subset of with vertical line
|
||||
'\u2283\u20D2': MO.BIN4, // superset of with vertical line
|
||||
'\u2284': MO.REL, // not a subset of
|
||||
'\u2285': MO.REL, // not a superset of
|
||||
'\u2288': MO.REL, // neither a subset of nor equal to
|
||||
'\u2289': MO.REL, // neither a superset of nor equal to
|
||||
'\u228A': MO.REL, // subset of with not equal to
|
||||
'\u228B': MO.REL, // superset of with not equal to
|
||||
'\u228C': MO.BIN4, // multiset
|
||||
'\u228D': MO.BIN4, // multiset multiplication
|
||||
'\u228F': MO.REL, // square image of
|
||||
'\u228F\u0338': MO.BIN4, // square image of with slash
|
||||
'\u2290': MO.REL, // square original of
|
||||
'\u2290\u0338': MO.BIN4, // square original of with slash
|
||||
'\u229A': MO.BIN4, // circled ring operator
|
||||
'\u229B': MO.BIN4, // circled asterisk operator
|
||||
'\u229C': MO.BIN4, // circled equals
|
||||
'\u229D': MO.BIN4, // circled dash
|
||||
'\u229E': MO.BIN4, // squared plus
|
||||
'\u229F': MO.BIN4, // squared minus
|
||||
'\u22A0': MO.BIN4, // squared times
|
||||
'\u22A1': MO.BIN4, // squared dot operator
|
||||
'\u22A6': MO.REL, // assertion
|
||||
'\u22A7': MO.REL, // models
|
||||
'\u22A9': MO.REL, // forces
|
||||
'\u22AA': MO.REL, // triple vertical bar right turnstile
|
||||
'\u22AB': MO.REL, // double vertical bar double right turnstile
|
||||
'\u22AC': MO.REL, // does not prove
|
||||
'\u22AD': MO.REL, // not true
|
||||
'\u22AE': MO.REL, // does not force
|
||||
'\u22AF': MO.REL, // negated double vertical bar double right turnstile
|
||||
'\u22B0': MO.REL, // precedes under relation
|
||||
'\u22B1': MO.REL, // succeeds under relation
|
||||
'\u22B2': MO.REL, // normal subgroup of
|
||||
'\u22B3': MO.REL, // contains as normal subgroup
|
||||
'\u22B4': MO.REL, // normal subgroup of or equal to
|
||||
'\u22B5': MO.REL, // contains as normal subgroup or equal to
|
||||
'\u22B6': MO.REL, // original of
|
||||
'\u22B7': MO.REL, // image of
|
||||
'\u22B8': MO.REL, // multimap
|
||||
'\u22B9': MO.REL, // hermitian conjugate matrix
|
||||
'\u22BA': MO.BIN4, // intercalate
|
||||
'\u22BB': MO.BIN4, // xor
|
||||
'\u22BC': MO.BIN4, // nand
|
||||
'\u22BD': MO.BIN4, // nor
|
||||
'\u22BE': MO.BIN3, // right angle with arc
|
||||
'\u22BF': MO.BIN3, // right triangle
|
||||
'\u22C7': MO.BIN4, // division times
|
||||
'\u22C9': MO.BIN4, // left normal factor semidirect product
|
||||
'\u22CA': MO.BIN4, // right normal factor semidirect product
|
||||
'\u22CB': MO.BIN4, // left semidirect product
|
||||
'\u22CC': MO.BIN4, // right semidirect product
|
||||
'\u22CD': MO.REL, // reversed tilde equals
|
||||
'\u22CE': MO.BIN4, // curly logical or
|
||||
'\u22CF': MO.BIN4, // curly logical and
|
||||
'\u22D0': MO.REL, // double subset
|
||||
'\u22D1': MO.REL, // double superset
|
||||
'\u22D2': MO.BIN4, // double intersection
|
||||
'\u22D3': MO.BIN4, // double union
|
||||
'\u22D4': MO.REL, // pitchfork
|
||||
'\u22D5': MO.REL, // equal and parallel to
|
||||
'\u22D6': MO.REL, // less-than with dot
|
||||
'\u22D7': MO.REL, // greater-than with dot
|
||||
'\u22D8': MO.REL, // very much less-than
|
||||
'\u22D9': MO.REL, // very much greater-than
|
||||
'\u22DA': MO.REL, // less-than equal to or greater-than
|
||||
'\u22DB': MO.REL, // greater-than equal to or less-than
|
||||
'\u22DC': MO.REL, // equal to or less-than
|
||||
'\u22DD': MO.REL, // equal to or greater-than
|
||||
'\u22DE': MO.REL, // equal to or precedes
|
||||
'\u22DF': MO.REL, // equal to or succeeds
|
||||
'\u22E0': MO.REL, // does not precede or equal
|
||||
'\u22E1': MO.REL, // does not succeed or equal
|
||||
'\u22E2': MO.REL, // not square image of or equal to
|
||||
'\u22E3': MO.REL, // not square original of or equal to
|
||||
'\u22E4': MO.REL, // square image of or not equal to
|
||||
'\u22E5': MO.REL, // square original of or not equal to
|
||||
'\u22E6': MO.REL, // less-than but not equivalent to
|
||||
'\u22E7': MO.REL, // greater-than but not equivalent to
|
||||
'\u22E8': MO.REL, // precedes but not equivalent to
|
||||
'\u22E9': MO.REL, // succeeds but not equivalent to
|
||||
'\u22EA': MO.REL, // not normal subgroup of
|
||||
'\u22EB': MO.REL, // does not contain as normal subgroup
|
||||
'\u22EC': MO.REL, // not normal subgroup of or equal to
|
||||
'\u22ED': MO.REL, // does not contain as normal subgroup or equal
|
||||
'\u22F0': MO.REL, // up right diagonal ellipsis
|
||||
'\u22F2': MO.REL, // element of with long horizontal stroke
|
||||
'\u22F3': MO.REL, // element of with vertical bar at end of horizontal stroke
|
||||
'\u22F4': MO.REL, // small element of with vertical bar at end of horizontal stroke
|
||||
'\u22F5': MO.REL, // element of with dot above
|
||||
'\u22F6': MO.REL, // element of with overbar
|
||||
'\u22F7': MO.REL, // small element of with overbar
|
||||
'\u22F8': MO.REL, // element of with underbar
|
||||
'\u22F9': MO.REL, // element of with two horizontal strokes
|
||||
'\u22FA': MO.REL, // contains with long horizontal stroke
|
||||
'\u22FB': MO.REL, // contains with vertical bar at end of horizontal stroke
|
||||
'\u22FC': MO.REL, // small contains with vertical bar at end of horizontal stroke
|
||||
'\u22FD': MO.REL, // contains with overbar
|
||||
'\u22FE': MO.REL, // small contains with overbar
|
||||
'\u22FF': MO.REL // z notation bag membership
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/MathOperators.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/MiscMathSymbolsA.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
prefix: {
|
||||
'\u27E6': MO.OPEN // mathematical left white square bracket
|
||||
},
|
||||
postfix: {
|
||||
'\u27E7': MO.CLOSE // mathematical right white square bracket
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/MiscMathSymbolsA.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-167
@@ -1,167 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/MiscMathSymbolsB.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
prefix: {
|
||||
'\u2983': MO.OPEN, // left white curly bracket
|
||||
'\u2985': MO.OPEN, // left white parenthesis
|
||||
'\u2987': MO.OPEN, // z notation left image bracket
|
||||
'\u2989': MO.OPEN, // z notation left binding bracket
|
||||
'\u298B': MO.OPEN, // left square bracket with underbar
|
||||
'\u298D': MO.OPEN, // left square bracket with tick in top corner
|
||||
'\u298F': MO.OPEN, // left square bracket with tick in bottom corner
|
||||
'\u2991': MO.OPEN, // left angle bracket with dot
|
||||
'\u2993': MO.OPEN, // left arc less-than bracket
|
||||
'\u2995': MO.OPEN, // double left arc greater-than bracket
|
||||
'\u2997': MO.OPEN, // left black tortoise shell bracket
|
||||
'\u29FC': MO.OPEN // left-pointing curved angle bracket
|
||||
},
|
||||
postfix: {
|
||||
'\u2984': MO.CLOSE, // right white curly bracket
|
||||
'\u2986': MO.CLOSE, // right white parenthesis
|
||||
'\u2988': MO.CLOSE, // z notation right image bracket
|
||||
'\u298A': MO.CLOSE, // z notation right binding bracket
|
||||
'\u298C': MO.CLOSE, // right square bracket with underbar
|
||||
'\u298E': MO.CLOSE, // right square bracket with tick in bottom corner
|
||||
'\u2990': MO.CLOSE, // right square bracket with tick in top corner
|
||||
'\u2992': MO.CLOSE, // right angle bracket with dot
|
||||
'\u2994': MO.CLOSE, // right arc greater-than bracket
|
||||
'\u2996': MO.CLOSE, // double right arc less-than bracket
|
||||
'\u2998': MO.CLOSE, // right black tortoise shell bracket
|
||||
'\u29FD': MO.CLOSE // right-pointing curved angle bracket
|
||||
},
|
||||
infix: {
|
||||
'\u2980': MO.ORD, // triple vertical bar delimiter
|
||||
'\u2981': MO.BIN3, // z notation spot
|
||||
'\u2982': MO.BIN3, // z notation type colon
|
||||
'\u2999': MO.BIN3, // dotted fence
|
||||
'\u299A': MO.BIN3, // vertical zigzag line
|
||||
'\u299B': MO.BIN3, // measured angle opening left
|
||||
'\u299C': MO.BIN3, // right angle variant with square
|
||||
'\u299D': MO.BIN3, // measured right angle with dot
|
||||
'\u299E': MO.BIN3, // angle with s inside
|
||||
'\u299F': MO.BIN3, // acute angle
|
||||
'\u29A0': MO.BIN3, // spherical angle opening left
|
||||
'\u29A1': MO.BIN3, // spherical angle opening up
|
||||
'\u29A2': MO.BIN3, // turned angle
|
||||
'\u29A3': MO.BIN3, // reversed angle
|
||||
'\u29A4': MO.BIN3, // angle with underbar
|
||||
'\u29A5': MO.BIN3, // reversed angle with underbar
|
||||
'\u29A6': MO.BIN3, // oblique angle opening up
|
||||
'\u29A7': MO.BIN3, // oblique angle opening down
|
||||
'\u29A8': MO.BIN3, // measured angle with open arm ending in arrow pointing up and right
|
||||
'\u29A9': MO.BIN3, // measured angle with open arm ending in arrow pointing up and left
|
||||
'\u29AA': MO.BIN3, // measured angle with open arm ending in arrow pointing down and right
|
||||
'\u29AB': MO.BIN3, // measured angle with open arm ending in arrow pointing down and left
|
||||
'\u29AC': MO.BIN3, // measured angle with open arm ending in arrow pointing right and up
|
||||
'\u29AD': MO.BIN3, // measured angle with open arm ending in arrow pointing left and up
|
||||
'\u29AE': MO.BIN3, // measured angle with open arm ending in arrow pointing right and down
|
||||
'\u29AF': MO.BIN3, // measured angle with open arm ending in arrow pointing left and down
|
||||
'\u29B0': MO.BIN3, // reversed empty set
|
||||
'\u29B1': MO.BIN3, // empty set with overbar
|
||||
'\u29B2': MO.BIN3, // empty set with small circle above
|
||||
'\u29B3': MO.BIN3, // empty set with right arrow above
|
||||
'\u29B4': MO.BIN3, // empty set with left arrow above
|
||||
'\u29B5': MO.BIN3, // circle with horizontal bar
|
||||
'\u29B6': MO.BIN4, // circled vertical bar
|
||||
'\u29B7': MO.BIN4, // circled parallel
|
||||
'\u29B8': MO.BIN4, // circled reverse solidus
|
||||
'\u29B9': MO.BIN4, // circled perpendicular
|
||||
'\u29BA': MO.BIN4, // circle divided by horizontal bar and top half divided by vertical bar
|
||||
'\u29BB': MO.BIN4, // circle with superimposed x
|
||||
'\u29BC': MO.BIN4, // circled anticlockwise-rotated division sign
|
||||
'\u29BD': MO.BIN4, // up arrow through circle
|
||||
'\u29BE': MO.BIN4, // circled white bullet
|
||||
'\u29BF': MO.BIN4, // circled bullet
|
||||
'\u29C0': MO.REL, // circled less-than
|
||||
'\u29C1': MO.REL, // circled greater-than
|
||||
'\u29C2': MO.BIN3, // circle with small circle to the right
|
||||
'\u29C3': MO.BIN3, // circle with two horizontal strokes to the right
|
||||
'\u29C4': MO.BIN4, // squared rising diagonal slash
|
||||
'\u29C5': MO.BIN4, // squared falling diagonal slash
|
||||
'\u29C6': MO.BIN4, // squared asterisk
|
||||
'\u29C7': MO.BIN4, // squared small circle
|
||||
'\u29C8': MO.BIN4, // squared square
|
||||
'\u29C9': MO.BIN3, // two joined squares
|
||||
'\u29CA': MO.BIN3, // triangle with dot above
|
||||
'\u29CB': MO.BIN3, // triangle with underbar
|
||||
'\u29CC': MO.BIN3, // s in triangle
|
||||
'\u29CD': MO.BIN3, // triangle with serifs at bottom
|
||||
'\u29CE': MO.REL, // right triangle above left triangle
|
||||
'\u29CF': MO.REL, // left triangle beside vertical bar
|
||||
'\u29CF\u0338': MO.BIN4, // left triangle beside vertical bar with slash
|
||||
'\u29D0': MO.REL, // vertical bar beside right triangle
|
||||
'\u29D0\u0338': MO.BIN4, // vertical bar beside right triangle with slash
|
||||
'\u29D1': MO.REL, // bowtie with left half black
|
||||
'\u29D2': MO.REL, // bowtie with right half black
|
||||
'\u29D3': MO.REL, // black bowtie
|
||||
'\u29D4': MO.REL, // times with left half black
|
||||
'\u29D5': MO.REL, // times with right half black
|
||||
'\u29D6': MO.BIN4, // white hourglass
|
||||
'\u29D7': MO.BIN4, // black hourglass
|
||||
'\u29D8': MO.BIN3, // left wiggly fence
|
||||
'\u29D9': MO.BIN3, // right wiggly fence
|
||||
'\u29DB': MO.BIN3, // right double wiggly fence
|
||||
'\u29DC': MO.BIN3, // incomplete infinity
|
||||
'\u29DD': MO.BIN3, // tie over infinity
|
||||
'\u29DE': MO.REL, // infinity negated with vertical bar
|
||||
'\u29DF': MO.BIN3, // double-ended multimap
|
||||
'\u29E0': MO.BIN3, // square with contoured outline
|
||||
'\u29E1': MO.REL, // increases as
|
||||
'\u29E2': MO.BIN4, // shuffle product
|
||||
'\u29E3': MO.REL, // equals sign and slanted parallel
|
||||
'\u29E4': MO.REL, // equals sign and slanted parallel with tilde above
|
||||
'\u29E5': MO.REL, // identical to and slanted parallel
|
||||
'\u29E6': MO.REL, // gleich stark
|
||||
'\u29E7': MO.BIN3, // thermodynamic
|
||||
'\u29E8': MO.BIN3, // down-pointing triangle with left half black
|
||||
'\u29E9': MO.BIN3, // down-pointing triangle with right half black
|
||||
'\u29EA': MO.BIN3, // black diamond with down arrow
|
||||
'\u29EB': MO.BIN3, // black lozenge
|
||||
'\u29EC': MO.BIN3, // white circle with down arrow
|
||||
'\u29ED': MO.BIN3, // black circle with down arrow
|
||||
'\u29EE': MO.BIN3, // error-barred white square
|
||||
'\u29EF': MO.BIN3, // error-barred black square
|
||||
'\u29F0': MO.BIN3, // error-barred white diamond
|
||||
'\u29F1': MO.BIN3, // error-barred black diamond
|
||||
'\u29F2': MO.BIN3, // error-barred white circle
|
||||
'\u29F3': MO.BIN3, // error-barred black circle
|
||||
'\u29F4': MO.REL, // rule-delayed
|
||||
'\u29F5': MO.BIN4, // reverse solidus operator
|
||||
'\u29F6': MO.BIN4, // solidus with overbar
|
||||
'\u29F7': MO.BIN4, // reverse solidus with horizontal stroke
|
||||
'\u29F8': MO.BIN3, // big solidus
|
||||
'\u29F9': MO.BIN3, // big reverse solidus
|
||||
'\u29FA': MO.BIN3, // double plus
|
||||
'\u29FB': MO.BIN3, // triple plus
|
||||
'\u29FE': MO.BIN4, // tiny
|
||||
'\u29FF': MO.BIN4 // miny
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/MiscMathSymbolsB.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/MiscTechnical.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
postfix: {
|
||||
'\u23B4': MO.WIDEACCENT, // top square bracket
|
||||
'\u23B5': MO.WIDEACCENT, // bottom square bracket
|
||||
'\u23DC': MO.WIDEACCENT, // top parenthesis
|
||||
'\u23DD': MO.WIDEACCENT // bottom parenthesis
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/MiscTechnical.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-36
@@ -1,36 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/SpacingModLetters.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
postfix: {
|
||||
'\u02DA': MO.ACCENT, // ring above
|
||||
'\u02DD': MO.ACCENT // double acute accent
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/SpacingModLetters.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
-289
@@ -1,289 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/SuppMathOperators.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
prefix: {
|
||||
'\u2A03': MO.OP, // n-ary union operator with dot
|
||||
'\u2A05': MO.OP, // n-ary square intersection operator
|
||||
'\u2A07': MO.OP, // two logical and operator
|
||||
'\u2A08': MO.OP, // two logical or operator
|
||||
'\u2A09': MO.OP, // n-ary times operator
|
||||
'\u2A0A': MO.OP, // modulo two sum
|
||||
'\u2A0B': MO.INTEGRAL2, // summation with integral
|
||||
'\u2A0C': MO.INTEGRAL, // quadruple integral operator
|
||||
'\u2A0D': MO.INTEGRAL2, // finite part integral
|
||||
'\u2A0E': MO.INTEGRAL2, // integral with double stroke
|
||||
'\u2A0F': MO.INTEGRAL2, // integral average with slash
|
||||
'\u2A10': MO.OP, // circulation function
|
||||
'\u2A11': MO.OP, // anticlockwise integration
|
||||
'\u2A12': MO.OP, // line integration with rectangular path around pole
|
||||
'\u2A13': MO.OP, // line integration with semicircular path around pole
|
||||
'\u2A14': MO.OP, // line integration not including the pole
|
||||
'\u2A15': MO.INTEGRAL2, // integral around a point operator
|
||||
'\u2A16': MO.INTEGRAL2, // quaternion integral operator
|
||||
'\u2A17': MO.INTEGRAL2, // integral with leftwards arrow with hook
|
||||
'\u2A18': MO.INTEGRAL2, // integral with times sign
|
||||
'\u2A19': MO.INTEGRAL2, // integral with intersection
|
||||
'\u2A1A': MO.INTEGRAL2, // integral with union
|
||||
'\u2A1B': MO.INTEGRAL2, // integral with overbar
|
||||
'\u2A1C': MO.INTEGRAL2, // integral with underbar
|
||||
'\u2AFC': MO.OP, // large triple vertical bar operator
|
||||
'\u2AFF': MO.OP // n-ary white vertical bar
|
||||
},
|
||||
infix: {
|
||||
'\u2A1D': MO.BIN3, // join
|
||||
'\u2A1E': MO.BIN3, // large left triangle operator
|
||||
'\u2A1F': MO.BIN3, // z notation schema composition
|
||||
'\u2A20': MO.BIN3, // z notation schema piping
|
||||
'\u2A21': MO.BIN3, // z notation schema projection
|
||||
'\u2A22': MO.BIN4, // plus sign with small circle above
|
||||
'\u2A23': MO.BIN4, // plus sign with circumflex accent above
|
||||
'\u2A24': MO.BIN4, // plus sign with tilde above
|
||||
'\u2A25': MO.BIN4, // plus sign with dot below
|
||||
'\u2A26': MO.BIN4, // plus sign with tilde below
|
||||
'\u2A27': MO.BIN4, // plus sign with subscript two
|
||||
'\u2A28': MO.BIN4, // plus sign with black triangle
|
||||
'\u2A29': MO.BIN4, // minus sign with comma above
|
||||
'\u2A2A': MO.BIN4, // minus sign with dot below
|
||||
'\u2A2B': MO.BIN4, // minus sign with falling dots
|
||||
'\u2A2C': MO.BIN4, // minus sign with rising dots
|
||||
'\u2A2D': MO.BIN4, // plus sign in left half circle
|
||||
'\u2A2E': MO.BIN4, // plus sign in right half circle
|
||||
'\u2A30': MO.BIN4, // multiplication sign with dot above
|
||||
'\u2A31': MO.BIN4, // multiplication sign with underbar
|
||||
'\u2A32': MO.BIN4, // semidirect product with bottom closed
|
||||
'\u2A33': MO.BIN4, // smash product
|
||||
'\u2A34': MO.BIN4, // multiplication sign in left half circle
|
||||
'\u2A35': MO.BIN4, // multiplication sign in right half circle
|
||||
'\u2A36': MO.BIN4, // circled multiplication sign with circumflex accent
|
||||
'\u2A37': MO.BIN4, // multiplication sign in double circle
|
||||
'\u2A38': MO.BIN4, // circled division sign
|
||||
'\u2A39': MO.BIN4, // plus sign in triangle
|
||||
'\u2A3A': MO.BIN4, // minus sign in triangle
|
||||
'\u2A3B': MO.BIN4, // multiplication sign in triangle
|
||||
'\u2A3C': MO.BIN4, // interior product
|
||||
'\u2A3D': MO.BIN4, // righthand interior product
|
||||
'\u2A3E': MO.BIN4, // z notation relational composition
|
||||
'\u2A40': MO.BIN4, // intersection with dot
|
||||
'\u2A41': MO.BIN4, // union with minus sign
|
||||
'\u2A42': MO.BIN4, // union with overbar
|
||||
'\u2A43': MO.BIN4, // intersection with overbar
|
||||
'\u2A44': MO.BIN4, // intersection with logical and
|
||||
'\u2A45': MO.BIN4, // union with logical or
|
||||
'\u2A46': MO.BIN4, // union above intersection
|
||||
'\u2A47': MO.BIN4, // intersection above union
|
||||
'\u2A48': MO.BIN4, // union above bar above intersection
|
||||
'\u2A49': MO.BIN4, // intersection above bar above union
|
||||
'\u2A4A': MO.BIN4, // union beside and joined with union
|
||||
'\u2A4B': MO.BIN4, // intersection beside and joined with intersection
|
||||
'\u2A4C': MO.BIN4, // closed union with serifs
|
||||
'\u2A4D': MO.BIN4, // closed intersection with serifs
|
||||
'\u2A4E': MO.BIN4, // double square intersection
|
||||
'\u2A4F': MO.BIN4, // double square union
|
||||
'\u2A50': MO.BIN4, // closed union with serifs and smash product
|
||||
'\u2A51': MO.BIN4, // logical and with dot above
|
||||
'\u2A52': MO.BIN4, // logical or with dot above
|
||||
'\u2A53': MO.BIN4, // double logical and
|
||||
'\u2A54': MO.BIN4, // double logical or
|
||||
'\u2A55': MO.BIN4, // two intersecting logical and
|
||||
'\u2A56': MO.BIN4, // two intersecting logical or
|
||||
'\u2A57': MO.BIN4, // sloping large or
|
||||
'\u2A58': MO.BIN4, // sloping large and
|
||||
'\u2A59': MO.REL, // logical or overlapping logical and
|
||||
'\u2A5A': MO.BIN4, // logical and with middle stem
|
||||
'\u2A5B': MO.BIN4, // logical or with middle stem
|
||||
'\u2A5C': MO.BIN4, // logical and with horizontal dash
|
||||
'\u2A5D': MO.BIN4, // logical or with horizontal dash
|
||||
'\u2A5E': MO.BIN4, // logical and with double overbar
|
||||
'\u2A5F': MO.BIN4, // logical and with underbar
|
||||
'\u2A60': MO.BIN4, // logical and with double underbar
|
||||
'\u2A61': MO.BIN4, // small vee with underbar
|
||||
'\u2A62': MO.BIN4, // logical or with double overbar
|
||||
'\u2A63': MO.BIN4, // logical or with double underbar
|
||||
'\u2A64': MO.BIN4, // z notation domain antirestriction
|
||||
'\u2A65': MO.BIN4, // z notation range antirestriction
|
||||
'\u2A66': MO.REL, // equals sign with dot below
|
||||
'\u2A67': MO.REL, // identical with dot above
|
||||
'\u2A68': MO.REL, // triple horizontal bar with double vertical stroke
|
||||
'\u2A69': MO.REL, // triple horizontal bar with triple vertical stroke
|
||||
'\u2A6A': MO.REL, // tilde operator with dot above
|
||||
'\u2A6B': MO.REL, // tilde operator with rising dots
|
||||
'\u2A6C': MO.REL, // similar minus similar
|
||||
'\u2A6D': MO.REL, // congruent with dot above
|
||||
'\u2A6E': MO.REL, // equals with asterisk
|
||||
'\u2A6F': MO.REL, // almost equal to with circumflex accent
|
||||
'\u2A70': MO.REL, // approximately equal or equal to
|
||||
'\u2A71': MO.BIN4, // equals sign above plus sign
|
||||
'\u2A72': MO.BIN4, // plus sign above equals sign
|
||||
'\u2A73': MO.REL, // equals sign above tilde operator
|
||||
'\u2A74': MO.REL, // double colon equal
|
||||
'\u2A75': MO.REL, // two consecutive equals signs
|
||||
'\u2A76': MO.REL, // three consecutive equals signs
|
||||
'\u2A77': MO.REL, // equals sign with two dots above and two dots below
|
||||
'\u2A78': MO.REL, // equivalent with four dots above
|
||||
'\u2A79': MO.REL, // less-than with circle inside
|
||||
'\u2A7A': MO.REL, // greater-than with circle inside
|
||||
'\u2A7B': MO.REL, // less-than with question mark above
|
||||
'\u2A7C': MO.REL, // greater-than with question mark above
|
||||
'\u2A7D': MO.REL, // less-than or slanted equal to
|
||||
'\u2A7D\u0338': MO.BIN4, // less-than or slanted equal to with slash
|
||||
'\u2A7E': MO.REL, // greater-than or slanted equal to
|
||||
'\u2A7E\u0338': MO.BIN4, // greater-than or slanted equal to with slash
|
||||
'\u2A7F': MO.REL, // less-than or slanted equal to with dot inside
|
||||
'\u2A80': MO.REL, // greater-than or slanted equal to with dot inside
|
||||
'\u2A81': MO.REL, // less-than or slanted equal to with dot above
|
||||
'\u2A82': MO.REL, // greater-than or slanted equal to with dot above
|
||||
'\u2A83': MO.REL, // less-than or slanted equal to with dot above right
|
||||
'\u2A84': MO.REL, // greater-than or slanted equal to with dot above left
|
||||
'\u2A85': MO.REL, // less-than or approximate
|
||||
'\u2A86': MO.REL, // greater-than or approximate
|
||||
'\u2A87': MO.REL, // less-than and single-line not equal to
|
||||
'\u2A88': MO.REL, // greater-than and single-line not equal to
|
||||
'\u2A89': MO.REL, // less-than and not approximate
|
||||
'\u2A8A': MO.REL, // greater-than and not approximate
|
||||
'\u2A8B': MO.REL, // less-than above double-line equal above greater-than
|
||||
'\u2A8C': MO.REL, // greater-than above double-line equal above less-than
|
||||
'\u2A8D': MO.REL, // less-than above similar or equal
|
||||
'\u2A8E': MO.REL, // greater-than above similar or equal
|
||||
'\u2A8F': MO.REL, // less-than above similar above greater-than
|
||||
'\u2A90': MO.REL, // greater-than above similar above less-than
|
||||
'\u2A91': MO.REL, // less-than above greater-than above double-line equal
|
||||
'\u2A92': MO.REL, // greater-than above less-than above double-line equal
|
||||
'\u2A93': MO.REL, // less-than above slanted equal above greater-than above slanted equal
|
||||
'\u2A94': MO.REL, // greater-than above slanted equal above less-than above slanted equal
|
||||
'\u2A95': MO.REL, // slanted equal to or less-than
|
||||
'\u2A96': MO.REL, // slanted equal to or greater-than
|
||||
'\u2A97': MO.REL, // slanted equal to or less-than with dot inside
|
||||
'\u2A98': MO.REL, // slanted equal to or greater-than with dot inside
|
||||
'\u2A99': MO.REL, // double-line equal to or less-than
|
||||
'\u2A9A': MO.REL, // double-line equal to or greater-than
|
||||
'\u2A9B': MO.REL, // double-line slanted equal to or less-than
|
||||
'\u2A9C': MO.REL, // double-line slanted equal to or greater-than
|
||||
'\u2A9D': MO.REL, // similar or less-than
|
||||
'\u2A9E': MO.REL, // similar or greater-than
|
||||
'\u2A9F': MO.REL, // similar above less-than above equals sign
|
||||
'\u2AA0': MO.REL, // similar above greater-than above equals sign
|
||||
'\u2AA1': MO.REL, // double nested less-than
|
||||
'\u2AA1\u0338': MO.BIN4, // double nested less-than with slash
|
||||
'\u2AA2': MO.REL, // double nested greater-than
|
||||
'\u2AA2\u0338': MO.BIN4, // double nested greater-than with slash
|
||||
'\u2AA3': MO.REL, // double nested less-than with underbar
|
||||
'\u2AA4': MO.REL, // greater-than overlapping less-than
|
||||
'\u2AA5': MO.REL, // greater-than beside less-than
|
||||
'\u2AA6': MO.REL, // less-than closed by curve
|
||||
'\u2AA7': MO.REL, // greater-than closed by curve
|
||||
'\u2AA8': MO.REL, // less-than closed by curve above slanted equal
|
||||
'\u2AA9': MO.REL, // greater-than closed by curve above slanted equal
|
||||
'\u2AAA': MO.REL, // smaller than
|
||||
'\u2AAB': MO.REL, // larger than
|
||||
'\u2AAC': MO.REL, // smaller than or equal to
|
||||
'\u2AAD': MO.REL, // larger than or equal to
|
||||
'\u2AAE': MO.REL, // equals sign with bumpy above
|
||||
'\u2AAF\u0338': MO.BIN4, // precedes above single-line equals sign with slash
|
||||
'\u2AB0\u0338': MO.BIN4, // succeeds above single-line equals sign with slash
|
||||
'\u2AB1': MO.REL, // precedes above single-line not equal to
|
||||
'\u2AB2': MO.REL, // succeeds above single-line not equal to
|
||||
'\u2AB3': MO.REL, // precedes above equals sign
|
||||
'\u2AB4': MO.REL, // succeeds above equals sign
|
||||
'\u2AB5': MO.REL, // precedes above not equal to
|
||||
'\u2AB6': MO.REL, // succeeds above not equal to
|
||||
'\u2AB7': MO.REL, // precedes above almost equal to
|
||||
'\u2AB8': MO.REL, // succeeds above almost equal to
|
||||
'\u2AB9': MO.REL, // precedes above not almost equal to
|
||||
'\u2ABA': MO.REL, // succeeds above not almost equal to
|
||||
'\u2ABB': MO.REL, // double precedes
|
||||
'\u2ABC': MO.REL, // double succeeds
|
||||
'\u2ABD': MO.REL, // subset with dot
|
||||
'\u2ABE': MO.REL, // superset with dot
|
||||
'\u2ABF': MO.REL, // subset with plus sign below
|
||||
'\u2AC0': MO.REL, // superset with plus sign below
|
||||
'\u2AC1': MO.REL, // subset with multiplication sign below
|
||||
'\u2AC2': MO.REL, // superset with multiplication sign below
|
||||
'\u2AC3': MO.REL, // subset of or equal to with dot above
|
||||
'\u2AC4': MO.REL, // superset of or equal to with dot above
|
||||
'\u2AC5': MO.REL, // subset of above equals sign
|
||||
'\u2AC6': MO.REL, // superset of above equals sign
|
||||
'\u2AC7': MO.REL, // subset of above tilde operator
|
||||
'\u2AC8': MO.REL, // superset of above tilde operator
|
||||
'\u2AC9': MO.REL, // subset of above almost equal to
|
||||
'\u2ACA': MO.REL, // superset of above almost equal to
|
||||
'\u2ACB': MO.REL, // subset of above not equal to
|
||||
'\u2ACC': MO.REL, // superset of above not equal to
|
||||
'\u2ACD': MO.REL, // square left open box operator
|
||||
'\u2ACE': MO.REL, // square right open box operator
|
||||
'\u2ACF': MO.REL, // closed subset
|
||||
'\u2AD0': MO.REL, // closed superset
|
||||
'\u2AD1': MO.REL, // closed subset or equal to
|
||||
'\u2AD2': MO.REL, // closed superset or equal to
|
||||
'\u2AD3': MO.REL, // subset above superset
|
||||
'\u2AD4': MO.REL, // superset above subset
|
||||
'\u2AD5': MO.REL, // subset above subset
|
||||
'\u2AD6': MO.REL, // superset above superset
|
||||
'\u2AD7': MO.REL, // superset beside subset
|
||||
'\u2AD8': MO.REL, // superset beside and joined by dash with subset
|
||||
'\u2AD9': MO.REL, // element of opening downwards
|
||||
'\u2ADA': MO.REL, // pitchfork with tee top
|
||||
'\u2ADB': MO.REL, // transversal intersection
|
||||
'\u2ADC': MO.REL, // forking
|
||||
'\u2ADD': MO.REL, // nonforking
|
||||
'\u2ADE': MO.REL, // short left tack
|
||||
'\u2ADF': MO.REL, // short down tack
|
||||
'\u2AE0': MO.REL, // short up tack
|
||||
'\u2AE1': MO.REL, // perpendicular with s
|
||||
'\u2AE2': MO.REL, // vertical bar triple right turnstile
|
||||
'\u2AE3': MO.REL, // double vertical bar left turnstile
|
||||
'\u2AE4': MO.REL, // vertical bar double left turnstile
|
||||
'\u2AE5': MO.REL, // double vertical bar double left turnstile
|
||||
'\u2AE6': MO.REL, // long dash from left member of double vertical
|
||||
'\u2AE7': MO.REL, // short down tack with overbar
|
||||
'\u2AE8': MO.REL, // short up tack with underbar
|
||||
'\u2AE9': MO.REL, // short up tack above short down tack
|
||||
'\u2AEA': MO.REL, // double down tack
|
||||
'\u2AEB': MO.REL, // double up tack
|
||||
'\u2AEC': MO.REL, // double stroke not sign
|
||||
'\u2AED': MO.REL, // reversed double stroke not sign
|
||||
'\u2AEE': MO.REL, // does not divide with reversed negation slash
|
||||
'\u2AEF': MO.REL, // vertical line with circle above
|
||||
'\u2AF0': MO.REL, // vertical line with circle below
|
||||
'\u2AF1': MO.REL, // down tack with circle below
|
||||
'\u2AF2': MO.REL, // parallel with horizontal stroke
|
||||
'\u2AF3': MO.REL, // parallel with tilde operator
|
||||
'\u2AF4': MO.BIN4, // triple vertical bar binary relation
|
||||
'\u2AF5': MO.BIN4, // triple vertical bar with horizontal stroke
|
||||
'\u2AF6': MO.BIN4, // triple colon operator
|
||||
'\u2AF7': MO.REL, // triple nested less-than
|
||||
'\u2AF8': MO.REL, // triple nested greater-than
|
||||
'\u2AF9': MO.REL, // double-line slanted less-than or equal to
|
||||
'\u2AFA': MO.REL, // double-line slanted greater-than or equal to
|
||||
'\u2AFB': MO.BIN4, // triple solidus binary relation
|
||||
'\u2AFD': MO.BIN4, // double solidus operator
|
||||
'\u2AFE': MO.BIN3 // white vertical bar
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/SuppMathOperators.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
Vendored
-162
@@ -1,162 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/optable/SupplementalArrowsB.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MML) {
|
||||
var MO = MML.mo.OPTYPES;
|
||||
var TEXCLASS = MML.TEXCLASS;
|
||||
|
||||
MathJax.Hub.Insert(MML.mo.prototype,{
|
||||
OPTABLE: {
|
||||
infix: {
|
||||
'\u2900': MO.REL, // rightwards two-headed arrow with vertical stroke
|
||||
'\u2901': MO.REL, // rightwards two-headed arrow with double vertical stroke
|
||||
'\u2902': MO.REL, // leftwards double arrow with vertical stroke
|
||||
'\u2903': MO.REL, // rightwards double arrow with vertical stroke
|
||||
'\u2904': MO.REL, // left right double arrow with vertical stroke
|
||||
'\u2905': MO.REL, // rightwards two-headed arrow from bar
|
||||
'\u2906': MO.REL, // leftwards double arrow from bar
|
||||
'\u2907': MO.REL, // rightwards double arrow from bar
|
||||
'\u2908': MO.REL, // downwards arrow with horizontal stroke
|
||||
'\u2909': MO.REL, // upwards arrow with horizontal stroke
|
||||
'\u290A': MO.WIDEREL, // upwards triple arrow
|
||||
'\u290B': MO.WIDEREL, // downwards triple arrow
|
||||
'\u290C': MO.WIDEREL, // leftwards double dash arrow
|
||||
'\u290D': MO.WIDEREL, // rightwards double dash arrow
|
||||
'\u290E': MO.WIDEREL, // leftwards triple dash arrow
|
||||
'\u290F': MO.WIDEREL, // rightwards triple dash arrow
|
||||
'\u2910': MO.WIDEREL, // rightwards two-headed triple dash arrow
|
||||
'\u2911': MO.REL, // rightwards arrow with dotted stem
|
||||
'\u2912': MO.WIDEREL, // upwards arrow to bar
|
||||
'\u2913': MO.WIDEREL, // downwards arrow to bar
|
||||
'\u2914': MO.REL, // rightwards arrow with tail with vertical stroke
|
||||
'\u2915': MO.REL, // rightwards arrow with tail with double vertical stroke
|
||||
'\u2916': MO.REL, // rightwards two-headed arrow with tail
|
||||
'\u2917': MO.REL, // rightwards two-headed arrow with tail with vertical stroke
|
||||
'\u2918': MO.REL, // rightwards two-headed arrow with tail with double vertical stroke
|
||||
'\u2919': MO.REL, // leftwards arrow-tail
|
||||
'\u291A': MO.REL, // rightwards arrow-tail
|
||||
'\u291B': MO.REL, // leftwards double arrow-tail
|
||||
'\u291C': MO.REL, // rightwards double arrow-tail
|
||||
'\u291D': MO.REL, // leftwards arrow to black diamond
|
||||
'\u291E': MO.REL, // rightwards arrow to black diamond
|
||||
'\u291F': MO.REL, // leftwards arrow from bar to black diamond
|
||||
'\u2920': MO.REL, // rightwards arrow from bar to black diamond
|
||||
'\u2921': MO.WIDEREL, // north west and south east arrow
|
||||
'\u2922': MO.WIDEREL, // north east and south west arrow
|
||||
'\u2923': MO.REL, // north west arrow with hook
|
||||
'\u2924': MO.REL, // north east arrow with hook
|
||||
'\u2925': MO.REL, // south east arrow with hook
|
||||
'\u2926': MO.REL, // south west arrow with hook
|
||||
'\u2927': MO.REL, // north west arrow and north east arrow
|
||||
'\u2928': MO.REL, // north east arrow and south east arrow
|
||||
'\u2929': MO.REL, // south east arrow and south west arrow
|
||||
'\u292A': MO.REL, // south west arrow and north west arrow
|
||||
'\u292B': MO.REL, // rising diagonal crossing falling diagonal
|
||||
'\u292C': MO.REL, // falling diagonal crossing rising diagonal
|
||||
'\u292D': MO.REL, // south east arrow crossing north east arrow
|
||||
'\u292E': MO.REL, // north east arrow crossing south east arrow
|
||||
'\u292F': MO.REL, // falling diagonal crossing north east arrow
|
||||
'\u2930': MO.REL, // rising diagonal crossing south east arrow
|
||||
'\u2931': MO.REL, // north east arrow crossing north west arrow
|
||||
'\u2932': MO.REL, // north west arrow crossing north east arrow
|
||||
'\u2933': MO.REL, // wave arrow pointing directly right
|
||||
'\u2934': MO.REL, // arrow pointing rightwards then curving upwards
|
||||
'\u2935': MO.REL, // arrow pointing rightwards then curving downwards
|
||||
'\u2936': MO.REL, // arrow pointing downwards then curving leftwards
|
||||
'\u2937': MO.REL, // arrow pointing downwards then curving rightwards
|
||||
'\u2938': MO.REL, // right-side arc clockwise arrow
|
||||
'\u2939': MO.REL, // left-side arc anticlockwise arrow
|
||||
'\u293A': MO.REL, // top arc anticlockwise arrow
|
||||
'\u293B': MO.REL, // bottom arc anticlockwise arrow
|
||||
'\u293C': MO.REL, // top arc clockwise arrow with minus
|
||||
'\u293D': MO.REL, // top arc anticlockwise arrow with plus
|
||||
'\u293E': MO.REL, // lower right semicircular clockwise arrow
|
||||
'\u293F': MO.REL, // lower left semicircular anticlockwise arrow
|
||||
'\u2940': MO.REL, // anticlockwise closed circle arrow
|
||||
'\u2941': MO.REL, // clockwise closed circle arrow
|
||||
'\u2942': MO.REL, // rightwards arrow above short leftwards arrow
|
||||
'\u2943': MO.REL, // leftwards arrow above short rightwards arrow
|
||||
'\u2944': MO.REL, // short rightwards arrow above leftwards arrow
|
||||
'\u2945': MO.REL, // rightwards arrow with plus below
|
||||
'\u2946': MO.REL, // leftwards arrow with plus below
|
||||
'\u2947': MO.REL, // rightwards arrow through x
|
||||
'\u2948': MO.REL, // left right arrow through small circle
|
||||
'\u2949': MO.REL, // upwards two-headed arrow from small circle
|
||||
'\u294A': MO.REL, // left barb up right barb down harpoon
|
||||
'\u294B': MO.REL, // left barb down right barb up harpoon
|
||||
'\u294C': MO.REL, // up barb right down barb left harpoon
|
||||
'\u294D': MO.REL, // up barb left down barb right harpoon
|
||||
'\u294E': MO.RELACCENT, // left barb up right barb up harpoon
|
||||
'\u294F': MO.WIDEREL, // up barb right down barb right harpoon
|
||||
'\u2950': MO.WIDEREL, // left barb down right barb down harpoon
|
||||
'\u2951': MO.WIDEREL, // up barb left down barb left harpoon
|
||||
'\u2952': MO.WIDEREL, // leftwards harpoon with barb up to bar
|
||||
'\u2953': MO.WIDEREL, // rightwards harpoon with barb up to bar
|
||||
'\u2954': MO.WIDEREL, // upwards harpoon with barb right to bar
|
||||
'\u2955': MO.WIDEREL, // downwards harpoon with barb right to bar
|
||||
'\u2956': MO.WIDEREL, // leftwards harpoon with barb down to bar
|
||||
'\u2957': MO.WIDEREL, // rightwards harpoon with barb down to bar
|
||||
'\u2958': MO.WIDEREL, // upwards harpoon with barb left to bar
|
||||
'\u2959': MO.WIDEREL, // downwards harpoon with barb left to bar
|
||||
'\u295A': MO.WIDEREL, // leftwards harpoon with barb up from bar
|
||||
'\u295B': MO.WIDEREL, // rightwards harpoon with barb up from bar
|
||||
'\u295C': MO.WIDEREL, // upwards harpoon with barb right from bar
|
||||
'\u295D': MO.WIDEREL, // downwards harpoon with barb right from bar
|
||||
'\u295E': MO.WIDEREL, // leftwards harpoon with barb down from bar
|
||||
'\u295F': MO.WIDEREL, // rightwards harpoon with barb down from bar
|
||||
'\u2960': MO.WIDEREL, // upwards harpoon with barb left from bar
|
||||
'\u2961': MO.WIDEREL, // downwards harpoon with barb left from bar
|
||||
'\u2962': MO.REL, // leftwards harpoon with barb up above leftwards harpoon with barb down
|
||||
'\u2963': MO.REL, // upwards harpoon with barb left beside upwards harpoon with barb right
|
||||
'\u2964': MO.REL, // rightwards harpoon with barb up above rightwards harpoon with barb down
|
||||
'\u2965': MO.REL, // downwards harpoon with barb left beside downwards harpoon with barb right
|
||||
'\u2966': MO.REL, // leftwards harpoon with barb up above rightwards harpoon with barb up
|
||||
'\u2967': MO.REL, // leftwards harpoon with barb down above rightwards harpoon with barb down
|
||||
'\u2968': MO.REL, // rightwards harpoon with barb up above leftwards harpoon with barb up
|
||||
'\u2969': MO.REL, // rightwards harpoon with barb down above leftwards harpoon with barb down
|
||||
'\u296A': MO.REL, // leftwards harpoon with barb up above long dash
|
||||
'\u296B': MO.REL, // leftwards harpoon with barb down below long dash
|
||||
'\u296C': MO.REL, // rightwards harpoon with barb up above long dash
|
||||
'\u296D': MO.REL, // rightwards harpoon with barb down below long dash
|
||||
'\u296E': MO.WIDEREL, // upwards harpoon with barb left beside downwards harpoon with barb right
|
||||
'\u296F': MO.WIDEREL, // downwards harpoon with barb left beside upwards harpoon with barb right
|
||||
'\u2970': MO.REL, // right double arrow with rounded head
|
||||
'\u2971': MO.REL, // equals sign above rightwards arrow
|
||||
'\u2972': MO.REL, // tilde operator above rightwards arrow
|
||||
'\u2973': MO.REL, // leftwards arrow above tilde operator
|
||||
'\u2974': MO.REL, // rightwards arrow above tilde operator
|
||||
'\u2975': MO.REL, // rightwards arrow above almost equal to
|
||||
'\u2976': MO.REL, // less-than above leftwards arrow
|
||||
'\u2977': MO.REL, // leftwards arrow through less-than
|
||||
'\u2978': MO.REL, // greater-than above rightwards arrow
|
||||
'\u2979': MO.REL, // subset above rightwards arrow
|
||||
'\u297A': MO.REL, // leftwards arrow through subset
|
||||
'\u297B': MO.REL, // superset above leftwards arrow
|
||||
'\u297C': MO.REL, // left fish tail
|
||||
'\u297D': MO.REL, // right fish tail
|
||||
'\u297E': MO.REL, // up fish tail
|
||||
'\u297F': MO.REL // down fish tail
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MML.optableDir+"/SupplementalArrowsB.js");
|
||||
|
||||
})(MathJax.ElementJax.mml);
|
||||
@@ -1,39 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/input/MathML/config.js
|
||||
*
|
||||
* Initializes the MathML InputJax (the main definition is in
|
||||
* MathJax/jax/input/MathML/jax.js, which is loaded when needed).
|
||||
*
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Copyright (c) 2009 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
MathJax.InputJax.MathML = MathJax.InputJax({
|
||||
name: "MathML",
|
||||
version: 1.0,
|
||||
directory: MathJax.InputJax.directory + "/MathML",
|
||||
extensionDir: MathJax.InputJax.extensionDir + "/MathML",
|
||||
entityDir: MathJax.InputJax.directory + "/MathML/entities",
|
||||
require: [MathJax.ElementJax.directory + "/mml/jax.js"],
|
||||
|
||||
config: {
|
||||
useMathMLspacing: false // false means use TeX spacing, true means MML spacing
|
||||
}
|
||||
});
|
||||
MathJax.InputJax.MathML.Register("math/mml");
|
||||
|
||||
MathJax.InputJax.MathML.loadComplete("config.js");
|
||||
@@ -1,87 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/a.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'AElig': '\u00C6',
|
||||
'Aacute': '\u00C1',
|
||||
'Abreve': '\u0102',
|
||||
'Acirc': '\u00C2',
|
||||
'Acy': '\u0410',
|
||||
'Agrave': '\u00C0',
|
||||
'Amacr': '\u0100',
|
||||
'And': '\u2A53',
|
||||
'Aogon': '\u0104',
|
||||
'Aring': '\u00C5',
|
||||
'Assign': '\u2254',
|
||||
'Atilde': '\u00C3',
|
||||
'Auml': '\u00C4',
|
||||
'aacute': '\u00E1',
|
||||
'abreve': '\u0103',
|
||||
'ac': '\u223E',
|
||||
'acE': '\u223E\u0333',
|
||||
'acd': '\u223F',
|
||||
'acirc': '\u00E2',
|
||||
'acy': '\u0430',
|
||||
'aelig': '\u00E6',
|
||||
'af': '\u2061',
|
||||
'agrave': '\u00E0',
|
||||
'amacr': '\u0101',
|
||||
'amp': '\u0026',
|
||||
'andand': '\u2A55',
|
||||
'andd': '\u2A5C',
|
||||
'andslope': '\u2A58',
|
||||
'andv': '\u2A5A',
|
||||
'ange': '\u29A4',
|
||||
'angle': '\u2220',
|
||||
'angmsdaa': '\u29A8',
|
||||
'angmsdab': '\u29A9',
|
||||
'angmsdac': '\u29AA',
|
||||
'angmsdad': '\u29AB',
|
||||
'angmsdae': '\u29AC',
|
||||
'angmsdaf': '\u29AD',
|
||||
'angmsdag': '\u29AE',
|
||||
'angmsdah': '\u29AF',
|
||||
'angrt': '\u221F',
|
||||
'angrtvb': '\u22BE',
|
||||
'angrtvbd': '\u299D',
|
||||
'angst': '\u212B',
|
||||
'angzarr': '\u237C',
|
||||
'aogon': '\u0105',
|
||||
'ap': '\u2248',
|
||||
'apE': '\u2A70',
|
||||
'apacir': '\u2A6F',
|
||||
'apid': '\u224B',
|
||||
'apos': '\u0027',
|
||||
'approx': '\u2248',
|
||||
'approxeq': '\u224A',
|
||||
'aring': '\u00E5',
|
||||
'ast': '\u002A',
|
||||
'asymp': '\u2248',
|
||||
'asympeq': '\u224D',
|
||||
'atilde': '\u00E3',
|
||||
'auml': '\u00E4',
|
||||
'awconint': '\u2233',
|
||||
'awint': '\u2A11'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/a.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-114
@@ -1,114 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/b.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'Barv': '\u2AE7',
|
||||
'Barwed': '\u2306',
|
||||
'Bcy': '\u0411',
|
||||
'Bernoullis': '\u212C',
|
||||
'Bumpeq': '\u224E',
|
||||
'bNot': '\u2AED',
|
||||
'backcong': '\u224C',
|
||||
'backepsilon': '\u03F6',
|
||||
'barvee': '\u22BD',
|
||||
'barwed': '\u2305',
|
||||
'barwedge': '\u2305',
|
||||
'bbrk': '\u23B5',
|
||||
'bbrktbrk': '\u23B6',
|
||||
'bcong': '\u224C',
|
||||
'bcy': '\u0431',
|
||||
'becaus': '\u2235',
|
||||
'because': '\u2235',
|
||||
'bemptyv': '\u29B0',
|
||||
'bepsi': '\u03F6',
|
||||
'bernou': '\u212C',
|
||||
'bigcap': '\u22C2',
|
||||
'bigcup': '\u22C3',
|
||||
'bigvee': '\u22C1',
|
||||
'bigwedge': '\u22C0',
|
||||
'bkarow': '\u290D',
|
||||
'blacksquare': '\u25AA',
|
||||
'blacktriangleright': '\u25B8',
|
||||
'blank': '\u2423',
|
||||
'blk12': '\u2592',
|
||||
'blk14': '\u2591',
|
||||
'blk34': '\u2593',
|
||||
'block': '\u2588',
|
||||
'bne': '\u003D\u20E5',
|
||||
'bnequiv': '\u2261\u20E5',
|
||||
'bnot': '\u2310',
|
||||
'bot': '\u22A5',
|
||||
'bottom': '\u22A5',
|
||||
'boxDL': '\u2557',
|
||||
'boxDR': '\u2554',
|
||||
'boxDl': '\u2556',
|
||||
'boxDr': '\u2553',
|
||||
'boxH': '\u2550',
|
||||
'boxHD': '\u2566',
|
||||
'boxHU': '\u2569',
|
||||
'boxHd': '\u2564',
|
||||
'boxHu': '\u2567',
|
||||
'boxUL': '\u255D',
|
||||
'boxUR': '\u255A',
|
||||
'boxUl': '\u255C',
|
||||
'boxUr': '\u2559',
|
||||
'boxV': '\u2551',
|
||||
'boxVH': '\u256C',
|
||||
'boxVL': '\u2563',
|
||||
'boxVR': '\u2560',
|
||||
'boxVh': '\u256B',
|
||||
'boxVl': '\u2562',
|
||||
'boxVr': '\u255F',
|
||||
'boxbox': '\u29C9',
|
||||
'boxdL': '\u2555',
|
||||
'boxdR': '\u2552',
|
||||
'boxh': '\u2500',
|
||||
'boxhD': '\u2565',
|
||||
'boxhU': '\u2568',
|
||||
'boxhd': '\u252C',
|
||||
'boxhu': '\u2534',
|
||||
'boxuL': '\u255B',
|
||||
'boxuR': '\u2558',
|
||||
'boxv': '\u2502',
|
||||
'boxvH': '\u256A',
|
||||
'boxvL': '\u2561',
|
||||
'boxvR': '\u255E',
|
||||
'boxvh': '\u253C',
|
||||
'boxvl': '\u2524',
|
||||
'boxvr': '\u251C',
|
||||
'bprime': '\u2035',
|
||||
'breve': '\u02D8',
|
||||
'brvbar': '\u00A6',
|
||||
'bsemi': '\u204F',
|
||||
'bsim': '\u223D',
|
||||
'bsime': '\u22CD',
|
||||
'bsolb': '\u29C5',
|
||||
'bsolhsub': '\u005C\u2282',
|
||||
'bullet': '\u2022',
|
||||
'bump': '\u224E',
|
||||
'bumpE': '\u2AAE',
|
||||
'bumpe': '\u224F',
|
||||
'bumpeq': '\u224F'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/b.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-111
@@ -1,111 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/c.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'CHcy': '\u0427',
|
||||
'Cacute': '\u0106',
|
||||
'CapitalDifferentialD': '\u2145',
|
||||
'Cayleys': '\u212D',
|
||||
'Ccaron': '\u010C',
|
||||
'Ccedil': '\u00C7',
|
||||
'Ccirc': '\u0108',
|
||||
'Cconint': '\u2230',
|
||||
'Cdot': '\u010A',
|
||||
'Cedilla': '\u00B8',
|
||||
'ClockwiseContourIntegral': '\u2232',
|
||||
'CloseCurlyDoubleQuote': '\u201D',
|
||||
'CloseCurlyQuote': '\u2019',
|
||||
'Colon': '\u2237',
|
||||
'Colone': '\u2A74',
|
||||
'Conint': '\u222F',
|
||||
'CounterClockwiseContourIntegral': '\u2233',
|
||||
'cacute': '\u0107',
|
||||
'capand': '\u2A44',
|
||||
'capbrcup': '\u2A49',
|
||||
'capcap': '\u2A4B',
|
||||
'capcup': '\u2A47',
|
||||
'capdot': '\u2A40',
|
||||
'caps': '\u2229\uFE00',
|
||||
'caret': '\u2041',
|
||||
'caron': '\u02C7',
|
||||
'ccaps': '\u2A4D',
|
||||
'ccaron': '\u010D',
|
||||
'ccedil': '\u00E7',
|
||||
'ccirc': '\u0109',
|
||||
'ccups': '\u2A4C',
|
||||
'ccupssm': '\u2A50',
|
||||
'cdot': '\u010B',
|
||||
'cedil': '\u00B8',
|
||||
'cemptyv': '\u29B2',
|
||||
'cent': '\u00A2',
|
||||
'centerdot': '\u00B7',
|
||||
'chcy': '\u0447',
|
||||
'checkmark': '\u2713',
|
||||
'cir': '\u25CB',
|
||||
'cirE': '\u29C3',
|
||||
'cire': '\u2257',
|
||||
'cirfnint': '\u2A10',
|
||||
'cirmid': '\u2AEF',
|
||||
'cirscir': '\u29C2',
|
||||
'clubsuit': '\u2663',
|
||||
'colone': '\u2254',
|
||||
'coloneq': '\u2254',
|
||||
'comma': '\u002C',
|
||||
'commat': '\u0040',
|
||||
'compfn': '\u2218',
|
||||
'complement': '\u2201',
|
||||
'complexes': '\u2102',
|
||||
'cong': '\u2245',
|
||||
'congdot': '\u2A6D',
|
||||
'conint': '\u222E',
|
||||
'coprod': '\u2210',
|
||||
'copy': '\u00A9',
|
||||
'copysr': '\u2117',
|
||||
'cross': '\u2717',
|
||||
'csub': '\u2ACF',
|
||||
'csube': '\u2AD1',
|
||||
'csup': '\u2AD0',
|
||||
'csupe': '\u2AD2',
|
||||
'cudarrl': '\u2938',
|
||||
'cudarrr': '\u2935',
|
||||
'cularrp': '\u293D',
|
||||
'cupbrcap': '\u2A48',
|
||||
'cupcap': '\u2A46',
|
||||
'cupcup': '\u2A4A',
|
||||
'cupdot': '\u228D',
|
||||
'cupor': '\u2A45',
|
||||
'cups': '\u222A\uFE00',
|
||||
'curarrm': '\u293C',
|
||||
'curlyeqprec': '\u22DE',
|
||||
'curlyeqsucc': '\u22DF',
|
||||
'curren': '\u00A4',
|
||||
'curvearrowleft': '\u21B6',
|
||||
'curvearrowright': '\u21B7',
|
||||
'cuvee': '\u22CE',
|
||||
'cuwed': '\u22CF',
|
||||
'cwconint': '\u2232',
|
||||
'cwint': '\u2231',
|
||||
'cylcty': '\u232D'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/c.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-112
@@ -1,112 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/d.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'DD': '\u2145',
|
||||
'DDotrahd': '\u2911',
|
||||
'DJcy': '\u0402',
|
||||
'DScy': '\u0405',
|
||||
'DZcy': '\u040F',
|
||||
'Darr': '\u21A1',
|
||||
'Dashv': '\u2AE4',
|
||||
'Dcaron': '\u010E',
|
||||
'Dcy': '\u0414',
|
||||
'DiacriticalAcute': '\u00B4',
|
||||
'DiacriticalDot': '\u02D9',
|
||||
'DiacriticalDoubleAcute': '\u02DD',
|
||||
'DiacriticalGrave': '\u0060',
|
||||
'DiacriticalTilde': '\u02DC',
|
||||
'Dot': '\u00A8',
|
||||
'DotDot': '\u20DC',
|
||||
'DoubleContourIntegral': '\u222F',
|
||||
'DoubleDownArrow': '\u21D3',
|
||||
'DoubleLeftArrow': '\u21D0',
|
||||
'DoubleLeftRightArrow': '\u21D4',
|
||||
'DoubleLeftTee': '\u2AE4',
|
||||
'DoubleLongLeftArrow': '\u27F8',
|
||||
'DoubleLongLeftRightArrow': '\u27FA',
|
||||
'DoubleLongRightArrow': '\u27F9',
|
||||
'DoubleRightArrow': '\u21D2',
|
||||
'DoubleUpArrow': '\u21D1',
|
||||
'DoubleUpDownArrow': '\u21D5',
|
||||
'DownArrowBar': '\u2913',
|
||||
'DownArrowUpArrow': '\u21F5',
|
||||
'DownBreve': '\u0311',
|
||||
'DownLeftRightVector': '\u2950',
|
||||
'DownLeftTeeVector': '\u295E',
|
||||
'DownLeftVectorBar': '\u2956',
|
||||
'DownRightTeeVector': '\u295F',
|
||||
'DownRightVectorBar': '\u2957',
|
||||
'DownTeeArrow': '\u21A7',
|
||||
'Dstrok': '\u0110',
|
||||
'dArr': '\u21D3',
|
||||
'dHar': '\u2965',
|
||||
'darr': '\u2193',
|
||||
'dash': '\u2010',
|
||||
'dashv': '\u22A3',
|
||||
'dbkarow': '\u290F',
|
||||
'dblac': '\u02DD',
|
||||
'dcaron': '\u010F',
|
||||
'dcy': '\u0434',
|
||||
'dd': '\u2146',
|
||||
'ddagger': '\u2021',
|
||||
'ddotseq': '\u2A77',
|
||||
'demptyv': '\u29B1',
|
||||
'dfisht': '\u297F',
|
||||
'dharl': '\u21C3',
|
||||
'dharr': '\u21C2',
|
||||
'diam': '\u22C4',
|
||||
'diamond': '\u22C4',
|
||||
'diamondsuit': '\u2666',
|
||||
'diams': '\u2666',
|
||||
'die': '\u00A8',
|
||||
'disin': '\u22F2',
|
||||
'divide': '\u00F7',
|
||||
'divonx': '\u22C7',
|
||||
'djcy': '\u0452',
|
||||
'dlcorn': '\u231E',
|
||||
'dlcrop': '\u230D',
|
||||
'dollar': '\u0024',
|
||||
'doteq': '\u2250',
|
||||
'dotminus': '\u2238',
|
||||
'doublebarwedge': '\u2306',
|
||||
'downarrow': '\u2193',
|
||||
'downdownarrows': '\u21CA',
|
||||
'downharpoonleft': '\u21C3',
|
||||
'downharpoonright': '\u21C2',
|
||||
'drbkarow': '\u2910',
|
||||
'drcorn': '\u231F',
|
||||
'drcrop': '\u230C',
|
||||
'dscy': '\u0455',
|
||||
'dsol': '\u29F6',
|
||||
'dstrok': '\u0111',
|
||||
'dtri': '\u25BF',
|
||||
'dtrif': '\u25BE',
|
||||
'duarr': '\u21F5',
|
||||
'duhar': '\u296F',
|
||||
'dwangle': '\u29A6',
|
||||
'dzcy': '\u045F',
|
||||
'dzigrarr': '\u27FF'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/d.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,88 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/e.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'ENG': '\u014A',
|
||||
'ETH': '\u00D0',
|
||||
'Eacute': '\u00C9',
|
||||
'Ecaron': '\u011A',
|
||||
'Ecirc': '\u00CA',
|
||||
'Ecy': '\u042D',
|
||||
'Edot': '\u0116',
|
||||
'Egrave': '\u00C8',
|
||||
'Emacr': '\u0112',
|
||||
'EmptySmallSquare': '\u25FB',
|
||||
'EmptyVerySmallSquare': '\u25AB',
|
||||
'Eogon': '\u0118',
|
||||
'Equal': '\u2A75',
|
||||
'Esim': '\u2A73',
|
||||
'Euml': '\u00CB',
|
||||
'eDDot': '\u2A77',
|
||||
'eDot': '\u2251',
|
||||
'eacute': '\u00E9',
|
||||
'easter': '\u2A6E',
|
||||
'ecaron': '\u011B',
|
||||
'ecirc': '\u00EA',
|
||||
'ecolon': '\u2255',
|
||||
'ecy': '\u044D',
|
||||
'edot': '\u0117',
|
||||
'ee': '\u2147',
|
||||
'eg': '\u2A9A',
|
||||
'egrave': '\u00E8',
|
||||
'egsdot': '\u2A98',
|
||||
'el': '\u2A99',
|
||||
'elinters': '\uFFFD',
|
||||
'elsdot': '\u2A97',
|
||||
'emacr': '\u0113',
|
||||
'emptyset': '\u2205',
|
||||
'emptyv': '\u2205',
|
||||
'emsp': '\u2003',
|
||||
'emsp13': '\u2004',
|
||||
'emsp14': '\u2005',
|
||||
'eng': '\u014B',
|
||||
'ensp': '\u2002',
|
||||
'eogon': '\u0119',
|
||||
'epar': '\u22D5',
|
||||
'eparsl': '\u29E3',
|
||||
'eplus': '\u2A71',
|
||||
'eqcirc': '\u2256',
|
||||
'eqcolon': '\u2255',
|
||||
'eqsim': '\u2242',
|
||||
'eqslantgtr': '\u2A96',
|
||||
'eqslantless': '\u2A95',
|
||||
'equals': '\u003D',
|
||||
'equest': '\u225F',
|
||||
'equiv': '\u2261',
|
||||
'equivDD': '\u2A78',
|
||||
'eqvparsl': '\u29E5',
|
||||
'erarr': '\u2971',
|
||||
'esdot': '\u2250',
|
||||
'esim': '\u2242',
|
||||
'euml': '\u00EB',
|
||||
'excl': '\u0021',
|
||||
'exist': '\u2203',
|
||||
'expectation': '\u2130',
|
||||
'exponentiale': '\u2147'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/e.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,58 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/f.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'Fcy': '\u0424',
|
||||
'FilledSmallSquare': '\u25FC',
|
||||
'Fouriertrf': '\u2131',
|
||||
'fallingdotseq': '\u2252',
|
||||
'fcy': '\u0444',
|
||||
'female': '\u2640',
|
||||
'ffilig': '\uFB03',
|
||||
'fflig': '\uFB00',
|
||||
'ffllig': '\uFB04',
|
||||
'filig': '\uFB01',
|
||||
'fllig': '\uFB02',
|
||||
'fltns': '\u25B1',
|
||||
'fnof': '\u0192',
|
||||
'forall': '\u2200',
|
||||
'forkv': '\u2AD9',
|
||||
'fpartint': '\u2A0D',
|
||||
'frac12': '\u00BD',
|
||||
'frac13': '\u2153',
|
||||
'frac14': '\u00BC',
|
||||
'frac15': '\u2155',
|
||||
'frac16': '\u2159',
|
||||
'frac18': '\u215B',
|
||||
'frac23': '\u2154',
|
||||
'frac25': '\u2156',
|
||||
'frac34': '\u00BE',
|
||||
'frac35': '\u2157',
|
||||
'frac38': '\u215C',
|
||||
'frac45': '\u2158',
|
||||
'frac56': '\u215A',
|
||||
'frac58': '\u215D',
|
||||
'frac78': '\u215E'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/f.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-79
@@ -1,79 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/fr.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'Afr': '\uD835\uDD04',
|
||||
'Bfr': '\uD835\uDD05',
|
||||
'Cfr': '\u212D',
|
||||
'Dfr': '\uD835\uDD07',
|
||||
'Efr': '\uD835\uDD08',
|
||||
'Ffr': '\uD835\uDD09',
|
||||
'Gfr': '\uD835\uDD0A',
|
||||
'Hfr': '\u210C',
|
||||
'Ifr': '\u2111',
|
||||
'Jfr': '\uD835\uDD0D',
|
||||
'Kfr': '\uD835\uDD0E',
|
||||
'Lfr': '\uD835\uDD0F',
|
||||
'Mfr': '\uD835\uDD10',
|
||||
'Nfr': '\uD835\uDD11',
|
||||
'Ofr': '\uD835\uDD12',
|
||||
'Pfr': '\uD835\uDD13',
|
||||
'Qfr': '\uD835\uDD14',
|
||||
'Rfr': '\u211C',
|
||||
'Sfr': '\uD835\uDD16',
|
||||
'Tfr': '\uD835\uDD17',
|
||||
'Ufr': '\uD835\uDD18',
|
||||
'Vfr': '\uD835\uDD19',
|
||||
'Wfr': '\uD835\uDD1A',
|
||||
'Xfr': '\uD835\uDD1B',
|
||||
'Yfr': '\uD835\uDD1C',
|
||||
'Zfr': '\u2128',
|
||||
'afr': '\uD835\uDD1E',
|
||||
'bfr': '\uD835\uDD1F',
|
||||
'cfr': '\uD835\uDD20',
|
||||
'dfr': '\uD835\uDD21',
|
||||
'efr': '\uD835\uDD22',
|
||||
'ffr': '\uD835\uDD23',
|
||||
'gfr': '\uD835\uDD24',
|
||||
'hfr': '\uD835\uDD25',
|
||||
'ifr': '\uD835\uDD26',
|
||||
'jfr': '\uD835\uDD27',
|
||||
'kfr': '\uD835\uDD28',
|
||||
'lfr': '\uD835\uDD29',
|
||||
'mfr': '\uD835\uDD2A',
|
||||
'nfr': '\uD835\uDD2B',
|
||||
'ofr': '\uD835\uDD2C',
|
||||
'pfr': '\uD835\uDD2D',
|
||||
'qfr': '\uD835\uDD2E',
|
||||
'rfr': '\uD835\uDD2F',
|
||||
'sfr': '\uD835\uDD30',
|
||||
'tfr': '\uD835\uDD31',
|
||||
'ufr': '\uD835\uDD32',
|
||||
'vfr': '\uD835\uDD33',
|
||||
'wfr': '\uD835\uDD34',
|
||||
'xfr': '\uD835\uDD35',
|
||||
'yfr': '\uD835\uDD36',
|
||||
'zfr': '\uD835\uDD37'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/fr.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,82 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/g.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'GJcy': '\u0403',
|
||||
'Gammad': '\u03DC',
|
||||
'Gbreve': '\u011E',
|
||||
'Gcedil': '\u0122',
|
||||
'Gcirc': '\u011C',
|
||||
'Gcy': '\u0413',
|
||||
'Gdot': '\u0120',
|
||||
'GreaterGreater': '\u2AA2',
|
||||
'Gt': '\u226B',
|
||||
'gE': '\u2267',
|
||||
'gacute': '\u01F5',
|
||||
'gammad': '\u03DD',
|
||||
'gbreve': '\u011F',
|
||||
'gcirc': '\u011D',
|
||||
'gcy': '\u0433',
|
||||
'gdot': '\u0121',
|
||||
'ge': '\u2265',
|
||||
'gel': '\u22DB',
|
||||
'geq': '\u2265',
|
||||
'geqq': '\u2267',
|
||||
'geqslant': '\u2A7E',
|
||||
'ges': '\u2A7E',
|
||||
'gescc': '\u2AA9',
|
||||
'gesdot': '\u2A80',
|
||||
'gesdoto': '\u2A82',
|
||||
'gesdotol': '\u2A84',
|
||||
'gesl': '\u22DB\uFE00',
|
||||
'gesles': '\u2A94',
|
||||
'gg': '\u226B',
|
||||
'ggg': '\u22D9',
|
||||
'gjcy': '\u0453',
|
||||
'gl': '\u2277',
|
||||
'glE': '\u2A92',
|
||||
'gla': '\u2AA5',
|
||||
'glj': '\u2AA4',
|
||||
'gnapprox': '\u2A8A',
|
||||
'gneq': '\u2A88',
|
||||
'gneqq': '\u2269',
|
||||
'grave': '\u0060',
|
||||
'gsim': '\u2273',
|
||||
'gsime': '\u2A8E',
|
||||
'gsiml': '\u2A90',
|
||||
'gtcc': '\u2AA7',
|
||||
'gtcir': '\u2A7A',
|
||||
'gtlPar': '\u2995',
|
||||
'gtquest': '\u2A7C',
|
||||
'gtrapprox': '\u2A86',
|
||||
'gtrarr': '\u2978',
|
||||
'gtrdot': '\u22D7',
|
||||
'gtreqless': '\u22DB',
|
||||
'gtreqqless': '\u2A8C',
|
||||
'gtrless': '\u2277',
|
||||
'gtrsim': '\u2273',
|
||||
'gvertneqq': '\u2269\uFE00',
|
||||
'gvnE': '\u2269\uFE00'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/g.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,52 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/h.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'HARDcy': '\u042A',
|
||||
'Hcirc': '\u0124',
|
||||
'HilbertSpace': '\u210B',
|
||||
'HorizontalLine': '\u2500',
|
||||
'Hstrok': '\u0126',
|
||||
'hArr': '\u21D4',
|
||||
'hairsp': '\u200A',
|
||||
'half': '\u00BD',
|
||||
'hamilt': '\u210B',
|
||||
'hardcy': '\u044A',
|
||||
'harr': '\u2194',
|
||||
'harrcir': '\u2948',
|
||||
'hcirc': '\u0125',
|
||||
'hearts': '\u2665',
|
||||
'heartsuit': '\u2665',
|
||||
'hercon': '\u22B9',
|
||||
'hksearow': '\u2925',
|
||||
'hkswarow': '\u2926',
|
||||
'hoarr': '\u21FF',
|
||||
'homtht': '\u223B',
|
||||
'horbar': '\u2015',
|
||||
'hslash': '\u210F',
|
||||
'hstrok': '\u0127',
|
||||
'hybull': '\u2043',
|
||||
'hyphen': '\u2010'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/h.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,85 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/i.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'IEcy': '\u0415',
|
||||
'IJlig': '\u0132',
|
||||
'IOcy': '\u0401',
|
||||
'Iacute': '\u00CD',
|
||||
'Icirc': '\u00CE',
|
||||
'Icy': '\u0418',
|
||||
'Idot': '\u0130',
|
||||
'Igrave': '\u00CC',
|
||||
'Imacr': '\u012A',
|
||||
'Implies': '\u21D2',
|
||||
'Int': '\u222C',
|
||||
'Iogon': '\u012E',
|
||||
'Itilde': '\u0128',
|
||||
'Iukcy': '\u0406',
|
||||
'Iuml': '\u00CF',
|
||||
'iacute': '\u00ED',
|
||||
'ic': '\u2063',
|
||||
'icirc': '\u00EE',
|
||||
'icy': '\u0438',
|
||||
'iecy': '\u0435',
|
||||
'iexcl': '\u00A1',
|
||||
'iff': '\u21D4',
|
||||
'igrave': '\u00EC',
|
||||
'ii': '\u2148',
|
||||
'iiiint': '\u2A0C',
|
||||
'iiint': '\u222D',
|
||||
'iinfin': '\u29DC',
|
||||
'iiota': '\u2129',
|
||||
'ijlig': '\u0133',
|
||||
'imacr': '\u012B',
|
||||
'image': '\u2111',
|
||||
'imagline': '\u2110',
|
||||
'imagpart': '\u2111',
|
||||
'imof': '\u22B7',
|
||||
'imped': '\u01B5',
|
||||
'in': '\u2208',
|
||||
'incare': '\u2105',
|
||||
'infintie': '\u29DD',
|
||||
'inodot': '\u0131',
|
||||
'int': '\u222B',
|
||||
'integers': '\u2124',
|
||||
'intercal': '\u22BA',
|
||||
'intlarhk': '\u2A17',
|
||||
'intprod': '\u2A3C',
|
||||
'iocy': '\u0451',
|
||||
'iogon': '\u012F',
|
||||
'iprod': '\u2A3C',
|
||||
'iquest': '\u00BF',
|
||||
'isin': '\u2208',
|
||||
'isinE': '\u22F9',
|
||||
'isindot': '\u22F5',
|
||||
'isins': '\u22F4',
|
||||
'isinsv': '\u22F3',
|
||||
'isinv': '\u2208',
|
||||
'it': '\u2062',
|
||||
'itilde': '\u0129',
|
||||
'iukcy': '\u0456',
|
||||
'iuml': '\u00EF'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/i.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,36 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/j.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'Jcirc': '\u0134',
|
||||
'Jcy': '\u0419',
|
||||
'Jsercy': '\u0408',
|
||||
'Jukcy': '\u0404',
|
||||
'jcirc': '\u0135',
|
||||
'jcy': '\u0439',
|
||||
'jmath': '\u006A',
|
||||
'jsercy': '\u0458',
|
||||
'jukcy': '\u0454'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/j.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,36 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/k.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'KHcy': '\u0425',
|
||||
'KJcy': '\u040C',
|
||||
'Kcedil': '\u0136',
|
||||
'Kcy': '\u041A',
|
||||
'kcedil': '\u0137',
|
||||
'kcy': '\u043A',
|
||||
'kgreen': '\u0138',
|
||||
'khcy': '\u0445',
|
||||
'kjcy': '\u045C'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/k.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-175
@@ -1,175 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/l.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'LJcy': '\u0409',
|
||||
'Lacute': '\u0139',
|
||||
'Lang': '\u300A',
|
||||
'Laplacetrf': '\u2112',
|
||||
'Lcaron': '\u013D',
|
||||
'Lcedil': '\u013B',
|
||||
'Lcy': '\u041B',
|
||||
'LeftArrowBar': '\u21E4',
|
||||
'LeftDoubleBracket': '\u301A',
|
||||
'LeftDownTeeVector': '\u2961',
|
||||
'LeftDownVectorBar': '\u2959',
|
||||
'LeftRightVector': '\u294E',
|
||||
'LeftTeeArrow': '\u21A4',
|
||||
'LeftTeeVector': '\u295A',
|
||||
'LeftTriangleBar': '\u29CF',
|
||||
'LeftUpDownVector': '\u2951',
|
||||
'LeftUpTeeVector': '\u2960',
|
||||
'LeftUpVectorBar': '\u2958',
|
||||
'LeftVectorBar': '\u2952',
|
||||
'LessLess': '\u2AA1',
|
||||
'Lmidot': '\u013F',
|
||||
'LowerLeftArrow': '\u2199',
|
||||
'LowerRightArrow': '\u2198',
|
||||
'Lstrok': '\u0141',
|
||||
'Lt': '\u226A',
|
||||
'lAarr': '\u21DA',
|
||||
'lArr': '\u21D0',
|
||||
'lAtail': '\u291B',
|
||||
'lBarr': '\u290E',
|
||||
'lE': '\u2266',
|
||||
'lHar': '\u2962',
|
||||
'lacute': '\u013A',
|
||||
'laemptyv': '\u29B4',
|
||||
'lagran': '\u2112',
|
||||
'lang': '\u2329',
|
||||
'langd': '\u2991',
|
||||
'langle': '\u2329',
|
||||
'laquo': '\u00AB',
|
||||
'larr': '\u2190',
|
||||
'larrb': '\u21E4',
|
||||
'larrbfs': '\u291F',
|
||||
'larrfs': '\u291D',
|
||||
'larrhk': '\u21A9',
|
||||
'larrpl': '\u2939',
|
||||
'larrsim': '\u2973',
|
||||
'lat': '\u2AAB',
|
||||
'latail': '\u2919',
|
||||
'late': '\u2AAD',
|
||||
'lates': '\u2AAD\uFE00',
|
||||
'lbarr': '\u290C',
|
||||
'lbbrk': '\u3014',
|
||||
'lbrke': '\u298B',
|
||||
'lbrksld': '\u298F',
|
||||
'lbrkslu': '\u298D',
|
||||
'lcaron': '\u013E',
|
||||
'lcedil': '\u013C',
|
||||
'lceil': '\u2308',
|
||||
'lcub': '\u007B',
|
||||
'lcy': '\u043B',
|
||||
'ldca': '\u2936',
|
||||
'ldquo': '\u201C',
|
||||
'ldquor': '\u201E',
|
||||
'ldrdhar': '\u2967',
|
||||
'ldrushar': '\u294B',
|
||||
'ldsh': '\u21B2',
|
||||
'leftarrow': '\u2190',
|
||||
'leftarrowtail': '\u21A2',
|
||||
'leftharpoondown': '\u21BD',
|
||||
'leftharpoonup': '\u21BC',
|
||||
'leftrightarrow': '\u2194',
|
||||
'leftrightarrows': '\u21C6',
|
||||
'leftrightharpoons': '\u21CB',
|
||||
'leftrightsquigarrow': '\u21AD',
|
||||
'leg': '\u22DA',
|
||||
'leq': '\u2264',
|
||||
'leqq': '\u2266',
|
||||
'leqslant': '\u2A7D',
|
||||
'les': '\u2A7D',
|
||||
'lescc': '\u2AA8',
|
||||
'lesdot': '\u2A7F',
|
||||
'lesdoto': '\u2A81',
|
||||
'lesdotor': '\u2A83',
|
||||
'lesg': '\u22DA\uFE00',
|
||||
'lesges': '\u2A93',
|
||||
'lessapprox': '\u2A85',
|
||||
'lesseqgtr': '\u22DA',
|
||||
'lesseqqgtr': '\u2A8B',
|
||||
'lessgtr': '\u2276',
|
||||
'lesssim': '\u2272',
|
||||
'lfisht': '\u297C',
|
||||
'lfloor': '\u230A',
|
||||
'lg': '\u2276',
|
||||
'lgE': '\u2A91',
|
||||
'lhard': '\u21BD',
|
||||
'lharu': '\u21BC',
|
||||
'lharul': '\u296A',
|
||||
'lhblk': '\u2584',
|
||||
'ljcy': '\u0459',
|
||||
'll': '\u226A',
|
||||
'llarr': '\u21C7',
|
||||
'llcorner': '\u231E',
|
||||
'llhard': '\u296B',
|
||||
'lltri': '\u25FA',
|
||||
'lmidot': '\u0140',
|
||||
'lmoustache': '\u23B0',
|
||||
'lnapprox': '\u2A89',
|
||||
'lneq': '\u2A87',
|
||||
'lneqq': '\u2268',
|
||||
'loang': '\u3018',
|
||||
'loarr': '\u21FD',
|
||||
'lobrk': '\u301A',
|
||||
'longleftarrow': '\u27F5',
|
||||
'longleftrightarrow': '\u27F7',
|
||||
'longrightarrow': '\u27F6',
|
||||
'looparrowleft': '\u21AB',
|
||||
'lopar': '\u2985',
|
||||
'loplus': '\u2A2D',
|
||||
'lotimes': '\u2A34',
|
||||
'lozenge': '\u25CA',
|
||||
'lozf': '\u29EB',
|
||||
'lpar': '\u0028',
|
||||
'lparlt': '\u2993',
|
||||
'lrarr': '\u21C6',
|
||||
'lrcorner': '\u231F',
|
||||
'lrhar': '\u21CB',
|
||||
'lrhard': '\u296D',
|
||||
'lrtri': '\u22BF',
|
||||
'lsh': '\u21B0',
|
||||
'lsim': '\u2272',
|
||||
'lsime': '\u2A8D',
|
||||
'lsimg': '\u2A8F',
|
||||
'lsqb': '\u005B',
|
||||
'lsquo': '\u2018',
|
||||
'lsquor': '\u201A',
|
||||
'lstrok': '\u0142',
|
||||
'ltcc': '\u2AA6',
|
||||
'ltcir': '\u2A79',
|
||||
'ltdot': '\u22D6',
|
||||
'lthree': '\u22CB',
|
||||
'ltlarr': '\u2976',
|
||||
'ltquest': '\u2A7B',
|
||||
'ltrPar': '\u2996',
|
||||
'ltrie': '\u22B4',
|
||||
'ltrif': '\u25C2',
|
||||
'lurdshar': '\u294A',
|
||||
'luruhar': '\u2966',
|
||||
'lvertneqq': '\u2268\uFE00',
|
||||
'lvnE': '\u2268\uFE00'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/l.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,61 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/m.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'Map': '\u2905',
|
||||
'Mcy': '\u041C',
|
||||
'MediumSpace': '\u205F',
|
||||
'Mellintrf': '\u2133',
|
||||
'mDDot': '\u223A',
|
||||
'macr': '\u00AF',
|
||||
'male': '\u2642',
|
||||
'maltese': '\u2720',
|
||||
'map': '\u21A6',
|
||||
'mapsto': '\u21A6',
|
||||
'mapstodown': '\u21A7',
|
||||
'mapstoleft': '\u21A4',
|
||||
'mapstoup': '\u21A5',
|
||||
'marker': '\u25AE',
|
||||
'mcomma': '\u2A29',
|
||||
'mcy': '\u043C',
|
||||
'mdash': '\u2014',
|
||||
'measuredangle': '\u2221',
|
||||
'micro': '\u00B5',
|
||||
'mid': '\u2223',
|
||||
'midast': '\u002A',
|
||||
'midcir': '\u2AF0',
|
||||
'middot': '\u00B7',
|
||||
'minus': '\u2212',
|
||||
'minusb': '\u229F',
|
||||
'minusd': '\u2238',
|
||||
'minusdu': '\u2A2A',
|
||||
'mlcp': '\u2ADB',
|
||||
'mldr': '\u2026',
|
||||
'mnplus': '\u2213',
|
||||
'models': '\u22A7',
|
||||
'mp': '\u2213',
|
||||
'mstpos': '\u223E',
|
||||
'mumap': '\u22B8'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/m.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-219
@@ -1,219 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/n.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'NJcy': '\u040A',
|
||||
'Nacute': '\u0143',
|
||||
'Ncaron': '\u0147',
|
||||
'Ncedil': '\u0145',
|
||||
'Ncy': '\u041D',
|
||||
'NegativeMediumSpace': '\u200B',
|
||||
'NegativeThickSpace': '\u200B',
|
||||
'NegativeThinSpace': '\u200B',
|
||||
'NegativeVeryThinSpace': '\u200B',
|
||||
'NewLine': '\u000A',
|
||||
'NoBreak': '\u2060',
|
||||
'NonBreakingSpace': '\u00A0',
|
||||
'Not': '\u2AEC',
|
||||
'NotCongruent': '\u2262',
|
||||
'NotCupCap': '\u226D',
|
||||
'NotEqualTilde': '\u2242\u0338',
|
||||
'NotGreaterFullEqual': '\u2266\u0338',
|
||||
'NotGreaterGreater': '\u226B\u0338',
|
||||
'NotGreaterLess': '\u2279',
|
||||
'NotGreaterSlantEqual': '\u2A7E\u0338',
|
||||
'NotGreaterTilde': '\u2275',
|
||||
'NotHumpDownHump': '\u224E\u0338',
|
||||
'NotHumpEqual': '\u224F\u0338',
|
||||
'NotLeftTriangleBar': '\u29CF\u0338',
|
||||
'NotLessGreater': '\u2278',
|
||||
'NotLessLess': '\u226A\u0338',
|
||||
'NotLessSlantEqual': '\u2A7D\u0338',
|
||||
'NotLessTilde': '\u2274',
|
||||
'NotNestedGreaterGreater': '\u2AA2\u0338',
|
||||
'NotNestedLessLess': '\u2AA1\u0338',
|
||||
'NotPrecedesEqual': '\u2AAF\u0338',
|
||||
'NotReverseElement': '\u220C',
|
||||
'NotRightTriangleBar': '\u29D0\u0338',
|
||||
'NotSquareSubset': '\u228F\u0338',
|
||||
'NotSquareSubsetEqual': '\u22E2',
|
||||
'NotSquareSuperset': '\u2290\u0338',
|
||||
'NotSquareSupersetEqual': '\u22E3',
|
||||
'NotSubset': '\u2282\u20D2',
|
||||
'NotSucceedsEqual': '\u2AB0\u0338',
|
||||
'NotSucceedsTilde': '\u227F\u0338',
|
||||
'NotSuperset': '\u2283\u20D2',
|
||||
'NotTildeEqual': '\u2244',
|
||||
'NotTildeFullEqual': '\u2247',
|
||||
'NotTildeTilde': '\u2249',
|
||||
'Ntilde': '\u00D1',
|
||||
'nGg': '\u22D9\u0338',
|
||||
'nGt': '\u226B\u20D2',
|
||||
'nGtv': '\u226B\u0338',
|
||||
'nLeftarrow': '\u21CD',
|
||||
'nLeftrightarrow': '\u21CE',
|
||||
'nLl': '\u22D8\u0338',
|
||||
'nLt': '\u226A\u20D2',
|
||||
'nLtv': '\u226A\u0338',
|
||||
'nRightarrow': '\u21CF',
|
||||
'nabla': '\u2207',
|
||||
'nacute': '\u0144',
|
||||
'nang': '\u2220\u20D2',
|
||||
'nap': '\u2249',
|
||||
'napE': '\u2A70\u0338',
|
||||
'napid': '\u224B\u0338',
|
||||
'napos': '\u0149',
|
||||
'napprox': '\u2249',
|
||||
'natural': '\u266E',
|
||||
'naturals': '\u2115',
|
||||
'nbsp': '\u00A0',
|
||||
'nbump': '\u224E\u0338',
|
||||
'nbumpe': '\u224F\u0338',
|
||||
'ncap': '\u2A43',
|
||||
'ncaron': '\u0148',
|
||||
'ncedil': '\u0146',
|
||||
'ncong': '\u2247',
|
||||
'ncongdot': '\u2A6D\u0338',
|
||||
'ncup': '\u2A42',
|
||||
'ncy': '\u043D',
|
||||
'ndash': '\u2013',
|
||||
'ne': '\u2260',
|
||||
'neArr': '\u21D7',
|
||||
'nearhk': '\u2924',
|
||||
'nearrow': '\u2197',
|
||||
'nedot': '\u2250\u0338',
|
||||
'nequiv': '\u2262',
|
||||
'nesear': '\u2928',
|
||||
'nesim': '\u2242\u0338',
|
||||
'nexist': '\u2204',
|
||||
'nexists': '\u2204',
|
||||
'ngE': '\u2267\u0338',
|
||||
'nge': '\u2271',
|
||||
'ngeq': '\u2271',
|
||||
'ngeqq': '\u2267\u0338',
|
||||
'ngeqslant': '\u2A7E\u0338',
|
||||
'nges': '\u2A7E\u0338',
|
||||
'ngsim': '\u2275',
|
||||
'ngt': '\u226F',
|
||||
'ngtr': '\u226F',
|
||||
'nhpar': '\u2AF2',
|
||||
'ni': '\u220B',
|
||||
'nis': '\u22FC',
|
||||
'nisd': '\u22FA',
|
||||
'niv': '\u220B',
|
||||
'njcy': '\u045A',
|
||||
'nlE': '\u2266\u0338',
|
||||
'nldr': '\u2025',
|
||||
'nle': '\u2270',
|
||||
'nleftarrow': '\u219A',
|
||||
'nleftrightarrow': '\u21AE',
|
||||
'nleq': '\u2270',
|
||||
'nleqq': '\u2266\u0338',
|
||||
'nleqslant': '\u2A7D\u0338',
|
||||
'nles': '\u2A7D\u0338',
|
||||
'nless': '\u226E',
|
||||
'nlsim': '\u2274',
|
||||
'nlt': '\u226E',
|
||||
'nltri': '\u22EA',
|
||||
'nltrie': '\u22EC',
|
||||
'nmid': '\u2224',
|
||||
'notin': '\u2209',
|
||||
'notinE': '\u22F9\u0338',
|
||||
'notindot': '\u22F5\u0338',
|
||||
'notinva': '\u2209',
|
||||
'notinvb': '\u22F7',
|
||||
'notinvc': '\u22F6',
|
||||
'notni': '\u220C',
|
||||
'notniva': '\u220C',
|
||||
'notnivb': '\u22FE',
|
||||
'notnivc': '\u22FD',
|
||||
'npar': '\u2226',
|
||||
'nparallel': '\u2226',
|
||||
'nparsl': '\u2AFD\u20E5',
|
||||
'npart': '\u2202\u0338',
|
||||
'npolint': '\u2A14',
|
||||
'npr': '\u2280',
|
||||
'nprcue': '\u22E0',
|
||||
'npre': '\u2AAF\u0338',
|
||||
'nprec': '\u2280',
|
||||
'npreceq': '\u2AAF\u0338',
|
||||
'nrarrc': '\u2933\u0338',
|
||||
'nrarrw': '\u219D\u0338',
|
||||
'nrightarrow': '\u219B',
|
||||
'nrtri': '\u22EB',
|
||||
'nrtrie': '\u22ED',
|
||||
'nsc': '\u2281',
|
||||
'nsccue': '\u22E1',
|
||||
'nsce': '\u2AB0\u0338',
|
||||
'nshortmid': '\u2224',
|
||||
'nshortparallel': '\u2226',
|
||||
'nsim': '\u2241',
|
||||
'nsime': '\u2244',
|
||||
'nsimeq': '\u2244',
|
||||
'nsmid': '\u2224',
|
||||
'nspar': '\u2226',
|
||||
'nsqsube': '\u22E2',
|
||||
'nsqsupe': '\u22E3',
|
||||
'nsub': '\u2284',
|
||||
'nsubE': '\u2AC5\u0338',
|
||||
'nsube': '\u2288',
|
||||
'nsubset': '\u2282\u20D2',
|
||||
'nsubseteq': '\u2288',
|
||||
'nsubseteqq': '\u2AC5\u0338',
|
||||
'nsucc': '\u2281',
|
||||
'nsucceq': '\u2AB0\u0338',
|
||||
'nsup': '\u2285',
|
||||
'nsupE': '\u2AC6\u0338',
|
||||
'nsupe': '\u2289',
|
||||
'nsupset': '\u2283\u20D2',
|
||||
'nsupseteq': '\u2289',
|
||||
'nsupseteqq': '\u2AC6\u0338',
|
||||
'ntgl': '\u2279',
|
||||
'ntilde': '\u00F1',
|
||||
'ntlg': '\u2278',
|
||||
'ntriangleleft': '\u22EA',
|
||||
'ntrianglelefteq': '\u22EC',
|
||||
'ntriangleright': '\u22EB',
|
||||
'ntrianglerighteq': '\u22ED',
|
||||
'num': '\u0023',
|
||||
'numero': '\u2116',
|
||||
'numsp': '\u2007',
|
||||
'nvHarr': '\u2904',
|
||||
'nvap': '\u224D\u20D2',
|
||||
'nvge': '\u2265\u20D2',
|
||||
'nvgt': '\u003E\u20D2',
|
||||
'nvinfin': '\u29DE',
|
||||
'nvlArr': '\u2902',
|
||||
'nvle': '\u2264\u20D2',
|
||||
'nvlt': '\u003C\u20D2',
|
||||
'nvltrie': '\u22B4\u20D2',
|
||||
'nvrArr': '\u2903',
|
||||
'nvrtrie': '\u22B5\u20D2',
|
||||
'nvsim': '\u223C\u20D2',
|
||||
'nwArr': '\u21D6',
|
||||
'nwarhk': '\u2923',
|
||||
'nwarrow': '\u2196',
|
||||
'nwnear': '\u2927'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/n.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,88 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/o.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'OElig': '\u0152',
|
||||
'Oacute': '\u00D3',
|
||||
'Ocirc': '\u00D4',
|
||||
'Ocy': '\u041E',
|
||||
'Odblac': '\u0150',
|
||||
'Ograve': '\u00D2',
|
||||
'Omacr': '\u014C',
|
||||
'OpenCurlyDoubleQuote': '\u201C',
|
||||
'OpenCurlyQuote': '\u2018',
|
||||
'Or': '\u2A54',
|
||||
'Oslash': '\u00D8',
|
||||
'Otilde': '\u00D5',
|
||||
'Otimes': '\u2A37',
|
||||
'Ouml': '\u00D6',
|
||||
'OverBracket': '\u23B4',
|
||||
'OverParenthesis': '\uFE35',
|
||||
'oS': '\u24C8',
|
||||
'oacute': '\u00F3',
|
||||
'oast': '\u229B',
|
||||
'ocir': '\u229A',
|
||||
'ocirc': '\u00F4',
|
||||
'ocy': '\u043E',
|
||||
'odash': '\u229D',
|
||||
'odblac': '\u0151',
|
||||
'odiv': '\u2A38',
|
||||
'odot': '\u2299',
|
||||
'odsold': '\u29BC',
|
||||
'oelig': '\u0153',
|
||||
'ofcir': '\u29BF',
|
||||
'ogon': '\u02DB',
|
||||
'ograve': '\u00F2',
|
||||
'ogt': '\u29C1',
|
||||
'ohbar': '\u29B5',
|
||||
'ohm': '\u2126',
|
||||
'oint': '\u222E',
|
||||
'olarr': '\u21BA',
|
||||
'olcir': '\u29BE',
|
||||
'olcross': '\u29BB',
|
||||
'olt': '\u29C0',
|
||||
'omacr': '\u014D',
|
||||
'omid': '\u29B6',
|
||||
'ominus': '\u2296',
|
||||
'opar': '\u29B7',
|
||||
'operp': '\u29B9',
|
||||
'oplus': '\u2295',
|
||||
'orarr': '\u21BB',
|
||||
'ord': '\u2A5D',
|
||||
'order': '\u2134',
|
||||
'orderof': '\u2134',
|
||||
'ordf': '\u00AA',
|
||||
'ordm': '\u00BA',
|
||||
'origof': '\u22B6',
|
||||
'oror': '\u2A56',
|
||||
'orslope': '\u2A57',
|
||||
'orv': '\u2A5B',
|
||||
'oslash': '\u00F8',
|
||||
'otilde': '\u00F5',
|
||||
'otimes': '\u2297',
|
||||
'otimesas': '\u2A36',
|
||||
'ouml': '\u00F6',
|
||||
'ovbar': '\u233D'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/o.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-79
@@ -1,79 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/opf.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'Aopf': '\uD835\uDD38',
|
||||
'Bopf': '\uD835\uDD39',
|
||||
'Copf': '\u2102',
|
||||
'Dopf': '\uD835\uDD3B',
|
||||
'Eopf': '\uD835\uDD3C',
|
||||
'Fopf': '\uD835\uDD3D',
|
||||
'Gopf': '\uD835\uDD3E',
|
||||
'Hopf': '\u210D',
|
||||
'Iopf': '\uD835\uDD40',
|
||||
'Jopf': '\uD835\uDD41',
|
||||
'Kopf': '\uD835\uDD42',
|
||||
'Lopf': '\uD835\uDD43',
|
||||
'Mopf': '\uD835\uDD44',
|
||||
'Nopf': '\u2115',
|
||||
'Oopf': '\uD835\uDD46',
|
||||
'Popf': '\u2119',
|
||||
'Qopf': '\u211A',
|
||||
'Ropf': '\u211D',
|
||||
'Sopf': '\uD835\uDD4A',
|
||||
'Topf': '\uD835\uDD4B',
|
||||
'Uopf': '\uD835\uDD4C',
|
||||
'Vopf': '\uD835\uDD4D',
|
||||
'Wopf': '\uD835\uDD4E',
|
||||
'Xopf': '\uD835\uDD4F',
|
||||
'Yopf': '\uD835\uDD50',
|
||||
'Zopf': '\u2124',
|
||||
'aopf': '\uD835\uDD52',
|
||||
'bopf': '\uD835\uDD53',
|
||||
'copf': '\uD835\uDD54',
|
||||
'dopf': '\uD835\uDD55',
|
||||
'eopf': '\uD835\uDD56',
|
||||
'fopf': '\uD835\uDD57',
|
||||
'gopf': '\uD835\uDD58',
|
||||
'hopf': '\uD835\uDD59',
|
||||
'iopf': '\uD835\uDD5A',
|
||||
'jopf': '\uD835\uDD5B',
|
||||
'kopf': '\uD835\uDD5C',
|
||||
'lopf': '\uD835\uDD5D',
|
||||
'mopf': '\uD835\uDD5E',
|
||||
'nopf': '\uD835\uDD5F',
|
||||
'oopf': '\uD835\uDD60',
|
||||
'popf': '\uD835\uDD61',
|
||||
'qopf': '\uD835\uDD62',
|
||||
'ropf': '\uD835\uDD63',
|
||||
'sopf': '\uD835\uDD64',
|
||||
'topf': '\uD835\uDD65',
|
||||
'uopf': '\uD835\uDD66',
|
||||
'vopf': '\uD835\uDD67',
|
||||
'wopf': '\uD835\uDD68',
|
||||
'xopf': '\uD835\uDD69',
|
||||
'yopf': '\uD835\uDD6A',
|
||||
'zopf': '\uD835\uDD6B'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/opf.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,84 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/p.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'Pcy': '\u041F',
|
||||
'Poincareplane': '\u210C',
|
||||
'Pr': '\u2ABB',
|
||||
'Prime': '\u2033',
|
||||
'Proportion': '\u2237',
|
||||
'par': '\u2225',
|
||||
'para': '\u00B6',
|
||||
'parallel': '\u2225',
|
||||
'parsim': '\u2AF3',
|
||||
'parsl': '\u2AFD',
|
||||
'part': '\u2202',
|
||||
'pcy': '\u043F',
|
||||
'percnt': '\u0025',
|
||||
'permil': '\u2030',
|
||||
'perp': '\u22A5',
|
||||
'pertenk': '\u2031',
|
||||
'phmmat': '\u2133',
|
||||
'phone': '\u260E',
|
||||
'pitchfork': '\u22D4',
|
||||
'planck': '\u210F',
|
||||
'planckh': '\u210E',
|
||||
'plankv': '\u210F',
|
||||
'plus': '\u002B',
|
||||
'plusacir': '\u2A23',
|
||||
'plusb': '\u229E',
|
||||
'pluscir': '\u2A22',
|
||||
'plusdo': '\u2214',
|
||||
'plusdu': '\u2A25',
|
||||
'pluse': '\u2A72',
|
||||
'plusmn': '\u00B1',
|
||||
'plussim': '\u2A26',
|
||||
'plustwo': '\u2A27',
|
||||
'pm': '\u00B1',
|
||||
'pointint': '\u2A15',
|
||||
'pound': '\u00A3',
|
||||
'pr': '\u227A',
|
||||
'prE': '\u2AB3',
|
||||
'prcue': '\u227C',
|
||||
'pre': '\u2AAF',
|
||||
'prec': '\u227A',
|
||||
'precapprox': '\u2AB7',
|
||||
'preccurlyeq': '\u227C',
|
||||
'preceq': '\u2AAF',
|
||||
'precsim': '\u227E',
|
||||
'primes': '\u2119',
|
||||
'prnE': '\u2AB5',
|
||||
'prnap': '\u2AB9',
|
||||
'prnsim': '\u22E8',
|
||||
'prod': '\u220F',
|
||||
'profalar': '\u232E',
|
||||
'profline': '\u2312',
|
||||
'profsurf': '\u2313',
|
||||
'prop': '\u221D',
|
||||
'propto': '\u221D',
|
||||
'prsim': '\u227E',
|
||||
'prurel': '\u22B0',
|
||||
'puncsp': '\u2008'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/p.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
@@ -1,34 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/q.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'qint': '\u2A0C',
|
||||
'qprime': '\u2057',
|
||||
'quaternions': '\u210D',
|
||||
'quatint': '\u2A16',
|
||||
'quest': '\u003F',
|
||||
'questeq': '\u225F',
|
||||
'quot': '\u0022'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/q.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-134
@@ -1,134 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/r.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'RBarr': '\u2910',
|
||||
'Racute': '\u0154',
|
||||
'Rang': '\u300B',
|
||||
'Rarrtl': '\u2916',
|
||||
'Rcaron': '\u0158',
|
||||
'Rcedil': '\u0156',
|
||||
'Rcy': '\u0420',
|
||||
'ReverseElement': '\u220B',
|
||||
'ReverseUpEquilibrium': '\u296F',
|
||||
'RightArrowBar': '\u21E5',
|
||||
'RightDoubleBracket': '\u301B',
|
||||
'RightDownTeeVector': '\u295D',
|
||||
'RightDownVectorBar': '\u2955',
|
||||
'RightTeeVector': '\u295B',
|
||||
'RightTriangleBar': '\u29D0',
|
||||
'RightUpDownVector': '\u294F',
|
||||
'RightUpTeeVector': '\u295C',
|
||||
'RightUpVectorBar': '\u2954',
|
||||
'RightVectorBar': '\u2953',
|
||||
'RoundImplies': '\u2970',
|
||||
'RuleDelayed': '\u29F4',
|
||||
'rAarr': '\u21DB',
|
||||
'rArr': '\u21D2',
|
||||
'rAtail': '\u291C',
|
||||
'rBarr': '\u290F',
|
||||
'rHar': '\u2964',
|
||||
'race': '\u29DA',
|
||||
'racute': '\u0155',
|
||||
'radic': '\u221A',
|
||||
'raemptyv': '\u29B3',
|
||||
'rang': '\u232A',
|
||||
'rangd': '\u2992',
|
||||
'range': '\u29A5',
|
||||
'rangle': '\u232A',
|
||||
'raquo': '\u00BB',
|
||||
'rarr': '\u2192',
|
||||
'rarrap': '\u2975',
|
||||
'rarrb': '\u21E5',
|
||||
'rarrbfs': '\u2920',
|
||||
'rarrc': '\u2933',
|
||||
'rarrfs': '\u291E',
|
||||
'rarrhk': '\u21AA',
|
||||
'rarrlp': '\u21AC',
|
||||
'rarrpl': '\u2945',
|
||||
'rarrsim': '\u2974',
|
||||
'rarrw': '\u219D',
|
||||
'ratail': '\u291A',
|
||||
'ratio': '\u2236',
|
||||
'rationals': '\u211A',
|
||||
'rbarr': '\u290D',
|
||||
'rbbrk': '\u3015',
|
||||
'rbrke': '\u298C',
|
||||
'rbrksld': '\u298E',
|
||||
'rbrkslu': '\u2990',
|
||||
'rcaron': '\u0159',
|
||||
'rcedil': '\u0157',
|
||||
'rceil': '\u2309',
|
||||
'rcub': '\u007D',
|
||||
'rcy': '\u0440',
|
||||
'rdca': '\u2937',
|
||||
'rdldhar': '\u2969',
|
||||
'rdquo': '\u201D',
|
||||
'rdquor': '\u201D',
|
||||
'rdsh': '\u21B3',
|
||||
'real': '\u211C',
|
||||
'realine': '\u211B',
|
||||
'realpart': '\u211C',
|
||||
'reals': '\u211D',
|
||||
'rect': '\u25AD',
|
||||
'reg': '\u00AE',
|
||||
'rfisht': '\u297D',
|
||||
'rfloor': '\u230B',
|
||||
'rhard': '\u21C1',
|
||||
'rharu': '\u21C0',
|
||||
'rharul': '\u296C',
|
||||
'rightarrow': '\u2192',
|
||||
'rightarrowtail': '\u21A3',
|
||||
'rightharpoondown': '\u21C1',
|
||||
'rightharpoonup': '\u21C0',
|
||||
'rightleftarrows': '\u21C4',
|
||||
'rightleftharpoons': '\u21CC',
|
||||
'rightsquigarrow': '\u219D',
|
||||
'risingdotseq': '\u2253',
|
||||
'rlarr': '\u21C4',
|
||||
'rlhar': '\u21CC',
|
||||
'rmoustache': '\u23B1',
|
||||
'rnmid': '\u2AEE',
|
||||
'roang': '\u3019',
|
||||
'roarr': '\u21FE',
|
||||
'robrk': '\u301B',
|
||||
'ropar': '\u2986',
|
||||
'roplus': '\u2A2E',
|
||||
'rotimes': '\u2A35',
|
||||
'rpar': '\u0029',
|
||||
'rpargt': '\u2994',
|
||||
'rppolint': '\u2A12',
|
||||
'rrarr': '\u21C9',
|
||||
'rsh': '\u21B1',
|
||||
'rsqb': '\u005D',
|
||||
'rsquo': '\u2019',
|
||||
'rsquor': '\u2019',
|
||||
'rthree': '\u22CC',
|
||||
'rtrie': '\u22B5',
|
||||
'rtrif': '\u25B8',
|
||||
'rtriltri': '\u29CE',
|
||||
'ruluhar': '\u2968',
|
||||
'rx': '\u211E'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/r.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
-168
@@ -1,168 +0,0 @@
|
||||
/*************************************************************
|
||||
*
|
||||
* MathJax/jax/output/HTML-CSS/entities/s.js
|
||||
*
|
||||
* Copyright (c) 2010 Design Science, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function (MATHML) {
|
||||
MathJax.Hub.Insert(MATHML.Parse.Entity,{
|
||||
'SHCHcy': '\u0429',
|
||||
'SHcy': '\u0428',
|
||||
'SOFTcy': '\u042C',
|
||||
'Sacute': '\u015A',
|
||||
'Sc': '\u2ABC',
|
||||
'Scaron': '\u0160',
|
||||
'Scedil': '\u015E',
|
||||
'Scirc': '\u015C',
|
||||
'Scy': '\u0421',
|
||||
'ShortDownArrow': '\u2193',
|
||||
'ShortLeftArrow': '\u2190',
|
||||
'ShortRightArrow': '\u2192',
|
||||
'ShortUpArrow': '\u2191',
|
||||
'Sub': '\u22D0',
|
||||
'Sup': '\u22D1',
|
||||
'sacute': '\u015B',
|
||||
'sc': '\u227B',
|
||||
'scE': '\u2AB4',
|
||||
'scaron': '\u0161',
|
||||
'sccue': '\u227D',
|
||||
'sce': '\u2AB0',
|
||||
'scedil': '\u015F',
|
||||
'scirc': '\u015D',
|
||||
'scpolint': '\u2A13',
|
||||
'scsim': '\u227F',
|
||||
'scy': '\u0441',
|
||||
'sdotb': '\u22A1',
|
||||
'sdote': '\u2A66',
|
||||
'seArr': '\u21D8',
|
||||
'searhk': '\u2925',
|
||||
'searrow': '\u2198',
|
||||
'semi': '\u003B',
|
||||
'seswar': '\u2929',
|
||||
'setminus': '\u2216',
|
||||
'setmn': '\u2216',
|
||||
'sext': '\u2736',
|
||||
'sfrown': '\u2322',
|
||||
'shchcy': '\u0449',
|
||||
'shcy': '\u0448',
|
||||
'shortmid': '\u2223',
|
||||
'shortparallel': '\u2225',
|
||||
'shy': '\u00AD',
|
||||
'sim': '\u223C',
|
||||
'simdot': '\u2A6A',
|
||||
'sime': '\u2243',
|
||||
'simeq': '\u2243',
|
||||
'simg': '\u2A9E',
|
||||
'simgE': '\u2AA0',
|
||||
'siml': '\u2A9D',
|
||||
'simlE': '\u2A9F',
|
||||
'simplus': '\u2A24',
|
||||
'simrarr': '\u2972',
|
||||
'slarr': '\u2190',
|
||||
'smallsetminus': '\u2216',
|
||||
'smashp': '\u2A33',
|
||||
'smeparsl': '\u29E4',
|
||||
'smid': '\u2223',
|
||||
'smt': '\u2AAA',
|
||||
'smte': '\u2AAC',
|
||||
'smtes': '\u2AAC\uFE00',
|
||||
'softcy': '\u044C',
|
||||
'sol': '\u002F',
|
||||
'solb': '\u29C4',
|
||||
'solbar': '\u233F',
|
||||
'spadesuit': '\u2660',
|
||||
'spar': '\u2225',
|
||||
'sqcap': '\u2293',
|
||||
'sqcaps': '\u2293\uFE00',
|
||||
'sqcup': '\u2294',
|
||||
'sqcups': '\u2294\uFE00',
|
||||
'sqsub': '\u228F',
|
||||
'sqsube': '\u2291',
|
||||
'sqsubset': '\u228F',
|
||||
'sqsubseteq': '\u2291',
|
||||
'sqsup': '\u2290',
|
||||
'sqsupe': '\u2292',
|
||||
'sqsupset': '\u2290',
|
||||
'sqsupseteq': '\u2292',
|
||||
'squ': '\u25A1',
|
||||
'square': '\u25A1',
|
||||
'squarf': '\u25AA',
|
||||
'squf': '\u25AA',
|
||||
'srarr': '\u2192',
|
||||
'ssetmn': '\u2216',
|
||||
'ssmile': '\u2323',
|
||||
'sstarf': '\u22C6',
|
||||
'star': '\u2606',
|
||||
'starf': '\u2605',
|
||||
'straightepsilon': '\u03F5',
|
||||
'straightphi': '\u03D5',
|
||||
'strns': '\u00AF',
|
||||
'subdot': '\u2ABD',
|
||||
'sube': '\u2286',
|
||||
'subedot': '\u2AC3',
|
||||
'submult': '\u2AC1',
|
||||
'subplus': '\u2ABF',
|
||||
'subrarr': '\u2979',
|
||||
'subset': '\u2282',
|
||||
'subseteq': '\u2286',
|
||||
'subseteqq': '\u2AC5',
|
||||
'subsetneq': '\u228A',
|
||||
'subsetneqq': '\u2ACB',
|
||||
'subsim': '\u2AC7',
|
||||
'subsub': '\u2AD5',
|
||||
'subsup': '\u2AD3',
|
||||
'succ': '\u227B',
|
||||
'succapprox': '\u2AB8',
|
||||
'succcurlyeq': '\u227D',
|
||||
'succeq': '\u2AB0',
|
||||
'succnapprox': '\u2ABA',
|
||||
'succneqq': '\u2AB6',
|
||||
'succnsim': '\u22E9',
|
||||
'succsim': '\u227F',
|
||||
'sum': '\u2211',
|
||||
'sung': '\u266A',
|
||||
'sup': '\u2283',
|
||||
'sup1': '\u00B9',
|
||||
'sup2': '\u00B2',
|
||||
'sup3': '\u00B3',
|
||||
'supdot': '\u2ABE',
|
||||
'supdsub': '\u2AD8',
|
||||
'supe': '\u2287',
|
||||
'supedot': '\u2AC4',
|
||||
'suphsol': '\u2283\u002F',
|
||||
'suphsub': '\u2AD7',
|
||||
'suplarr': '\u297B',
|
||||
'supmult': '\u2AC2',
|
||||
'supplus': '\u2AC0',
|
||||
'supset': '\u2283',
|
||||
'supseteq': '\u2287',
|
||||
'supseteqq': '\u2AC6',
|
||||
'supsetneq': '\u228B',
|
||||
'supsetneqq': '\u2ACC',
|
||||
'supsim': '\u2AC8',
|
||||
'supsub': '\u2AD4',
|
||||
'supsup': '\u2AD6',
|
||||
'swArr': '\u21D9',
|
||||
'swarhk': '\u2926',
|
||||
'swarrow': '\u2199',
|
||||
'swnwar': '\u292A',
|
||||
'szlig': '\u00DF'
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete(MATHML.entityDir+"/s.js");
|
||||
|
||||
})(MathJax.InputJax.MathML);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user