├── LICENSE ├── MarsDict.css ├── MdxSourceBuilder.vim ├── MdxSourceBuilderCSS.vim ├── MdxSourceBuilderCore.vim ├── MdxSourceBuilderDemo.gif ├── MdxSourceBuilderLink.vim ├── MdxSourceBuilderMultiLevel.vim ├── README.MD ├── _vimrc ├── 火星词典.Appendix.txt ├── 火星词典.Body.Part1.txt ├── 火星词典.Body.Part2.txt ├── 火星词典.Body.Part3.txt ├── 火星词典.Cover.txt ├── 火星词典.Link1.txt ├── 火星词典.Link2.txt ├── 火星词典.Link3.txt ├── 火星词典.Link4.txt ├── 火星词典.Link5.txt ├── 火星词典.Link6.txt ├── 火星词典.Link7.txt ├── 火星词典.Link888.txt ├── 火星词典.Pinyin.txt ├── 火星词典.Prefix.txt ├── 火星词典.info.description.html └── 火星词典.info.title.html /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /MarsDict.css: -------------------------------------------------------------------------------- 1 | /* 顶部的导航 */ 2 | .NavTop { 3 | margin: 0 0 10px 0; 4 | text-align: center; 5 | } 6 | 7 | /* 顶部的页面导航 */ 8 | .NavTop .pagesNav { 9 | background-color: #CC9933; 10 | color: #FFFF99; 11 | } 12 | .NavTop .pageNum { 13 | color: #FFFF99; 14 | padding: 0 5px; 15 | text-decoration: none; 16 | } 17 | .firstPage {} 18 | .previousPage { 19 | font-size:130%; 20 | } 21 | .previous2Page { 22 | font-size:110%; 23 | } 24 | .currentPage { 25 | font-size: 150%; 26 | font-weight: 600; 27 | color: red!important; 28 | } 29 | .nextPage { 30 | font-size:130%; 31 | } 32 | .next2Page { 33 | font-size:110%; 34 | } 35 | .lastPage {} 36 | 37 | /* 关键词导航 */ 38 | .keywordsNav { 39 | color: blue; 40 | } 41 | .keywordsNavKeyword { 42 | padding: 0 5px; 43 | text-decoration: none; 44 | } 45 | .currentKeyword { 46 | color: red; 47 | font-weight: 700; 48 | } 49 | .subkeywords .keywordsNavKeyword { 50 | padding: 0; 51 | } 52 | 53 | a.nearestKeyword { 54 | color: hotpink; 55 | text-decoration: none; 56 | } 57 | 58 | /* 多级关键词导航 */ 59 | .keywordsNav0 { 60 | /* display:none */ 61 | } 62 | .keywordsNav1 { 63 | /* display:none */ 64 | } 65 | .keywordsNav2 { 66 | /* display:none */ 67 | } 68 | .keywordsNav3 { 69 | /* display:none */ 70 | } 71 | .keywordsNav4 { 72 | /* display:none */ 73 | } 74 | .keywordsNav5 { 75 | /* display:none */ 76 | } 77 | 78 | /* 正文图片 */ 79 | .mainbodyimg img { 80 | /* 自适应屏幕宽度 */ 81 | width: 100%; 82 | 83 | /* 按需设定固定宽度 */ 84 | /* width: 42em; */ 85 | /* display: block; */ 86 | /* margin-left: auto; */ 87 | /* margin-right: auto; */ 88 | 89 | /* 对于透明图片的词典,可更改背景色以适应黑夜模式 */ 90 | /* 挑选喜欢的颜色 https://encycolorpedia.cn/named */ 91 | /* background-color: linen; */ 92 | } 93 | 94 | /* 底部的导航 */ 95 | .NavBottom { 96 | margin: 10px 0 0 0; 97 | text-align: center; 98 | } 99 | 100 | /* 自定义导航 */ 101 | .customNav {} 102 | .customNavKeyword { 103 | padding: 0 5px; 104 | text-decoration: none; 105 | } 106 | 107 | /* 底部的页面导航 */ 108 | .NavBottom .pagesNav { 109 | background-color: #EAEAEA; 110 | color: black; 111 | } 112 | .NavBottom .pageNum { 113 | color: black; 114 | padding: 0 5px; 115 | text-decoration: none; 116 | } 117 | .NavBottom .currentPage { 118 | font-size: 150%; 119 | font-weight: 600; 120 | color: red!important; 121 | } 122 | 123 | /* 更多自定义CSS */ 124 | 125 | /* vim: set et sw=4 ts=4 sts=4 fdm=marker ff=unix ft=css fenc=utf8 nobomb: */ 126 | -------------------------------------------------------------------------------- /MdxSourceBuilder.vim: -------------------------------------------------------------------------------- 1 | " ====================================================== 2 | " MdxSourceBuilder 一键制作图片词典 3 | " 原始词条 ==> 标准化词条 ==> mdx源文件 ==> mdx词典文件 4 | " https://github.com/VimWei/MdxSourceBuilder 5 | " ====================================================== 6 | " 7 | " Quick Guide -------------------------------------------------------------{{{1 8 | " 1. 准备好词条文件 9 | " 2. 打开MdxSourceBuilder.vim,并配置好词典参数 10 | " 3. 使用 :new 创建新文件,并执行 :bro so,找到 MdxSourceBuilder.vim 11 | " 或者 :new 创建新文件,并执行 :so MdxSourceBuilder.vim 12 | " 13 | " Requirement -------------------------------------------------------------{{{1 14 | " 1. 必须:安装Vim(官网下载 https://www.vim.org) 15 | " 并在vimrc配置文件中添加一行 set encoding=utf-8 16 | " * 仅能输出CSS文件和mdx源文件 17 | " 2. 可选:安装对应版本的python(官网下载 https://www.python.org) 18 | " 可选:安装 mdict-utilis:pip install mdict-utils 19 | " * 能输出mdx和mdd词典文件 20 | " 21 | " 配置词典参数 ------------------------------------------------------------{{{1 22 | 23 | " 拟输出的mdx源文件名称 24 | let s:mdxSourceFileName = "火星词典.txt" 25 | 26 | " CSS名称,其具体定义请查阅 MdxSourceBuilderCSS.vim 27 | let g:CSSName = "MarsDict.css" 28 | 29 | " 词条/图片名等的页码位数,默认为4,支持3及以上 30 | let g:pageNumDigit = 4 31 | 32 | " pages导航的页码数量 33 | " 0-适合手机等窄屏幕,中间连续5个页码 34 | " 1-适合电脑等大屏幕,中间连续7个页码 35 | let g:pageNavWidth = 0 36 | 37 | " 词典模块及其配置信息,格式如下: 38 | " \[dictionaryPart, picNamePrefix, picFormat, 39 | " \sourceStyle, navStyle, locationPercent, nearestKeyword], 40 | let g:dictionaryParts = [ 41 | \["火星词典.Cover.txt", "MarsDictCover_", ".png", 0, 2, 0, 1], 42 | \["火星词典.Prefix.txt", "MarsDictPrefix_", ".png", 0, 2, 0, 1], 43 | \["火星词典.Body.Part1.txt", "MarsDict_", ".png", 0, 2, 1, 2], 44 | \["火星词典.Body.Part2.txt", "MarsDict_", ".png", 1, 2, 1, 1], 45 | \["火星词典.Body.Part3.txt", "MarsDict_", ".png", 3, 2, 1, 1], 46 | \["火星词典.Appendix.txt", "MarsDictAppendix_", ".png", 0, 1, 0, 1], 47 | \["火星词典.Pinyin.txt", "MarsDict_", ".png", 2, 0, 0, 0], 48 | \] 49 | " dictionaryPart:词典各个模块的词条文件名称 50 | " picNamePrefix:图片前缀名,不同词典模块通常会采用不同的前缀名 51 | " picFormat:图片后缀名 52 | " sourceStyle:定义兼容的词条格式(MdxSourceBuilderCore.Vim) 53 | " - 0:'一行页码 + 多行关键词(每行一个关键词)'的标准词条格式,跳转至页码 54 | " - 1:'一个页码 + 多个中文单字符的关键词'的压缩词条格式,跳转至页码 55 | " - 2:'页码 + 分隔符 + 单个中或英关键词'的啰嗦行格式,跳转至页码 56 | " - 3:'单个中或英关键词 + 分隔符 + 页码'的啰嗦行格式,跳转至页码 57 | " navStyle:定义个性化的词条导航样式(MdxSourceBuilderCore.Vim) 58 | " - 0:自身没有pages和keywords导航,仅转LINK,适用于拼音之类的辅助检索 59 | " - 1:仅有pages导航,无keywords导航,简洁,适用于封面/附录之类的Affix 60 | " - 2:不仅有pages导航,而且有keywords导航,适用于每页关键词很多的正文 61 | " - 3: 有pages+keywords导航,但keyword仅简单@@@Link到相应page 62 | " locationPercent:词条导航是否显示百分比定位信息 63 | " - 0:不显示百分比定位信息 64 | " - 1:显示百分比定位信息 65 | " nearestKeyword:词条导航是否显示距本页最近的前/后一个词条 66 | " - 0:不显示最近的前后词条,适合词条较多的情形 67 | " - 1:显示最近的前后词条的提示符,适合词条较少情形下的跨页跳转 68 | " - 2: 显示最近的前后词条及提示符,适合词条很少情形下的跨页跳转 69 | 70 | " 多层级词条 71 | let s:multiLevel = 0 72 | " \[dictionaryPart, sourceStyle, locationPercent, nearestKeyword], 73 | " \], picNamePrefix, picFormat, navStyle] 74 | let g:multiLevelParts = [[ 75 | \["LLOCE.Body.Title1.txt", 0, 0, 1], 76 | \["LLOCE.Body.Title2.txt", 0, 0, 1], 77 | \["LLOCE.Body.Title3.txt", 2, 0, 1], 78 | \["LLOCE.Body.Detail.txt", 0, 1, 1], 79 | \], "LLOCE_", ".png", 2] 80 | 81 | " 补充额外的mdx源文件,兼容多种风格的来源 82 | let s:anyMore = 1 83 | " 格式:\[anyMorePart, sourceStyle, pagePrefix], 84 | let g:anyMoreSources = [ 85 | \["火星词典.Link1.txt", 104, ""], 86 | \["火星词典.Link2.txt", 105, "MarsDict_"], 87 | \["火星词典.Link3.txt", 998, ""], 88 | \["火星词典.Link4.txt", 107, ""], 89 | \["火星词典.Link5.txt", 106, "MarsDictPrefix_"], 90 | \["火星词典.Link6.txt", 998, ""], 91 | \["火星词典.Link7.txt", 0, "MarsDict_"], 92 | \["火星词典.Link888.txt", 888, ""], 93 | \] 94 | " anyMorePart:源文件的名称,包括后缀名 95 | " sourceStyle:定义兼容的源文件或词条格式(MdxSourceBuilderLink.Vim) 96 | " - 0:固定项目,'一行页码 + 多行关键词(每行一个关键词)'的标准词条格式 97 | " - 1:固定项目,'一个页码 + 多个中文单字符的关键词'的压缩词条格式 98 | " - 2:固定项目,'页码 + 分隔符 + 单个中或英关键词'的啰嗦行格式 99 | " - 3:固定项目,'单个中或英关键词 + 分隔符 + 页码'的啰嗦行格式 100 | " - 888: 固定项目,用于快速手工添加链接词条,"现有关键词\t链接词条" 101 | " - 998: 固定项目,源文件为标准的mdx源格式,但欠缺CSS文件等必要元素 102 | " - 999:固定项目,源文件为标准的mdx源格式,无需进一步处理,直接使用 103 | " - 其他: 定制化项目,自定义词条样式及处理程序,建议用101-199以示区别 104 | " pagePrefix:按需可选;但当sourceStyle为0/1/2/3时,必须配置 105 | 106 | " 自定义固定链接的导航:\[链接名称, 链接目标], 107 | let g:customNavList = [ 108 | \["封面", "MarsDictCover_0001"], 109 | \["扉页", "MarsDictCover_0002"], 110 | \["版权", "MarsDictCover_0003"], 111 | \["获奖", "MarsDictCover_0006"], 112 | \["目录", "MarsDictPrefix_0001"], 113 | \["凡例", "MarsDictPrefix_0003"], 114 | \["上册", "MarsDict_0001"], 115 | \["下册", "MarsDict_0100"], 116 | \["附录", "MarsDictAppendix_0001"], 117 | \["封底", "MarsDictAppendix_0021"], 118 | \] 119 | 120 | " 将.txt格式的mdx源文件打包为.mdx格式的词典文件 121 | " 打包设为1,不打包则设为0 122 | let s:autoMdxPack = 1 123 | " - 0:不输出.mdx词典文件,需要另行用MdxBuilder 3.x等工具手工打包 124 | " - 特点:mdx官方打包工具,对各种词典的兼容性最好 125 | " - 缺点:对大文件支持不够好;需要手工打包 126 | " - 1,使用 mdict-utils 自动打包生成.mdx词典文件 127 | " - 特点:自动化、速度快、大词库、跨平台 128 | " - 缺点:需要安装如下软件,并配置信息 129 | " + 安装 与 Vim 匹配的 python 版本 130 | " + 安装 mdict-utilis:pip install mdict-utils 131 | 132 | " 自动打包图片等资源到mdd 133 | " 打包设为1,不打包则设为0 134 | let s:autoMddPack = 0 135 | " 图片等资源相对于词典所在的目录 136 | let s:imageFolder = "images" 137 | 138 | " 主程序 ------------------------------------------------------------------{{{1 139 | " ================================== 140 | " * 以下为主程序,适合高级用户定制 * 141 | " ================================== 142 | 143 | " 初始化 ------------------------------------------------------------------{{{2 144 | 145 | " 防止自加载 146 | if expand("%:p:t") == "MdxSourceBuilder.vim" 147 | echo "请先 :new 创建新文件,再执行 :so MdxSourceBuilder.vim" 148 | finish 149 | endif 150 | 151 | " 清空历史消息 152 | messages clear 153 | 154 | " 设置当前工作目录为本文档所在目录 155 | let s:home = fnamemodify(resolve(expand(':p')), ':h') 156 | silent! exe 'cd ' . s:home 157 | echomsg "已设置工作目录为:" . s:home 158 | 159 | " 保存mdxSource文件 160 | try 161 | silent! exe "write! " . s:mdxSourceFileName 162 | catch 163 | silent! exe "bdelete! ". s:mdxSourceFileName 164 | silent! exe "write! " . s:mdxSourceFileName 165 | endtry 166 | 167 | " 重置info.title和info.description文件的编码为utf-8 168 | if s:autoMdxPack == 1 169 | silent! set fileformat=unix 170 | silent! set nobomb 171 | silent! set fileencoding=utf-8 172 | " 设置info.title.html文件为utf-8格式 173 | silent! %delete 174 | silent! exe "read " 175 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.title.html", "") 176 | silent! 0d 177 | try 178 | silent! exe "write! " 179 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.title.html", "") 180 | catch 181 | silent! exe "bdelete! " 182 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.title.html", "") 183 | silent! exe "write! " 184 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.title.html", "") 185 | endtry 186 | " 设置info.description.html文件为utf-8格式 187 | silent! %delete 188 | silent! exe "read " 189 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.description.html", "") 190 | silent! 0d 191 | try 192 | silent! exe "write! " 193 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.description.html", "") 194 | catch 195 | silent! exe "bdelete! " 196 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.description.html", "") 197 | silent! exe "write! " 198 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.description.html", "") 199 | endtry 200 | endif 201 | 202 | " 输出CSS文件 -------------------------------------------------------------{{{2 203 | silent! set fileformat=unix 204 | silent! set nobomb 205 | silent! set fileencoding=utf-8 206 | 207 | " 输出CSS文件:若已打开,则先关闭旧的,再保存新的 208 | silent! %delete 209 | silent! exe "read ". "MdxSourceBuilderCSS.vim" 210 | silent! 0d 211 | 212 | try 213 | silent! exe "write! " . g:CSSName 214 | catch 215 | silent! exe "bdelete! ". g:CSSName 216 | silent! exe "write! " . g:CSSName 217 | endtry 218 | silent! %delete 219 | echomsg "已输出CSS,请查阅:" . getcwd() . "\\" . g:CSSName 220 | 221 | " 输出MdxSource文件 -------------------------------------------------------{{{2 222 | silent! set fileformat=dos 223 | silent! set nobomb 224 | silent! set fileencoding=utf-8 225 | 226 | let g:mdxSource = [] 227 | " 补充更多的Mdx源文件 228 | if s:anyMore == 1 229 | for anyMoreSource in g:anyMoreSources 230 | echomsg "正在处理:" . substitute(anyMoreSource[0], ".txt", "", "") 231 | silent! %delete 232 | silent! exe "read ". anyMoreSource[0] 233 | silent! 0d 234 | source MdxSourceBuilderLink.vim 235 | silent! %delete 236 | endfor 237 | endif 238 | " 图片词典正文部分 239 | for dictionaryPart in g:dictionaryParts 240 | echomsg "正在处理:" . substitute(dictionaryPart[0], ".txt", "", "") 241 | silent! %delete 242 | silent! exe "read ". dictionaryPart[0] 243 | silent! 0d 244 | source MdxSourceBuilderCore.vim 245 | silent! %delete 246 | endfor 247 | " 多层次词条 248 | if s:multiLevel == 1 249 | for multiFile in g:multiLevelParts[0] 250 | echomsg "正在处理:" . substitute(multiFile[0], ".txt", "", "") 251 | endfor 252 | silent! %delete 253 | source MdxSourceBuilderMultiLevel.vim 254 | silent! %delete 255 | endif 256 | 257 | echomsg "正在生成 MdxSource 文件……" 258 | silent! %delete 259 | silent! call append('$', g:mdxSource) 260 | 261 | silent! global/^$/d 262 | silent! write! 263 | silent! noh 264 | 265 | echomsg "已输出 MdxSource,请查阅: " . getcwd() . "\\" . s:mdxSourceFileName 266 | 267 | " 输出mdx文件 -------------------------------------------------------------{{{2 268 | " src: https://github.com/liuyug/mdict-utils 269 | 270 | " Linux下的参数不用引号,但要将空格转义,以下代码供参考,未测试 271 | " let s:mdxSourceFileName = substitute(s:mdxSourceFileName, "\\s", "\\\\ ", 'g') 272 | 273 | if s:autoMdxPack == 1 274 | echomsg "正在生成 Mdx 文件..." 275 | silent! exe '!mdict' 276 | \. ' --title "' 277 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.title.html", "") 278 | \. '" --description "' 279 | \. substitute(s:mdxSourceFileName, ".txt$", ".info.description.html", "") 280 | \. '" -a "' . s:mdxSourceFileName . '" "' 281 | \. substitute(s:mdxSourceFileName, ".txt$", ".mdx", "") . '"' 282 | 283 | echomsg "已输出 Mdx,请查阅: " . getcwd() . "\\" 284 | \. substitute(s:mdxSourceFileName, ".txt$", ".mdx", "") 285 | endif 286 | 287 | if s:autoMddPack == 1 288 | echomsg "正在生成 Mdd 文件..." 289 | silent! exe '!mdict' 290 | \. ' -a "' . s:imageFolder . '" "' 291 | \. substitute(s:mdxSourceFileName, ".txt$", ".mdd", "") . '"' 292 | 293 | echomsg "已输出 Mdd,请查阅: " . getcwd() . "\\" 294 | \. substitute(s:mdxSourceFileName, ".txt$", ".mdd", "") 295 | endif 296 | 297 | finish 298 | 299 | /* vim: set et sw=4 ts=4 sts=4 fdm=marker ff=unix ft=vim fenc=utf8 nobomb: */ 300 | -------------------------------------------------------------------------------- /MdxSourceBuilderCSS.vim: -------------------------------------------------------------------------------- 1 | /* 顶部的导航 */ 2 | .NavTop { 3 | margin: 0 0 10px 0; 4 | text-align: center; 5 | } 6 | 7 | /* 顶部的页面导航 */ 8 | .NavTop .pagesNav { 9 | background-color: #CC9933; 10 | color: #FFFF99; 11 | } 12 | .NavTop .pageNum { 13 | color: #FFFF99; 14 | padding: 0 5px; 15 | text-decoration: none; 16 | } 17 | .firstPage {} 18 | .previousPage { 19 | font-size:130%; 20 | } 21 | .previous2Page { 22 | font-size:110%; 23 | } 24 | .currentPage { 25 | font-size: 150%; 26 | font-weight: 600; 27 | color: red!important; 28 | } 29 | .nextPage { 30 | font-size:130%; 31 | } 32 | .next2Page { 33 | font-size:110%; 34 | } 35 | .lastPage {} 36 | 37 | /* 关键词导航 */ 38 | .keywordsNav { 39 | color: blue; 40 | } 41 | .keywordsNavKeyword { 42 | padding: 0 5px; 43 | text-decoration: none; 44 | } 45 | .currentKeyword { 46 | color: red; 47 | font-weight: 700; 48 | } 49 | .subkeywords .keywordsNavKeyword { 50 | padding: 0; 51 | } 52 | 53 | a.nearestKeyword { 54 | color: hotpink; 55 | text-decoration: none; 56 | } 57 | 58 | /* 多级关键词导航 */ 59 | .keywordsNav0 { 60 | /* display:none */ 61 | } 62 | .keywordsNav1 { 63 | /* display:none */ 64 | } 65 | .keywordsNav2 { 66 | /* display:none */ 67 | } 68 | .keywordsNav3 { 69 | /* display:none */ 70 | } 71 | .keywordsNav4 { 72 | /* display:none */ 73 | } 74 | .keywordsNav5 { 75 | /* display:none */ 76 | } 77 | 78 | /* 正文图片 */ 79 | .mainbodyimg img { 80 | /* 自适应屏幕宽度 */ 81 | width: 100%; 82 | 83 | /* 按需设定固定宽度 */ 84 | /* width: 42em; */ 85 | /* display: block; */ 86 | /* margin-left: auto; */ 87 | /* margin-right: auto; */ 88 | 89 | /* 对于透明图片的词典,可更改背景色以适应黑夜模式 */ 90 | /* 挑选喜欢的颜色 https://encycolorpedia.cn/named */ 91 | /* background-color: linen; */ 92 | } 93 | 94 | /* 底部的导航 */ 95 | .NavBottom { 96 | margin: 10px 0 0 0; 97 | text-align: center; 98 | } 99 | 100 | /* 自定义导航 */ 101 | .customNav {} 102 | .customNavKeyword { 103 | padding: 0 5px; 104 | text-decoration: none; 105 | } 106 | 107 | /* 底部的页面导航 */ 108 | .NavBottom .pagesNav { 109 | background-color: #EAEAEA; 110 | color: black; 111 | } 112 | .NavBottom .pageNum { 113 | color: black; 114 | padding: 0 5px; 115 | text-decoration: none; 116 | } 117 | .NavBottom .currentPage { 118 | font-size: 150%; 119 | font-weight: 600; 120 | color: red!important; 121 | } 122 | 123 | /* 更多自定义CSS */ 124 | 125 | /* vim: set et sw=4 ts=4 sts=4 fdm=marker ff=unix ft=css fenc=utf8 nobomb: */ 126 | -------------------------------------------------------------------------------- /MdxSourceBuilderCore.vim: -------------------------------------------------------------------------------- 1 | " 读取词典参数 ------------------------------------------------------------{{{1 2 | let s:CSSName = g:CSSName 3 | let s:customNavList = g:customNavList 4 | let s:picNamePrefix = dictionaryPart[1] 5 | let s:picFormat = dictionaryPart[2] 6 | let s:sourceStyle = dictionaryPart[3] 7 | let s:pageNumDigit = '%0'. g:pageNumDigit . 'd' 8 | let s:navStyle = dictionaryPart[4] 9 | let s:locationPercent = dictionaryPart[5] 10 | let s:nearestKeyword = dictionaryPart[6] 11 | let s:pageNavWidth= g:pageNavWidth 12 | 13 | " 初始化及通用函数定义 ----------------------------------------------------{{{1 14 | " 清理并保存,以便后续代码可以正常运作 15 | silent! normal! Go 16 | silent! global/^"/d 17 | silent! global/^$/d 18 | silent! w! 19 | 20 | function! StandardizeStyle(sourceStyle) 21 | " 将 page,keywords 输入文件格式整理为标准格式 22 | if a:sourceStyle == 0 23 | " No further treatment is required 24 | " 适合如下标准词条格式:一行页码 + 多行关键词(每行一个关键词) 25 | " 0001 26 | " a 27 | " b 28 | " c 29 | " 0002 30 | " x 31 | " y 32 | " z 33 | elseif a:sourceStyle == 1 34 | " 适合如下词条格式:行格式为'一个页码+多个中文单字符的关键词' 35 | " 0001吖阿啊锕腌啊嗄啊哎 36 | " 0002哀埃挨唉锿挨皑癌毐欸嗳矮蔼 37 | " 0003霭艾砹唉爱隘碍嗳嗌媛瑷 38 | " 以下将的单行格式转换为标准词条格式 39 | " 将页码换行 40 | silent! %s/^\d\{3,}\($\)\@!/\0\r/e 41 | " 将每个字独立成行 42 | silent! %s/\D\($\)\@!/\0\r/ge 43 | elseif a:sourceStyle == 2 44 | " 适合如下词条格式:行格式为"页码 + 分隔符 + 单个中或英关键词" 45 | " 分隔符兼容:Tab键'\t', 4个及以上空格'\s\{4,}' 46 | " 0001 abandon 47 | " 0001 abandoned 48 | " 0002 abandonee 49 | " 0002 a bas 50 | " 0003 abdominous 51 | " 将所有Tab替换为空格 52 | silent! set expandtab tabstop=4 | %retab 53 | normal gg 54 | let linenumber = printf(s:pageNumDigit, 0) 55 | for line in getline(1,'$') 56 | let words = split(line, '\s\{4,}') 57 | if linenumber == words[0] 58 | silent! s/^.*$/\= words[1]/e 59 | else 60 | let linenumber = words[0] 61 | silent! s/^.*$/\= words[0] . "\n". get(words, 1, "")/e 62 | endif 63 | silent! normal j 64 | endfor 65 | elseif a:sourceStyle == 3 66 | " 适合如下词条格式:行格式为"单个中或英关键词 + 分隔符 + 页码" 67 | " 分隔符兼容:Tab键'\t', 4个及以上空格'\s\{4,}' 68 | " abandon 0001 69 | " abandoned 0001 70 | " abandonee 0002 71 | " a bas 0002 72 | " abdominous 0003 73 | " 将所有Tab替换为空格 74 | silent! set expandtab tabstop=4 | %retab 75 | " 将格式转为sourceStyle 2 76 | silent! %s/^\(.\{-}\)\s\{4,}\(\d\{3,}\)$/\2 \1/ 77 | normal gg 78 | let linenumber = printf(s:pageNumDigit, 0) 79 | for line in getline(1,'$') 80 | let words = split(line, '\s\{4,}') 81 | if linenumber == words[0] 82 | silent! s/^.*$/\= words[1]/e 83 | else 84 | let linenumber = words[0] 85 | silent! s/^.*$/\= words[0] . "\n". get(words, 1, "")/e 86 | endif 87 | silent! normal j 88 | endfor 89 | else 90 | echomsg "警告!未定义 SourceStyle " . a:sourceStyle . " 的标准化方案!" 91 | endif 92 | " 清理并保存,以便后续代码可以正常运作 93 | silent! normal! Go 94 | silent! %s/?/?/g 95 | silent! global/^$/d 96 | silent! w! 97 | endfunction 98 | 99 | function! PageList() 100 | " 创建、排序、去重 pageList 101 | let s:pageList = [] 102 | global/^\d\{3,}$/call add(s:pageList, str2nr(getline('.'))) 103 | let s:pageList = uniq(sort(s:pageList,'n')) 104 | return s:pageList 105 | " echomsg s:pageList 106 | endfunction 107 | 108 | function! KeywordsDict() 109 | let startline = line(".") 110 | let currentPage = str2nr(getline('.')) 111 | 112 | silent! cbelow 113 | let endline = line(".") 114 | let lastline = line("$") 115 | 116 | if endline == startline 117 | if endline == lastline 118 | silent! let s:keywordsDict[currentPage] 119 | \= get(s:keywordsDict, currentPage, []) 120 | \+ getline(startline+1, endline-1) 121 | else 122 | silent! let s:keywordsDict[currentPage] 123 | \= get(s:keywordsDict, currentPage, []) 124 | \+ getline(startline+1, lastline) 125 | endif 126 | else 127 | silent! let s:keywordsDict[currentPage] 128 | \= get(s:keywordsDict, currentPage, []) 129 | \+ getline(startline+1, endline-1) 130 | silent! cabove 131 | endif 132 | return s:keywordsDict 133 | endfunction 134 | 135 | function! KeywordsDicts() 136 | let s:keywordsDict = {} 137 | silent! vimgrep /^\d\{3,}$/ % 138 | silent! cdo call KeywordsDict() 139 | " echomsg s:keywordsDict 140 | endfunction 141 | 142 | function! CustomNav(customNavList) 143 | " 输出自定义导航条 144 | let customNav = "" 145 | for customNavKey in a:customNavList 146 | let customNavKeyword = '' 148 | \. customNavKey[0] 149 | \. '' 150 | let customNav = customNav . customNavKeyword 151 | endfor 152 | let customNav = '
' . customNav . '
' 153 | return customNav 154 | endfunction 155 | 156 | function! PagesNav(currentPage, picNamePrefix) 157 | " 根据所有页码及当前页码所在位置,输出页码导航条 158 | " 兼容性:页码可以重复、跳页、乱序 159 | 160 | " 定义关键位置和页码 161 | " 获得当前页码,去除前导符0 162 | " let currentPage = str2nr(getline('.')) 163 | let currentPage = a:currentPage 164 | 165 | let cidx = index(s:pageList, currentPage) 166 | let firstidx = 0 167 | let lastidx = len(s:pageList) - 1 168 | 169 | let firstPage = s:pageList[0] 170 | let lastPage = s:pageList[-1] 171 | let previousPage = get(s:pageList, cidx-1, 'PAGE404') 172 | let previous2Page = get(s:pageList, cidx-2, 'PAGE404') 173 | let previous3Page = get(s:pageList, cidx-3, 'PAGE404') 174 | let nextPage = get(s:pageList, cidx+1, 'PAGE404') 175 | let next2Page = get(s:pageList, cidx+2, 'PAGE404') 176 | let next3Page = get(s:pageList, cidx+3, 'PAGE404') 177 | 178 | " 定义链接内容和样式 179 | let firstPage = PageLink(firstPage, "firstPage", a:picNamePrefix) 180 | let previous3Page = PageLink(previous3Page, "previous3Page", a:picNamePrefix) 181 | let previous2Page = PageLink(previous2Page, "previous2Page", a:picNamePrefix) 182 | let previousPage = PageLink(previousPage, "previousPage", a:picNamePrefix) 183 | let currentPage = PageLink(currentPage, "currentPage", a:picNamePrefix) 184 | let nextPage = PageLink(nextPage, "nextPage", a:picNamePrefix) 185 | let next2Page = PageLink(next2Page, "next2Page", a:picNamePrefix) 186 | let next3Page = PageLink(next3Page, "next3Page", a:picNamePrefix) 187 | let lastPage = PageLink(lastPage, "lastPage", a:picNamePrefix) 188 | 189 | " 根据当前页码所在位置,输出相应的pagesNav 190 | let pagesNav = "" 191 | if cidx > firstidx 192 | let pagesNav = firstPage 193 | endif 194 | if s:pageNavWidth == 0 195 | if cidx-3 > firstidx 196 | let pagesNav = pagesNav . ' ... ' 197 | elseif cidx != firstidx 198 | let pagesNav = pagesNav . ', ' 199 | endif 200 | elseif s:pageNavWidth == 1 201 | if cidx-4 > firstidx 202 | let pagesNav = pagesNav . ' ... ' 203 | elseif cidx != firstidx 204 | let pagesNav = pagesNav . ', ' 205 | endif 206 | if cidx-3 > firstidx 207 | let pagesNav = pagesNav . previous3Page . ', ' 208 | endif 209 | endif 210 | if cidx-2 > firstidx 211 | let pagesNav = pagesNav . previous2Page . ', ' 212 | endif 213 | if cidx-1 > firstidx 214 | let pagesNav = pagesNav . previousPage . ', ' 215 | endif 216 | let pagesNav = pagesNav . currentPage 217 | if cidx+1 < lastidx 218 | let pagesNav = pagesNav . ', ' . nextPage 219 | endif 220 | if cidx+2 < lastidx 221 | let pagesNav = pagesNav . ', ' . next2Page 222 | endif 223 | if s:pageNavWidth == 0 224 | if cidx+3 < lastidx 225 | let pagesNav = pagesNav . ' ... ' 226 | elseif cidx != lastidx 227 | let pagesNav = pagesNav . ', ' 228 | endif 229 | elseif s:pageNavWidth == 1 230 | if cidx+3 < lastidx 231 | let pagesNav = pagesNav . ', ' . next3Page 232 | endif 233 | if cidx+4 < lastidx 234 | let pagesNav = pagesNav . ' ... ' 235 | elseif cidx != lastidx 236 | let pagesNav = pagesNav . ', ' 237 | endif 238 | endif 239 | if cidx < lastidx 240 | let pagesNav = pagesNav . lastPage 241 | endif 242 | let pagesNav = '
' . pagesNav . '
' 243 | return pagesNav 244 | endfunction 245 | 246 | function! PageLink(page, className, picNamePrefix) 247 | " 根据页码信息,输出页码对应的链接和样式 248 | let pageLink = '' 251 | \. a:page . '' 252 | return pageLink 253 | endfunction 254 | 255 | function! KeywordsNav(currentPage, currentWord) 256 | " 输出关键字导航 257 | let keywordsNav = "" 258 | let keywordCount = 0 259 | for keyword in s:keywordsDict[a:currentPage] 260 | if keyword == a:currentWord 261 | if s:locationPercent 262 | let keyword = '' 264 | \. keyword . " " 265 | \. printf("%.0f%%", (keywordCount + 1) * 100.0 266 | \/len(s:keywordsDict[a:currentPage])) 267 | \. '' 268 | else 269 | let keyword = '' 271 | \. keyword 272 | \. '' 273 | endif 274 | else 275 | let keyword = '' 277 | \. keyword . '' 278 | endif 279 | if keywordCount == 0 280 | let keywordsNav = keyword 281 | else 282 | let keywordsNav = keywordsNav . ", " . keyword 283 | endif 284 | let keywordCount = keywordCount + 1 285 | endfor 286 | " //////距本页最近的前一个词条 287 | let currentPage = str2nr(a:currentPage) 288 | let cidx = index(s:pageList, currentPage) 289 | let firstPage = s:pageList[0] 290 | let nearestPrePage = get(s:pageList, cidx-1, s:pageList[-1]) 291 | if nearestPrePage >= firstPage 292 | while len(s:keywordsDict[nearestPrePage]) == 0 293 | let nearestPreidx = index(s:pageList, nearestPrePage) 294 | " 最后一个参数,可实现循环处理 295 | let nearestPrePage = get(s:pageList, nearestPreidx-1, s:pageList[-1]) 296 | " 若穷尽页面也没有词条,则输出空 297 | if nearestPrePage == currentPage 298 | break 299 | endif 300 | endwhile 301 | if len(s:keywordsDict[nearestPrePage]) > 0 302 | let nearestPreKeyword = s:keywordsDict[nearestPrePage][-1] 303 | if s:nearestKeyword == 0 304 | let nearestPreKeyword = '' 305 | elseif s:nearestKeyword == 1 306 | let nearestPreKeyword = '' 308 | \. '<<<' 309 | elseif s:nearestKeyword == 2 310 | let nearestPreKeyword = '' 312 | \. '(' . nearestPreKeyword. ')<<<' 313 | endif 314 | else 315 | let nearestPreKeyword = '' 316 | endif 317 | else 318 | let nearestPreKeyword = '' 319 | endif 320 | " //////距本页最近的后一个词条 321 | let lastPage = s:pageList[-1] 322 | let nearestNextPage = get(s:pageList, cidx+1, s:pageList[0]) 323 | if nearestNextPage <= lastPage 324 | while len(s:keywordsDict[nearestNextPage]) == 0 325 | let nearestNextidx = index(s:pageList, nearestNextPage) 326 | " 最后一个参数,可实现循环处理 327 | let nearestNextPage = get(s:pageList, nearestNextidx+1, s:pageList[0]) 328 | " 若穷尽页面也没有词条,则输出空 329 | if nearestNextPage == currentPage 330 | break 331 | endif 332 | endwhile 333 | if len(s:keywordsDict[nearestNextPage]) > 0 334 | let nearestNextKeyword = s:keywordsDict[nearestNextPage][0] 335 | if s:nearestKeyword == 0 336 | let nearestNextKeyword = '' 337 | elseif s:nearestKeyword == 1 338 | let nearestNextKeyword = '' 340 | \. '>>>' 341 | elseif s:nearestKeyword == 2 342 | let nearestNextKeyword = '' 344 | \. '>>>(' . nearestNextKeyword. ')' 345 | endif 346 | else 347 | let nearestNextKeyword = '' 348 | endif 349 | else 350 | let nearestNextKeyword = '' 351 | endif 352 | " //////拼接导航词条 353 | let keywordsNav = '
' 354 | \. nearestPreKeyword . keywordsNav . nearestNextKeyword 355 | \. '
' 356 | return keywordsNav 357 | endfunction 358 | 359 | " 根据sourceStyle和NavStyle输出标准的mdx源文件格式 ---------------------------------{{{1 360 | if index([0,1,2,3], s:sourceStyle) >= 0 361 | " 运行初始化函数 362 | silent! call StandardizeStyle(s:sourceStyle) 363 | silent! call PageList() 364 | silent! call KeywordsDicts() 365 | " 清空全文 366 | silent! %delete 367 | " 将标准化词条转为标准的mdx源文件格式 368 | if s:navStyle == 0 369 | " 自身没有pages和keywords导航,仅转LINK 370 | for currentPage in s:pageList 371 | for currentKeyword in s:keywordsDict[currentPage] 372 | silent! let s:navStyleZero = [currentKeyword 373 | \, '@@@LINK=' . s:picNamePrefix 374 | \. printf(s:pageNumDigit, currentPage) 375 | \, ''] 376 | silent! call append('$', s:navStyleZero) 377 | endfor 378 | endfor 379 | elseif s:navStyle == 1 380 | " 仅有pages导航,无keywords导航,简洁 381 | for currentPage in s:pageList 382 | silent! let s:navStyleOne = [s:picNamePrefix 383 | \. printf(s:pageNumDigit, currentPage) 384 | \, '' 385 | \. '' 389 | \. '
' 392 | \. '" 395 | \, ''] 396 | silent! call append('$', s:navStyleOne) 397 | for currentKeyword in s:keywordsDict[currentPage] 398 | silent! let s:navStyleZero = [currentKeyword 399 | \, '@@@LINK=' . s:picNamePrefix 400 | \. printf(s:pageNumDigit, currentPage) 401 | \, ''] 402 | silent! call append('$', s:navStyleZero) 403 | endfor 404 | endfor 405 | elseif s:navStyle == 2 406 | " 不仅有pages导航,而且有keywords导航 407 | for currentPage in s:pageList 408 | silent! let s:navStyleTwo = [s:picNamePrefix 409 | \. printf(s:pageNumDigit, currentPage) 410 | \, '' 411 | \. '' 416 | \. '
' 419 | \. '" 422 | \, ''] 423 | silent! call append('$', s:navStyleTwo) 424 | for currentKeyword in s:keywordsDict[currentPage] 425 | silent! let s:navStyleOne = [currentKeyword 426 | \, '' 427 | \. '' 432 | \. '
' 435 | \. '" 438 | \, ''] 439 | silent! call append('$', s:navStyleOne) 440 | endfor 441 | endfor 442 | elseif s:navStyle == 3 443 | " 不仅有pages导航,而且有keywords导航 444 | " 但keyword其实仅简单@@@Link到相应page 445 | " 因此,keyword导航的LocationPercent等失效 446 | " 而好处是,keyword与page共用代码,简洁 447 | for currentPage in s:pageList 448 | silent! let s:navStyleTwo = [s:picNamePrefix 449 | \. printf(s:pageNumDigit, currentPage) 450 | \, '' 451 | \. '' 456 | \. '
' 459 | \. '" 462 | \, ''] 463 | silent! call append('$', s:navStyleTwo) 464 | for currentKeyword in s:keywordsDict[currentPage] 465 | silent! let s:navStyleZero = [currentKeyword 466 | \, '@@@LINK=' . s:picNamePrefix 467 | \. printf(s:pageNumDigit, currentPage) 468 | \, ''] 469 | silent! call append('$', s:navStyleZero) 470 | endfor 471 | endfor 472 | else 473 | echomsg "请定义 NavStyle " . s:NavStyle . " 的处理方案" 474 | endif 475 | else 476 | echomsg "请定义 SourceStyle " . s:sourceStyle . " 的处理方案" 477 | endif 478 | 479 | " 将输出结果保存到mdxSource ----------------------------------------------{{{1 480 | silent! global/^$/d 481 | let g:mdxSource = extend(g:mdxSource, getline(1, "$")) 482 | 483 | " Reference --------------------------------------------------------------{{{1 484 | finish 485 | 486 | " 在新Tab页打开output文件 487 | silent! tabe %:r.output.%:e 488 | 489 | /* vim: set et sw=4 ts=4 sts=4 fdm=marker ff=unix ft=vim fenc=utf8 nobomb: */ 490 | -------------------------------------------------------------------------------- /MdxSourceBuilderDemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VimWei/MdxSourceBuilder/0ce28a0075e28d1be920723c34becd4e2116c554/MdxSourceBuilderDemo.gif -------------------------------------------------------------------------------- /MdxSourceBuilderLink.vim: -------------------------------------------------------------------------------- 1 | " 读取词典参数 ------------------------------------------------------------{{{1 2 | let s:CSSName = g:CSSName 3 | let s:pageNumDigit = '%0'. g:pageNumDigit . 'd' 4 | let s:sourceStyle = anyMoreSource[1] 5 | let s:pagePrefix = anyMoreSource[2] 6 | 7 | " 初始化及通用函数定义 ----------------------------------------------------{{{1 8 | " 清理并保存,以便后续代码可以正常运作 9 | silent! normal! Go 10 | silent! global/^"/d 11 | silent! global/^$/d 12 | silent! w! 13 | 14 | function! StandardizeStyle(sourceStyle) 15 | " 将 page,keywords 输入文件格式整理为标准格式 16 | if a:sourceStyle == 0 17 | " No further treatment is required 18 | " 适合如下标准词条格式:一行页码 + 多行关键词(每行一个关键词) 19 | " 0001 20 | " a 21 | " b 22 | " c 23 | " 0002 24 | " x 25 | " y 26 | " z 27 | elseif a:sourceStyle == 1 28 | " 适合如下词条格式:行格式为'一个页码+多个中文单字符的关键词' 29 | " 0001吖阿啊锕腌啊嗄啊哎 30 | " 0002哀埃挨唉锿挨皑癌毐欸嗳矮蔼 31 | " 0003霭艾砹唉爱隘碍嗳嗌媛瑷 32 | " 以下将的单行格式转换为标准词条格式 33 | " 将页码换行 34 | silent! %s/^\d\{3,}\($\)\@!/\0\r/e 35 | " 将每个字独立成行 36 | silent! %s/\D\($\)\@!/\0\r/ge 37 | elseif a:sourceStyle == 2 38 | " 适合如下词条格式:行格式为"页码 + 分隔符 + 单个中或英关键词" 39 | " 分隔符兼容:Tab键'\t', 4个及以上空格'\s\{4,}' 40 | " 0001 abandon 41 | " 0001 abandoned 42 | " 0002 abandonee 43 | " 0002 a bas 44 | " 0003 abdominous 45 | " 将所有Tab替换为空格 46 | silent! set expandtab tabstop=4 | %retab 47 | normal gg 48 | let linenumber = printf(s:pageNumDigit, 0) 49 | for line in getline(1,'$') 50 | let words = split(line, '\s\{4,}') 51 | if linenumber == words[0] 52 | silent! s/^.*$/\= words[1]/e 53 | else 54 | let linenumber = words[0] 55 | silent! s/^.*$/\= words[0] . "\n". get(words, 1, "")/e 56 | endif 57 | silent! normal j 58 | endfor 59 | elseif a:sourceStyle == 3 60 | " 适合如下词条格式:行格式为"单个中或英关键词 + 分隔符 + 页码" 61 | " 分隔符兼容:Tab键'\t', 4个及以上空格'\s\{4,}' 62 | " abandon 0001 63 | " abandoned 0001 64 | " abandonee 0002 65 | " a bas 0002 66 | " abdominous 0003 67 | " 将所有Tab替换为空格 68 | silent! set expandtab tabstop=4 | %retab 69 | " 将格式转为sourceStyle 2 70 | silent! %s/^\(.\{-}\)\s\{4,}\(\d\{3,}\)$/\2 \1/ 71 | normal gg 72 | let linenumber = printf(s:pageNumDigit, 0) 73 | for line in getline(1,'$') 74 | let words = split(line, '\s\{4,}') 75 | if linenumber == words[0] 76 | silent! s/^.*$/\= words[1]/e 77 | else 78 | let linenumber = words[0] 79 | silent! s/^.*$/\= words[0] . "\n". get(words, 1, "")/e 80 | endif 81 | silent! normal j 82 | endfor 83 | else 84 | echomsg "警告!未定义 SourceStyle " . a:sourceStyle . " 的标准化方案!" 85 | endif 86 | " 清理并保存,以便后续代码可以正常运作 87 | silent! normal! Go 88 | silent! %s/?/?/g 89 | silent! global/^$/d 90 | silent! w! 91 | endfunction 92 | 93 | function! PageList() 94 | " 创建、排序、去重 pageList 95 | let s:pageList = [] 96 | global/^\d\{3,}$/call add(s:pageList, str2nr(getline('.'))) 97 | let s:pageList = uniq(sort(s:pageList,'n')) 98 | return s:pageList 99 | " echomsg s:pageList 100 | endfunction 101 | 102 | function! KeywordsDict() 103 | let startline = line(".") 104 | let currentPage = str2nr(getline('.')) 105 | 106 | silent! cbelow 107 | let endline = line(".") 108 | let lastline = line("$") 109 | 110 | if endline == startline 111 | if endline == lastline 112 | silent! let s:keywordsDict[currentPage] 113 | \= get(s:keywordsDict, currentPage, []) 114 | \+ getline(startline+1, endline-1) 115 | else 116 | silent! let s:keywordsDict[currentPage] 117 | \= get(s:keywordsDict, currentPage, []) 118 | \+ getline(startline+1, lastline) 119 | endif 120 | else 121 | silent! let s:keywordsDict[currentPage] 122 | \= get(s:keywordsDict, currentPage, []) 123 | \+ getline(startline+1, endline-1) 124 | silent! cabove 125 | endif 126 | return s:keywordsDict 127 | endfunction 128 | 129 | function! KeywordsDicts() 130 | let s:keywordsDict = {} 131 | silent! vimgrep /^\d\{3,}$/ % 132 | silent! cdo call KeywordsDict() 133 | " echomsg s:keywordsDict 134 | endfunction 135 | 136 | " 根据SourceStyle输出标准的mdx源文件格式 ----------------------------------{{{1 137 | if index([0,1,2,3], s:sourceStyle) >= 0 138 | " 运行初始化函数 139 | silent! call StandardizeStyle(s:sourceStyle) 140 | silent! call PageList() 141 | silent! call KeywordsDicts() 142 | " 清空全文 143 | silent! %delete 144 | " 将标准化词条转为标准的mdx源文件格式 145 | for currentPage in s:pageList 146 | for currentKeyword in s:keywordsDict[currentPage] 147 | silent! let s:atLink = [currentKeyword 148 | \, '@@@LINK=' . s:pagePrefix 149 | \. printf(s:pageNumDigit, currentPage) 150 | \, ''] 151 | silent! call append('$', s:atLink) 152 | endfor 153 | endfor 154 | elseif s:sourceStyle == 104 155 | " 将带有编号的主词条改造为使用"s+编号"进行检索 156 | silent! %s/^\(\d*\)\(\s.*\)$/s\1\r@@@LINK=\0\r<\/>/ 157 | elseif s:sourceStyle == 105 158 | " 运行初始化函数 159 | silent! call StandardizeStyle(s:sourceStyle) 160 | silent! call PageList() 161 | silent! call KeywordsDicts() 162 | " 清空全文 163 | silent! 0,$d 164 | " 将标准化词条转为标准的mdx源文件格式 165 | for currentPage in s:pageList 166 | for currentKeyword in s:keywordsDict[currentPage] 167 | " 对currentKeyword进行特殊处理 168 | silent! let s:atLink = [currentKeyword 169 | \, '@@@LINK=' . s:pagePrefix 170 | \. printf(s:pageNumDigit, currentPage) 171 | \, '' 172 | \, "s" . split(currentKeyword, '\s')[0] 173 | \, '@@@LINK=' . currentKeyword 174 | \, ''] 175 | silent! call append('$', s:atLink) 176 | endfor 177 | endfor 178 | elseif s:sourceStyle == 106 179 | " 1. “中英文”定位到页面 180 | let lineDicts = {} 181 | let lineNumber = 0 182 | for line in getline(1,'$') 183 | let lineDicts[lineNumber] = split(line, '\s\{4,}') 184 | let lineNumber += 1 185 | endfor 186 | " 清空全文 187 | silent! 0,$d 188 | for line in range(lineNumber) 189 | let lineList = lineDicts[line] 190 | silent! let s:atLink = [lineList[2] 191 | \, '@@@LINK=' . s:pagePrefix 192 | \. lineList[0] 193 | \, '' 194 | \, lineList[1] 195 | \, '@@@LINK=' . lineList[2] 196 | \, '' 197 | \, lineList[3] 198 | \, '@@@LINK=' . lineList[2] 199 | \, ''] 200 | silent! call append('$', s:atLink) 201 | endfor 202 | elseif s:sourceStyle == 107 203 | " 添加编号链接 204 | silent! %s/\(\d\+\)/\1<\/a>/g 205 | " 给每个词条添加CSS 206 | silent! execute '%s/^\(<\/>\)/' 207 | \. '\r\0/e' 210 | elseif s:sourceStyle == 109 211 | " 基于888改造:主词条为页码 212 | silent! g/^\s*"/d 213 | silent! global/^$/d 214 | silent! %s/?/?/g 215 | silent! set expandtab tabstop=4 | %retab 216 | silent! w! 217 | let lineDicts = {} 218 | let lineNumber = 0 219 | for line in getline(1,'$') 220 | let lineDicts[lineNumber] = split(line, '\s\{4,}') 221 | let lineNumber += 1 222 | endfor 223 | silent! %delete 224 | for line in range(lineNumber) 225 | let lineList = lineDicts[line] 226 | for dictKeyword in lineList[1:] 227 | silent! let s:atLink = [dictKeyword 228 | \, '@@@LINK=' . s:pagePrefix . lineList[0] 229 | \, ''] 230 | silent! call append('$', s:atLink) 231 | endfor 232 | endfor 233 | elseif s:sourceStyle == 888 234 | " 适用于快速手工添加链接词条 235 | " 词条格式:现有关键词\t链接词条1\t链接词条2\t链接词条3 236 | " 分隔符兼容Tab和空格(4位及以上) 237 | " 可以添加注释行:与VimL一样,以 " 开头 238 | " 可以添加空行 239 | " /////////////// 240 | " 清理数据:删除注释行、空行、问号中文化、Tab转空格 241 | silent! g/^\s*"/d 242 | silent! global/^$/d 243 | silent! %s/?/?/g 244 | silent! set expandtab tabstop=4 | %retab 245 | silent! w! 246 | let lineDicts = {} 247 | let lineNumber = 0 248 | for line in getline(1,'$') 249 | let lineDicts[lineNumber] = split(line, '\s\{4,}') 250 | let lineNumber += 1 251 | endfor 252 | silent! 0,$d 253 | for line in range(lineNumber) 254 | let lineList = lineDicts[line] 255 | for dictKeyword in lineList[1:] 256 | silent! let s:atLink = [dictKeyword 257 | \, '@@@LINK=' . lineList[0] 258 | \, ''] 259 | silent! call append('$', s:atLink) 260 | endfor 261 | endfor 262 | elseif s:sourceStyle == 998 263 | " 清理数据:删除注释行、空行 264 | " 注释行:与VimL一样,以 " 开头 265 | silent! g/^\s*"/d 266 | silent! global/^$/d 267 | silent! w! 268 | " 给每个词条添加CSS 269 | silent! execute '%s/^\(<\/>\)/' 270 | \. '\r\0/e' 273 | elseif s:sourceStyle == 999 274 | " 清理数据:删除注释行、空行 275 | " 注释行:与VimL一样,以 " 开头 276 | silent! g/^\s*"/d 277 | silent! global/^$/d 278 | silent! w! 279 | " No further treatment is required 280 | else 281 | echomsg "警告!!未定义 SourceStyle " . s:sourceStyle . " 的处理方案!" 282 | endif 283 | 284 | " 将输出结果保存到mdxSource ----------------------------------------------{{{1 285 | silent! global/^$/d 286 | let g:mdxSource = extend(g:mdxSource, getline(1, "$")) 287 | 288 | " Reference --------------------------------------------------------------{{{1 289 | finish 290 | 291 | " 在新Tab页打开output文件 292 | silent! tabe %:r.output.%:e 293 | 294 | /* vim: set et sw=4 ts=4 sts=4 fdm=marker ff=unix ft=vim fenc=utf8 nobomb: */ 295 | -------------------------------------------------------------------------------- /MdxSourceBuilderMultiLevel.vim: -------------------------------------------------------------------------------- 1 | " 读取词典参数 ------------------------------------------------------------{{{1 2 | let s:CSSName = g:CSSName 3 | let s:pageNumDigit = '%0'. g:pageNumDigit . 'd' 4 | let s:customNavList = g:customNavList 5 | let s:picNamePrefix = g:multiLevelParts[1] 6 | let s:picFormat = g:multiLevelParts[2] 7 | let s:navStyle = g:multiLevelParts[3] 8 | let s:pageNavWidth = g:pageNavWidth 9 | 10 | " 初始化及通用函数定义 ----------------------------------------------------{{{1 11 | " 清理并保存,以便后续代码可以正常运作 12 | silent! normal! Go 13 | silent! global/^"/d 14 | silent! global/^$/d 15 | silent! w! 16 | 17 | function! StandardizeStyle(sourceStyle) 18 | " 将 page,keywords 输入文件格式整理为标准格式 19 | if a:sourceStyle == 0 20 | " No further treatment is required 21 | " 适合如下标准词条格式:一行页码 + 多行关键词(每行一个关键词) 22 | " 0001 23 | " a 24 | " b 25 | " c 26 | " 0002 27 | " x 28 | " y 29 | " z 30 | elseif a:sourceStyle == 1 31 | " 适合如下词条格式:行格式为'一个页码+多个中文单字符的关键词' 32 | " 0001吖阿啊锕腌啊嗄啊哎 33 | " 0002哀埃挨唉锿挨皑癌毐欸嗳矮蔼 34 | " 0003霭艾砹唉爱隘碍嗳嗌媛瑷 35 | " 以下将的单行格式转换为标准词条格式 36 | " 将页码换行 37 | silent! %s/^\d\{3,}\($\)\@!/\0\r/e 38 | " 将每个字独立成行 39 | silent! %s/\D\($\)\@!/\0\r/ge 40 | elseif a:sourceStyle == 2 41 | " 适合如下词条格式:行格式为"页码 + 分隔符 + 单个中或英关键词" 42 | " 分隔符兼容:Tab键'\t', 4个及以上空格'\s\{4,}' 43 | " 0001 abandon 44 | " 0001 abandoned 45 | " 0002 abandonee 46 | " 0002 a bas 47 | " 0003 abdominous 48 | " 将所有Tab替换为空格 49 | silent! set expandtab tabstop=4 | %retab 50 | normal gg 51 | let linenumber = printf(s:pageNumDigit, 0) 52 | for line in getline(1,'$') 53 | let words = split(line, '\s\{4,}') 54 | if linenumber == words[0] 55 | silent! s/^.*$/\= words[1]/e 56 | else 57 | let linenumber = words[0] 58 | silent! s/^.*$/\= words[0] . "\n". get(words, 1, "")/e 59 | endif 60 | silent! normal j 61 | endfor 62 | elseif a:sourceStyle == 3 63 | " 适合如下词条格式:行格式为"单个中或英关键词 + 分隔符 + 页码" 64 | " 分隔符兼容:Tab键'\t', 4个及以上空格'\s\{4,}' 65 | " abandon 0001 66 | " abandoned 0001 67 | " abandonee 0002 68 | " a bas 0002 69 | " abdominous 0003 70 | " 将所有Tab替换为空格 71 | silent! set expandtab tabstop=4 | %retab 72 | " 将格式转为sourceStyle 2 73 | silent! %s/^\(.\{-}\)\s\{4,}\(\d\{3,}\)$/\2 \1/ 74 | normal gg 75 | let linenumber = printf(s:pageNumDigit, 0) 76 | for line in getline(1,'$') 77 | let words = split(line, '\s\{4,}') 78 | if linenumber == words[0] 79 | silent! s/^.*$/\= words[1]/e 80 | else 81 | let linenumber = words[0] 82 | silent! s/^.*$/\= words[0] . "\n". get(words, 1, "")/e 83 | endif 84 | silent! normal j 85 | endfor 86 | else 87 | echomsg "警告!未定义 SourceStyle " . a:sourceStyle . " 的标准化方案!" 88 | endif 89 | " 清理并保存,以便后续代码可以正常运作 90 | silent! normal! Go 91 | silent! %s/?/?/g 92 | silent! global/^$/d 93 | silent! w! 94 | endfunction 95 | 96 | function! StandardizeMultiFiles() 97 | let i = 0 98 | let s:multiFileStd = {} 99 | for multiFile in g:multiLevelParts[0] 100 | " 读取每个文件 101 | silent! exe "$read ". multiFile[0] 102 | let sourceStyle = multiFile[1] 103 | " 标准化每个文件 104 | silent! call StandardizeStyle(sourceStyle) 105 | " 将每个文件都存入字典 s:multiFileStd 106 | let s:multiFileStd[i] = getline(1, "$") 107 | silent! %delete 108 | let i += 1 109 | endfor 110 | return s:multiFileStd 111 | " 监测:输出变量 112 | " echomsg s:multiFileStd 113 | " silent! call append('$', s:multiFileStd) 114 | " silent! call append('$', s:multiFileStd[0]) 115 | " for i in keys(s:multiFileStd) 116 | " silent! call append('$', s:multiFileStd[i]) 117 | " endfor 118 | endfunction 119 | 120 | function! PageList() 121 | silent! %delete 122 | for i in keys(s:multiFileStd) 123 | " 加载已经标准化的multiFileStd 124 | silent! call append('$', s:multiFileStd[i]) 125 | endfor 126 | " 创建、排序、去重 pageList 127 | let s:pageList = [] 128 | global/^\d\{3,}$/call add(s:pageList, str2nr(getline('.'))) 129 | let s:pageList = uniq(sort(s:pageList,'n')) 130 | return s:pageList 131 | " 监测:输出变量 132 | " echomsg s:pageList 133 | " silent! call append('$', s:pageList) 134 | endfunction 135 | 136 | function! KeywordsDict() 137 | let startline = line(".") 138 | let currentPage = str2nr(getline('.')) 139 | 140 | silent! cbelow 141 | let endline = line(".") 142 | let lastline = line("$") 143 | 144 | if endline == startline 145 | if endline == lastline 146 | silent! let s:keywordsDict[currentPage] 147 | \= get(s:keywordsDict, currentPage, []) 148 | \+ getline(startline+1, endline-1) 149 | else 150 | silent! let s:keywordsDict[currentPage] 151 | \= get(s:keywordsDict, currentPage, []) 152 | \+ getline(startline+1, lastline) 153 | endif 154 | else 155 | silent! let s:keywordsDict[currentPage] 156 | \= get(s:keywordsDict, currentPage, []) 157 | \+ getline(startline+1, endline-1) 158 | silent! cabove 159 | endif 160 | return s:keywordsDict 161 | endfunction 162 | 163 | function! KeywordsDicts() 164 | silent! %delete 165 | let s:fileKeywordsDict = {} 166 | for i in keys(s:multiFileStd) 167 | " 加载已经标准化的multiFileStd 168 | silent! call append('$', s:multiFileStd[i]) 169 | " 清理并保存,以便后续代码可以正常运作 170 | silent! global/^$/d 171 | silent! w! 172 | " 输出每个文件的keywordsDict 173 | let s:keywordsDict = {} 174 | silent! vimgrep /^\d\{3,}$/ % 175 | silent! cdo call KeywordsDict() 176 | " 合并为multiFile的keywordsDict 177 | let s:fileKeywordsDict[i] = s:keywordsDict 178 | silent! %delete 179 | endfor 180 | return s:fileKeywordsDict 181 | " 监测:输出变量 182 | " echomsg s:fileKeywordsDict 183 | " silent! call append('$', s:fileKeywordsDict) 184 | " silent! call append('$', s:fileKeywordsDict[0]) 185 | " for i in keys(s:fileKeywordsDict) 186 | " silent! call append('$', s:fileKeywordsDict[i]) 187 | " endfor 188 | endfunction 189 | 190 | function! CustomNav(customNavList) 191 | " 输出自定义导航条 192 | let customNav = "" 193 | for customNavKey in a:customNavList 194 | let customNavKeyword = '' 196 | \. customNavKey[0] 197 | \. '' 198 | let customNav = customNav . customNavKeyword 199 | endfor 200 | let customNav = '
' . customNav . '
' 201 | return customNav 202 | endfunction 203 | 204 | function! PagesNav(currentPage, picNamePrefix) 205 | " 根据所有页码及当前页码所在位置,输出页码导航条 206 | " 兼容性:页码可以重复、跳页、乱序 207 | 208 | " 定义关键位置和页码 209 | " 获得当前页码,去除前导符0 210 | " let currentPage = str2nr(getline('.')) 211 | let currentPage = a:currentPage 212 | 213 | let cidx = index(s:pageList, currentPage) 214 | let firstidx = 0 215 | let lastidx = len(s:pageList) - 1 216 | 217 | let firstPage = s:pageList[0] 218 | let lastPage = s:pageList[-1] 219 | let previousPage = get(s:pageList, cidx-1, 'PAGE404') 220 | let previous2Page = get(s:pageList, cidx-2, 'PAGE404') 221 | let previous3Page = get(s:pageList, cidx-3, 'PAGE404') 222 | let nextPage = get(s:pageList, cidx+1, 'PAGE404') 223 | let next2Page = get(s:pageList, cidx+2, 'PAGE404') 224 | let next3Page = get(s:pageList, cidx+3, 'PAGE404') 225 | 226 | " 定义链接内容和样式 227 | let firstPage = PageLink(firstPage, "firstPage", a:picNamePrefix) 228 | let previous3Page = PageLink(previous3Page, "previous3Page", a:picNamePrefix) 229 | let previous2Page = PageLink(previous2Page, "previous2Page", a:picNamePrefix) 230 | let previousPage = PageLink(previousPage, "previousPage", a:picNamePrefix) 231 | let currentPage = PageLink(currentPage, "currentPage", a:picNamePrefix) 232 | let nextPage = PageLink(nextPage, "nextPage", a:picNamePrefix) 233 | let next2Page = PageLink(next2Page, "next2Page", a:picNamePrefix) 234 | let next3Page = PageLink(next3Page, "next3Page", a:picNamePrefix) 235 | let lastPage = PageLink(lastPage, "lastPage", a:picNamePrefix) 236 | 237 | " 根据当前页码所在位置,输出相应的pagesNav 238 | let pagesNav = "" 239 | if cidx > firstidx 240 | let pagesNav = firstPage 241 | endif 242 | if s:pageNavWidth == 0 243 | if cidx-3 > firstidx 244 | let pagesNav = pagesNav . ' ... ' 245 | elseif cidx != firstidx 246 | let pagesNav = pagesNav . ', ' 247 | endif 248 | elseif s:pageNavWidth == 1 249 | if cidx-4 > firstidx 250 | let pagesNav = pagesNav . ' ... ' 251 | elseif cidx != firstidx 252 | let pagesNav = pagesNav . ', ' 253 | endif 254 | if cidx-3 > firstidx 255 | let pagesNav = pagesNav . previous3Page . ', ' 256 | endif 257 | endif 258 | if cidx-2 > firstidx 259 | let pagesNav = pagesNav . previous2Page . ', ' 260 | endif 261 | if cidx-1 > firstidx 262 | let pagesNav = pagesNav . previousPage . ', ' 263 | endif 264 | let pagesNav = pagesNav . currentPage 265 | if cidx+1 < lastidx 266 | let pagesNav = pagesNav . ', ' . nextPage 267 | endif 268 | if cidx+2 < lastidx 269 | let pagesNav = pagesNav . ', ' . next2Page 270 | endif 271 | if s:pageNavWidth == 0 272 | if cidx+3 < lastidx 273 | let pagesNav = pagesNav . ' ... ' 274 | elseif cidx != lastidx 275 | let pagesNav = pagesNav . ', ' 276 | endif 277 | elseif s:pageNavWidth == 1 278 | if cidx+3 < lastidx 279 | let pagesNav = pagesNav . ', ' . next3Page 280 | endif 281 | if cidx+4 < lastidx 282 | let pagesNav = pagesNav . ' ... ' 283 | elseif cidx != lastidx 284 | let pagesNav = pagesNav . ', ' 285 | endif 286 | endif 287 | if cidx < lastidx 288 | let pagesNav = pagesNav . lastPage 289 | endif 290 | let pagesNav = '
' . pagesNav . '
' 291 | return pagesNav 292 | endfunction 293 | 294 | function! PageLink(page, className, picNamePrefix) 295 | " 根据页码信息,输出页码对应的链接和样式 296 | let pageLink = '' 299 | \. a:page . '' 300 | return pageLink 301 | endfunction 302 | 303 | function! KeywordsNav(currentPage, currentWord) 304 | " 输出关键字导航 305 | let s:multiKeywordsNav = "" 306 | for file in keys(s:fileKeywordsDict) 307 | let keywordsNav = "" 308 | let keywordCount = 0 309 | let locationPercent = g:multiLevelParts[0][file][2] 310 | let nearestKeyword = g:multiLevelParts[0][file][3] 311 | for keyword in get(s:fileKeywordsDict[file], a:currentPage, []) 312 | if keyword == a:currentWord 313 | if locationPercent 314 | let keyword = '' 316 | \. keyword . " " 317 | \. printf("%.0f%%", (keywordCount + 1) * 100.0 318 | \/len(s:fileKeywordsDict[file][a:currentPage])) 319 | \. '' 320 | else 321 | let keyword = '' 323 | \. keyword 324 | \. '' 325 | endif 326 | else 327 | let keyword = '' 329 | \. keyword . '' 330 | endif 331 | if keywordCount == 0 332 | let keywordsNav = keyword 333 | else 334 | let keywordsNav = keywordsNav . ", " . keyword 335 | endif 336 | let keywordCount = keywordCount + 1 337 | endfor 338 | " //////距本页最近的前一个词条 339 | let currentPage = str2nr(a:currentPage) 340 | let cidx = index(s:pageList, currentPage) 341 | let firstPage = s:pageList[0] 342 | let nearestPrePage = get(s:pageList, cidx-1, s:pageList[-1]) 343 | if nearestPrePage >= firstPage 344 | while len(get(s:fileKeywordsDict[file], nearestPrePage, [])) == 0 345 | let nearestPreidx = index(s:pageList, nearestPrePage) 346 | " 最后一个参数,可实现循环处理 347 | let nearestPrePage = get(s:pageList, nearestPreidx-1, s:pageList[-1]) 348 | " 若穷尽页面也没有词条,则输出空 349 | if nearestPrePage == currentPage 350 | break 351 | endif 352 | endwhile 353 | if len(get(s:fileKeywordsDict[file], nearestPrePage, [])) > 0 354 | let nearestPreKeyword = s:fileKeywordsDict[file][nearestPrePage][-1] 355 | if nearestKeyword == 0 356 | let nearestPreKeyword = '' 357 | elseif nearestKeyword == 1 358 | let nearestPreKeyword = '' 360 | \. '<<<' 361 | elseif nearestKeyword == 2 362 | let nearestPreKeyword = '' 364 | \. '(' . nearestPreKeyword. ')<<<' 365 | endif 366 | else 367 | let nearestPreKeyword = '' 368 | endif 369 | else 370 | let nearestPreKeyword = '' 371 | endif 372 | " //////距本页最近的后一个词条 373 | let lastPage = s:pageList[-1] 374 | let nearestNextPage = get(s:pageList, cidx+1, s:pageList[0]) 375 | if nearestNextPage <= lastPage 376 | while len(get(s:fileKeywordsDict[file], nearestNextPage, [])) == 0 377 | let nearestNextidx = index(s:pageList, nearestNextPage) 378 | " 最后一个参数,可实现循环处理 379 | let nearestNextPage = get(s:pageList, nearestNextidx+1, s:pageList[0]) 380 | " 若穷尽页面也没有词条,则输出空 381 | if nearestNextPage == currentPage 382 | break 383 | endif 384 | endwhile 385 | if len(get(s:fileKeywordsDict[file], nearestNextPage, [])) > 0 386 | let nearestNextKeyword = s:fileKeywordsDict[file][nearestNextPage][0] 387 | if nearestKeyword == 0 388 | let nearestNextKeyword = '' 389 | elseif nearestKeyword == 1 390 | let nearestNextKeyword = '' 392 | \. '>>>' 393 | elseif nearestKeyword == 2 394 | let nearestNextKeyword = '' 396 | \. '>>>(' . nearestNextKeyword. ')' 397 | endif 398 | else 399 | let nearestNextKeyword = '' 400 | endif 401 | else 402 | let nearestNextKeyword = '' 403 | endif 404 | " //////拼接导航词条 405 | let keywordsNav = '
' 406 | \. nearestPreKeyword . keywordsNav . nearestNextKeyword 407 | \. '
' 408 | let s:multiKeywordsNav = s:multiKeywordsNav . keywordsNav 409 | endfor 410 | let s:multiKeywordsNav = '
' 411 | \. s:multiKeywordsNav 412 | \. '
' 413 | return s:multiKeywordsNav 414 | endfunction 415 | 416 | " 根据sourceStyle和NavStyle输出标准的mdx源文件格式 ---------------------------------{{{1 417 | 418 | " 是否所有层级文件的sourceStyle都在指定范围内 -----------------------------{{{2 419 | " 若所有文件的sourceStyle都在列表范围内,则为1,否则为0 420 | function! MultiSourceStyle(sourceStyleList) 421 | for multiFile in g:multiLevelParts[0] 422 | let sourceStyle = multiFile[1] 423 | if index(a:sourceStyleList, sourceStyle) >= 0 424 | " 若sourceStyle在sourceStyleList列表范围之内,则为1 425 | let multiSourceStyle = 1 426 | else 427 | " 只要有一个未在列表范围内,则为0 428 | let multiSourceStyle = 0 429 | break 430 | endif 431 | endfor 432 | return multiSourceStyle 433 | endfunction 434 | 435 | if MultiSourceStyle([0,1,2,3]) == 1 436 | " 运行初始化函数 ---------------------------------------------------{{{2 437 | " 标准化词条,并存入 s:multiFileStd 字典 438 | " 创建标准化后的文件字典 s:multiFileStd 439 | silent! call StandardizeMultiFiles() 440 | " 创建合并multiFile的PageList 441 | silent! call PageList() 442 | " 创建分层级的 s:fileKeywordsDict 443 | silent! call KeywordsDicts() 444 | " for i in keys(s:fileKeywordsDict) 445 | " silent! call append('$', s:fileKeywordsDict[i]) 446 | " endfor 447 | 448 | " 清空全文 449 | silent! %delete 450 | " 将标准化词条转为标准的mdx源文件格式 451 | if s:navStyle == 0 452 | " 自身没有pages和keywords导航,仅转LINK 453 | for currentPage in s:pageList 454 | for file in keys(s:fileKeywordsDict) 455 | for currentKeyword in get(s:fileKeywordsDict[file],currentPage,[]) 456 | silent! let s:navStyleZero = [currentKeyword 457 | \, '@@@LINK=' . s:picNamePrefix 458 | \. printf(s:pageNumDigit, currentPage) 459 | \, ''] 460 | silent! call append('$', s:navStyleZero) 461 | endfor 462 | endfor 463 | endfor 464 | elseif s:navStyle == 1 465 | " 仅有pages导航,无keywords导航,简洁 466 | for currentPage in s:pageList 467 | silent! let s:navStyleOne = [s:picNamePrefix 468 | \. printf(s:pageNumDigit, currentPage) 469 | \, '' 470 | \. '' 474 | \. '
' 477 | \. '" 480 | \, ''] 481 | silent! call append('$', s:navStyleOne) 482 | for file in keys(s:fileKeywordsDict) 483 | for currentKeyword in get(s:fileKeywordsDict[file],currentPage,[]) 484 | silent! let s:navStyleZero = [currentKeyword 485 | \, '@@@LINK=' . s:picNamePrefix 486 | \. printf(s:pageNumDigit, currentPage) 487 | \, ''] 488 | silent! call append('$', s:navStyleZero) 489 | endfor 490 | endfor 491 | endfor 492 | elseif s:navStyle == 2 493 | " 不仅有pages导航,而且有keywords导航 494 | for currentPage in s:pageList 495 | silent! let s:navStyleTwo = [s:picNamePrefix 496 | \. printf(s:pageNumDigit, currentPage) 497 | \, '' 498 | \. '' 503 | \. '
' 506 | \. '" 509 | \, ''] 510 | silent! call append('$', s:navStyleTwo) 511 | for file in keys(s:fileKeywordsDict) 512 | for currentKeyword in get(s:fileKeywordsDict[file],currentPage,[]) 513 | silent! let s:navStyleOne = [currentKeyword 514 | \, '' 515 | \. '' 520 | \. '
' 523 | \. '" 526 | \, ''] 527 | silent! call append('$', s:navStyleOne) 528 | endfor 529 | endfor 530 | endfor 531 | elseif s:navStyle == 3 532 | " 不仅有pages导航,而且有keywords导航 533 | " 但keyword其实仅简单@@@Link到相应page 534 | " 因此,keyword导航的LocationPercent等失效 535 | " 而好处是,keyword与page共用代码,简洁 536 | for currentPage in s:pageList 537 | silent! let s:navStyleTwo = [s:picNamePrefix 538 | \. printf(s:pageNumDigit, currentPage) 539 | \, '' 540 | \. '' 545 | \. '
' 548 | \. '" 551 | \, ''] 552 | silent! call append('$', s:navStyleTwo) 553 | for file in keys(s:fileKeywordsDict) 554 | for currentKeyword in get(s:fileKeywordsDict[file],currentPage,[]) 555 | silent! let s:navStyleZero = [currentKeyword 556 | \, '@@@LINK=' . s:picNamePrefix 557 | \. printf(s:pageNumDigit, currentPage) 558 | \, ''] 559 | silent! call append('$', s:navStyleZero) 560 | endfor 561 | endfor 562 | endfor 563 | else 564 | echomsg "请定义 NavStyle " . s:NavStyle . " 的处理方案" 565 | endif 566 | else 567 | echomsg "请定义 SourceStyle " . s:sourceStyle . " 的处理方案" 568 | endif 569 | 570 | " 将输出结果保存到mdxSource ----------------------------------------------{{{1 571 | silent! global/^$/d 572 | let g:mdxSource = extend(g:mdxSource, getline(1, "$")) 573 | 574 | " Reference --------------------------------------------------------------{{{1 575 | finish 576 | 577 | " 在新Tab页打开output文件 578 | silent! tabe %:r.output.%:e 579 | 580 | /* vim: set et sw=4 ts=4 sts=4 fdm=marker ff=unix ft=vim fenc=utf8 nobomb: */ 581 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # MdxSourceBuilder 2 | 3 | 一键制作图片词典:原始词条==> 标准化词条==> mdx源文件 ==> mdx词典文件 4 | 5 | 打开Vim,输入命令 `:bro so`,找到MdxSourceBuilder.vim,打开,结束。 6 | 7 | 或者使用如下自动寻址方式 `:so MdxSourceBuilder.vim` 8 | 9 | ![MdxSourceBuilder GIF Demo](https://raw.githubusercontent.com/VimWei/MdxSourceBuilder/master/MdxSourceBuilderDemo.gif) 10 | 11 | 更多视频演示: https://www.bilibili.com/video/BV1Ki4y1g74X/ 12 | 13 | ## 背景 14 | 15 | ### 需求背景 16 | 17 | 时常遇到一些好资料,怎奈只有纸质版或扫描版之类,希望将这些资料转换为可以检索的mdx词典,既方便使用,也提高利用率。 18 | 19 | 但是,常常在辛苦整理好词条(这是纯苦力活)之后,使用过往技术方案实现的成品却不够理想,不理想之处有两大方面: 20 | 21 | * 导航不理想,极大降低了用户的使用体验 22 | * 制作修订过程复杂,极大干扰了制作者的热情 23 | 24 | 这完全可以通过工具来解决。 25 | 26 | ### 程序设计背景 27 | 28 | 本来我只是提出痛点,希望有高人能出手解决,怎奈高人大都不屑于处理。 29 | 30 | 本非码农,可鉴于实在痛的厉害,只好自己用三脚猫功夫倒腾了人生第一个具有完整功能的程序。在此之前,从来没用过list、dict之类的,连这个github发布,都是现学现卖,还望高人不要耻笑,多提点才是。若有高人能够弄个更好的程序或是python版的或是GUI版的,那大家就有福了,我这纯粹抛砖引玉。 31 | 32 | 非码农的好处,或许是可以有更好的用户视角:既考虑词典终端用户的使用体验,也考虑普通的词典制作者的使用体验。虽不能解决所有问题,但至少已能解决我自己的大部分诉求,希望也能解决众多mdx词典用户的些许痛点。 33 | 34 | ## 解决方案 35 | 36 | 基本思路: 1.原始词条==> 2.标准化词条==> 3.mdx源文件 ==> 4.mdx词典文件 37 | 38 | 1. 原始词条:鉴于资料的多样性,原始词条的获取方式也是多种多样,有OCR来的,有手工输入的,也有从其他人的资料转编译来的,也有是因为制作人的喜好或用的工具不同,导致原始词条的格式完全不同。这个特点造就了解决方案必须:(1)兼容多样性,将最常见的词条样式纳入进来;(2)开放性,用户可以根据需要自定义更多个性化的原始词条样式。 39 | 40 | 目前,本程序已经实现了对三种原始词条样式的兼容,用户也可以根据需要自定义添加。 41 | 42 | 2. 标准化词条:若能将多样化的原始词条转化为标准化的词条,那么后续就可以标准化处理了。因此如何定义标准化词条就变得很重要,它是实现后续程序的基础。 43 | 44 | 目前,本程序已经提出了一个1.0版的最基本词条标准:一行页码,之后跟随多行关键词,每行一个关键词,如此往复。之所以说1.0版仅仅是最基本的标准,是因为这个标准还未能兼容如分栏、多层级词条等更复杂的情形,这些都有待后续有高人继续升级完善。 45 | 46 | 3. mdx源文件:这个txt文件与其他技术方案的最大区别是——包含了足够优良的页面导航、关键词导航以及用户自由定义的导航信息,极大提升用户对图片词典的使用体验。图片导航如何设计仁者见仁智者见智,因此,解决方案必须:(1)足够优良,不能太简陋,能用机器实现的定位,就不要浪费肉眼定位、繁琐操作定位等人类的精力;(2)兼容多样性,将最常见的导航样式纳入进来,比如封面附录等无需关键词导航、正文等需要关键词导航、拼音等则无需导航直接转链接到现有页面即可;(3)开放性,用户可以根据需要自定义CSS样式,或者添加更多个性化的导航样式。 47 | 48 | 目前,本程序已经实现了三种导航样式,满足一本常见词典的基本需求,同时本程序会输出配套的精细CSS,方便用户个性化定制,此外用户也可以自由添加、改造导航样式。 49 | 50 | 4. mdx词典文件:这个步骤是可选项,但一步到位可以极大提升用户的体验,更重要的是使用这个工具可以实现跨平台制作mdx词典了,不必局限于Windows,Linux、Mac统统不在话下。当然要说明的是,这一环节用到了另一个开源工具, https://github.com/liuyug/mdict-utils ,功劳统统属于他! 51 | 52 | ## 程序文件及安装 53 | 54 | 根本谈不上安装,因为整个程序就是3个Vim脚本文件而已,下载后,直接将这些脚本文件放在与词条文件同一个目录即可。 55 | 56 | * MdxSourceBuilder.vim 这是入口文件:上半部分是配置文件,需要用户定义词典参数;下半部分是主程序,通常无需理会 57 | * MdxSourceBuilderCore.vim 这是主程序调用的程序,仅当需要高级定制时修改,通常无需理会 58 | * MdxSourceBuilderCSS.vim 这是CSS文件,样式文件可以在这里定义,通常无需理会 59 | 60 | 其他文件,都是附带的Readme、动图演示、参考资料、案例词典之类,可以忽略。 61 | 62 | ## 体验案例“火星词典” 63 | 64 | 为展示程序的特点,特制作了“火星词典”,供观摩使用。 65 | 66 | * 案例词条文件:以"火星词典"开头的所有.txt和.html文件,其中body.part1、body.part2、Pinyin三个文件展示了不同的词条格式 67 | * 程序及词典配置文件:以"MdxSourceBuilder"开头的所有.vim文件,其中MdxSourceBuilder.vim已经包含了案例词典的配置信息 68 | 69 | 案例使用:打开Vim,输入命令 `:bro so`,找到MdxSourceBuilder.vim,打开,结束。 70 | 71 | * 你会看到,仅仅使用上述一个命令,就会输出3个成品文件:MarsDict.css,火星词典.txt,火星词典.mdx 72 | * 你若没有复现上述效果,也别着急,可能是vim、python和mdict-utils没有安装配置好,继续往下看说明文件即可解决 73 | * 之后你只要照猫画虎,即可制作自己的图片词典了 74 | 75 | ## 使用说明 76 | 77 | ### 极简使用说明 78 | 79 | 打开Vim,输入命令 `:bro so`,找到MdxSourceBuilder.vim,打开,结束。 80 | 81 | ### 概要使用说明 82 | 83 | 1. 按格式要求准备好词条文件 84 | 2. 使用任意文本编辑器配置好 MdxSourceBuilder.vim 中的词典参数 85 | 3. 打开Vim,输入命令 `:bro so`,找到MdxSourceBuilder.vim,打开,结束。 86 | 87 | ### 详细使用说明 88 | 89 | * 直接打开查阅 MdxSourceBuilder.vim,其中“使用方法”及“词典参数配置”两个部分自带详细使用说明。 90 | * 若想深度定制,把所有以"MdxSourceBuilder"开头的.vim文件看一遍就知道怎么处理了,即使不懂VimL语言,看注释也能猜个差不离。 91 | 92 | ### Tips: 使用更便捷快速的命令 93 | 94 | * 若觉得如下步骤还要寻找MdxSourceBuilder.vim,有些麻烦 95 | 96 | 打开Vim,输入命令 `:bro so`,找到MdxSourceBuilder.vim,打开,结束。 97 | 98 | * 那么建议使用如下更快的方法(自动寻址): 99 | 100 | 用 Vim 打开 MdxSourceBuilder.vim,新建文档`:new`,输入命令`:so MdxSourceBuilder.vim` 101 | 102 | 甚至输入`:so mdx` 之后,按Tab键即可自动补全命令 `:so MdxSourceBuilder.vim` 103 | 104 | 这个新方法的逻辑,其实是利用Vim首次打开一个文件时,会将该文件所在目录设置为Vim当前工作目录。 105 | 106 | 也可以使用系统命令 `:cd` 来更换Vim的工作目录,如 `:cd d:\火星词典` 107 | 108 | 若您使用附带的`_vimrc`,还可以直接使用自定义的命令 `:CD` 将Vim的工作目录切换为当前文件所在目录。 109 | 110 | ### 相关FAQ 111 | 112 | 1. 关于Vim的使用:号称编辑器之神,要想完全掌握确实有难度,但本程序要用到的Vim知识则少的可怜,不必顾虑。 113 | 114 | * Q: vim出现乱码 115 | * A: 请将`_vimrc`文件复制到`$HOME`目录下,Windows下即是`c:\Users\YourName\` 116 | 117 | 其中必备行是 set encoding=utf-8,其他可选,用于提升Vim使用体验 118 | 119 | 2. 关于mdict-utils的使用:除了打包,还有很多其他解包、读取等功能,大家可以尽情挖掘改造。 120 | 121 | ## 社区讨论与反馈 122 | 123 | * Github: https://github.com/VimWei/MdxSourceBuilder 124 | * 讨论社区1: https://forum.freemdict.com/t/topic/2882 125 | * 讨论社区2: https://www.pdawiki.com/forum/thread-41287-1-1.html 126 | 127 | ## LICENSE 128 | 129 | [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html) 130 | -------------------------------------------------------------------------------- /_vimrc: -------------------------------------------------------------------------------- 1 | "=================================================== 2 | " Essential settings by VimWei 3 | "=================================================== 4 | 5 | " Basic Setting -----------------------------------------------------------{{{1 6 | set nocompatible "启用不兼容Vi模式 7 | syntax on 8 | filetype plugin indent on "文件类型自动识别,并使用相关插件和自动缩进 9 | 10 | " Encoding related --------------------------------------------------------{{{1 11 | set encoding=utf-8 "Vim 内部工作编码 12 | set fileencoding=utf-8 "设置此缓冲区所在文件的字符编码;新文件默认编码 13 | " 打开文件时自动尝试下面顺序的编码 14 | set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 15 | source $VIMRUNTIME/delmenu.vim 16 | set langmenu=zh_CN.UTF-8 "指定菜单语言,若需要英文则none 17 | source $VIMRUNTIME/menu.vim 18 | language message zh_CN.UTF-8 "指定提示信息语言,英语为 en_US.ISO_8859-1 19 | set ambiwidth=double "使用US-ASCII字符两倍的宽度显示宽度不明的字符 20 | set nobomb "取消UTF的BOMB文件头 21 | set ffs=unix,dos,mac " 文件换行符,默认使用 unix 换行符 22 | set cm=blowfish2 "设置新的加密算法 23 | 24 | " CD ----------------------------------------------------------------------{{{1 25 | " 命令行中将 %% 展开为活动缓冲区所在目录的路径,相当于 %:h 26 | cnoremap %% getcmdtype( ) == ':' ? expand('%:p:h').'/' : '%%' 27 | 28 | " 改变当前工作目录为当前缓冲区所在的目录 29 | command! CD cd %:p:h 30 | 31 | " 快速进入当前缓冲区所在目录 32 | map ew :e %% 33 | map es :sp %% 34 | map ev :vsp %% 35 | map et :tabe %% 36 | 37 | " Display related ---------------------------------------------------------{{{1 38 | set helplang=cn "帮助语言首选中文版,可通过@en切换为英文 39 | set scrolloff=0 "光标移动到buffer的顶部和底部时保持u行距离 40 | set number "在每行前面显示行号 41 | set relativenumber "显示相对于光标所在的行的行号 42 | set ruler "总在Vim窗口的右下角显示当前光标位置 43 | set cursorline "高亮光标所在的屏幕行 44 | set showcmd "在Vim窗口右下角,标尺的右边显示未完成的命令 45 | set display=lastline "窗口末行内容较多时,尽量显示内容而非@@@ 46 | 47 | " statusline --------------------------------------------------------------{{{1 48 | set laststatus=2 " 总是显示状态栏 49 | set statusline= " 清空状态 50 | set statusline+=\[B%n] " buffer编号 51 | set statusline+=\ %f " 文件名 52 | set statusline+=\ %m " 编辑状态 53 | set statusline+=%= " 向右对齐 54 | set statusline+=\ %y " 文件类型 55 | " 最右边显示文件编码和行号等信息,并且固定在一个 group 中,优先占位 56 | set statusline+=\ %0(%{&fileformat}\ [%{(&fenc==\"\"?&enc:&fenc).(&bomb?\",BOM\":\"\")}]\ %v:%l/%L=%p%%%) 57 | 58 | " Format related ----------------------------------------------------------{{{1 59 | set textwidth=0 "光标超过指定列的时候折行 60 | set wrap "自动折行,超过窗口宽度的行会回绕,并在下一行继续显示 61 | set linebreak "不在单词中间断行 62 | set formatoptions+=m " 如遇Unicode值大于255的文本,不必等到空格再折行 63 | set formatoptions+=B " 合并两行中文时,不在中间加空格 64 | 65 | " Tab related -------------------------------------------------------------{{{1 66 | set tabstop=4 "Tab所占用的空格数量 67 | set shiftwidth=4 "自动缩进所占用的空格数量 68 | set shiftround "缩进取整到'shiftwidth'的倍数 69 | set expandtab "编辑时将所有Tab替换为空格 70 | set smarttab "行首Tab插入shiftwidth空格,按一次Backspace删除所有空格 71 | set autoindent "普通文件类型的自动缩进,开启新行时,从当前行复制缩进 72 | 73 | " Editing related ---------------------------------------------------------{{{1 74 | set history=1000 "命令历史的保存数量 75 | set clipboard=unnamed "与系统共享剪贴板 76 | " 允许在自动缩进、换行符、插入开始的位置上退格 77 | set backspace=indent,eol,start 78 | " 对某一个或几个按键开启到头后自动折向下一行的功能 79 | set whichwrap=b,s,<,>,[,] 80 | set wildmenu "命令行补全时,使用增强的单行菜单形式显示补全内容 81 | set browsedir=buffer "浏览启动目录使用当前缓冲区所在目录 82 | set autoread "自动重新读入被修改的文件 83 | set mouse=a "在所有模式下允许使用鼠标 84 | set mousemodel=popup 85 | set selectmode= "不使用选择模式 86 | set keymodel= "不使用“Shift + 方向键”选择文本 87 | set selection=inclusive "指定在选择文本时,光标所在位置也属于被选中的范围 88 | 89 | " Search related ----------------------------------------------------------{{{1 90 | set path+=** "Search down into subfolders, :find and etc. 91 | set ignorecase "忽略大小写敏感 92 | set smartcase "智能大小写:以小写开头则不敏感,以大写开头则敏感 93 | set showmatch "高亮显示匹配的括号 94 | set matchtime=2 "显示配对括号的十分之一秒数 95 | set incsearch "在未完全输入完毕要搜索的文本时就显示相应的匹配点 96 | set hlsearch "高亮显示所有匹配的搜索结果 97 | -------------------------------------------------------------------------------- /火星词典.Appendix.txt: -------------------------------------------------------------------------------- 1 | 0001 2 | 附录_不规则动词表 3 | 0002 4 | 0003 5 | 0004 6 | 附录_度量衡换算表 7 | 0005 8 | 0006 9 | 0007 10 | 附录_火星数字 11 | 0008 12 | 附录_火星族朝代表 13 | 0009 14 | 0010 15 | 0011 16 | 0012 17 | 0013 18 | 0014 19 | 0015 20 | 0016 21 | 0017 22 | 附录_二十四节气 23 | 附录_火星月份名 24 | 0018 25 | 附录_天干名 26 | 附录_地支名 27 | 附录_天干地支纪年 28 | 0019 29 | 附录_二十八宿 30 | 0020 31 | 0021 32 | 封底 33 | -------------------------------------------------------------------------------- /火星词典.Body.Part2.txt: -------------------------------------------------------------------------------- 1 | 0100氽撺镩蹿攒窜篡爨衰崔催缞 2 | 0101摧榱漼璀脆萃啐淬悴毳瘁粹翠 3 | 0102邨村皴存忖寸搓 4 | 0103瑳磋撮蹉嵯矬痤瘥鹾酂脞挫 5 | 0104莝厝措棤锉错 6 | 0105耷哒搭嗒答铬褡打达沓 7 | 0106怛姐荙炟鿎𫟼笪答溚靼瘩鞑打 8 | 0107大垯𫄤疸跶瘩呆呔待歹 9 | 0108逮傣大代轪诒甙垈岱迨骀绐玳带 10 | 0109殆贷待怠埭袋逮叇䗖戴 11 | 0110黛丹担单眈耽 12 | 0111郸聃殚瘅箪儋𬘘胆疸掸赕亶石旦 13 | 0112但担诞𫢸胥萏啖淡惮弹 14 | 0113蛋氮瘅澹愴当 15 | 0114珰铛裆筜挡党嵅谠𣗋当凼砀 16 | 0115宕垱荡档菪𬍡刀叨忉氘舠鱽 17 | 0116捯导岛捣倒祷蹈 18 | 0117到帱倒焘盗悼道稻纛 19 | 0118嘚得锝德地的得脦得扽灯 20 | 0119登噔璒簦蹬等戥邓凳 21 | 0120嶝澄磴瞪镫蹬氐低羝堤提䃅嘀滴 22 | 0121镝鞮狄迪的籴荻敌涤𬱖笛觌髢嘀嫡 23 | 0122翟镝蹢氐邸诋坻抵芪底柢 24 | 0123砥骶地玓杕弟的 25 | 0124帝递娣菂第谛蒂棣睇 26 | 0125媂缔𤧛褅碲䗖踶嗲掂滇颠巅癫典 27 | 0126点碘踮 28 | 0127电佃甸阽坫店玷垫扂钿 29 | 0128淀惦琔奠殿靛磹簟癜刁 30 | 0129叼汈凋貂碉雕鲷吊钓 31 | 0130窎调掉铞铫爹跌迭垤昳咥绖 32 | 0131瓞谍堞耋喋𫶇楪牒叠碟蝶 33 | 0132蹀鲽丁仃叮玎盯町钉疔耵酊顶 34 | 0133酊鼎订钉定 35 | 0134萣啶铤腚碇锭丟铥东冬咚 36 | 0135岽氡鸫𬟽董懂动冻侗垌栋峒 37 | 0136胨洞恫胴硐都兜蔸篼斗 38 | 0137抖陡蚪斗豆逗读痘窦厾都 39 | 0138阇督嘟毒独读渎 40 | 0139椟犊牍黩髑肚笃堵赌睹芏杜 41 | 0140肚妒度𬭊渡镀蠹 42 | 0141耑端短段断塅缎 43 | 0142瑕椴煅锻簖堆队对 44 | 0143兑祋怼敦碓𬭚憝镦吨惇敦墩礅镦 45 | 0144蹾蹲盹趸囤沌炖砘钝盾顿 46 | 0145遁楯多咄哆剟掇㙍裰夺 47 | 0146度铎踱朵垛哚埵躲亸驮杖剁饳 48 | 0147垛舵堕惰跺 49 | 0148阿屙婀讹俄莪哦峨 50 | 0149涐娥锇鹅峨额恶厄扼苊 51 | 0150呃轭垩姶恶饿鄂谔堨萼遏崿 52 | 0151愕𫫇腭𥔲鹗锷颚噩鳄呃恩蒽摁儿 53 | 0152而陑耏鸸鲕尔耳迩 54 | 0153饵洱珥铒二佴贰咡 55 | 0154发酦乏伐罚垡 56 | 0155阀筏法砝发珐帆番幡 57 | 0156藩翻凡汜矾钒烦墦蕃 58 | 0157樊璠燔𫔍繁𬸪蹯蘩反返犯 59 | 0158饭泛范贩畈梵方 60 | 0159邡坊芳枋牥钫蚄防坊妨肪房 61 | 0160鲂仿访彷纺昉舫放飞 62 | 0161妃非菲啡𬴂绯扉蜚霏鲱肥 63 | 0162淝腓朏匪诽菲悱棐斐榧 64 | 0163蜚翡篚芾吠肺狒废沸费剕痱 65 | 0164镄分芬吩纷玢氛翂棻酚坟 66 | 0165汾棼焚𣸣豮鼢粉分份坋 67 | 0166奋忿偾粪𣸣愤鲼瀵丰风 68 | 0167沣沨枫封砜疯峰烽葑崶锋 69 | 0168蜂酆冯逢浲缝讽唪凤奉 70 | 0169俸葑赗缝佛缶否夫 71 | 0170呋玞肤砆𫓧埒麸趺跗稃鄜孵敷夫弗 72 | 0171伏凫扶芙芾苤佛孚拂 73 | 0172苻茀佛服怫绂绋韨茯袍罘氟 74 | 0173俘郛洑祓垺莩蚨浮琈菔桴符匐 75 | 0174涪袱幅辐蜉福榑蝠幞黻抚 76 | 0175甫呒㕮拊斧府𫓧俯釜辅脯 77 | 0176𫖯腑滏腐簠黼父讣付负妇 78 | 0177洨附咐阜服驸赴复洑副赋 79 | 0178傅富腹鲋缚赙蝮鳆覆馥 80 | 0179夹旮伽咖嘎轧钆尜噶尕嘎尬该 81 | 0180陔垓荄晐赅改胲丐 82 | 0181芥𬮿钙盖溉概戤干 83 | 0182甘玎杆肝坩苷矸 84 | 0183泔柑虷竿酐疳尴杆秆赶 85 | 0184敢感𬕂澉橄擀鳡干旰 86 | 0185绀淦㽏赣冈江扛刚岗肛纲㭎矼钢 87 | 0186缸罡堽岗港杠鿍钢筻戆皋高 88 | 0187羔槔睾膏篙糕杲搞 89 | 0188缟槁镐稿藁告郜诰锆 90 | 0189筶膏戈仡圪纥疙咯哥胳 91 | 0190鸽袼搁割歌革阁 92 | 0191格鬲胳搁葛蛤隔塥嗝 93 | 0192滆膈骼镉合哿舸盖葛个各 94 | 0193虼硌铬给根跟哏 95 | 0194艮亘艮茛更庚耕浭赓 96 | 0195鹒羹埂耿哽绠梗颈𬒔鲠更 97 | 0196暅工弓公功红攻䢼 98 | 0197供肱宫恭蚣躬 99 | 0198龚𬕂觥巩汞拱珙硔共 100 | 0199贡供唝勾句佝沟 101 | -------------------------------------------------------------------------------- /火星词典.Body.Part3.txt: -------------------------------------------------------------------------------- 1 | 这是keyword 0301 2 | key word 可以有空格 0302 3 | 分隔符最好用4位及以上的空格 0303 4 | 虽可以使用tab但与vim配置有关 0303 5 | 尽量不用tab 避免兼容性 0399 6 | 0399 7 | 0399 8 | 同一页码可以出现多次 0399 9 | 0304 10 | 0305 11 | 可以只有页码 0306 12 | 0311 13 | 0312 14 | 也可以跳页码 0318 15 | 跳过页码的将不会出现在导航条上 0330 16 | 可以用于跳过不想要的页面 0330 17 | 页码可以乱序 0302 18 | 但你很难找出哪些页面遗漏了 0355 19 | 相比之下不如SourceStyle2 0323 20 | 排列整齐 0358 21 | 排查容易 0365 22 | 但Style3肯定是支持的 0358 23 | 请放心使用 0366 24 | -------------------------------------------------------------------------------- /火星词典.Cover.txt: -------------------------------------------------------------------------------- 1 | 0001 2 | 封面 3 | 0002 4 | 扉页 5 | 0003 6 | 版权 7 | 0004 8 | 审订委员会 9 | 0005 10 | 0006 11 | 获奖 12 | -------------------------------------------------------------------------------- /火星词典.Link1.txt: -------------------------------------------------------------------------------- 1 | 1 abbreviated styles 2 | 2 abbreviations and acronyms 3 | 3 [be] able 4 | 4 about and on 5 | 5 about to 6 | 6 above and over 7 | 7 accept and agree 8 | 8 according to 9 | 9 across, over and through 10 | 10 active verb forms 11 | 11 actual(ly) 12 | 12 adjectives (1): normal position 13 | 13 adjectives (2): after nouns and pronouns 14 | 14 adjectives (3): position after as, how, so, too 15 | 15 adjectives (4): order before nouns 16 | 16 adjectives (5): with and 17 | 17 adjectives (6): without nouns 18 | 18 adjectives (7): pronunciation of aged, naked etc 19 | 19 adjectives (8): what can follow an adjective? 20 | 20 adverb particles 21 | 21 adverb position (1): introduction 22 | 22 adverb position (2): front position 23 | 23 adverb position (3): end position 24 | 24 adverb position (4): mid-position 25 | 25 adverb position (5): emphasising adverbs 26 | 26 adverbs of manner and adjectives 27 | 27 adverbs or adjectives? confusing cases 28 | 28 afraid 29 | 29 after: adverb 30 | 30 after: conjunction 31 | 31 after all 32 | 32 age 33 | 33 ago 34 | 34 alike 35 | 35 all (1): introduction 36 | 36 all (2): all (of) with nouns and pronouns 37 | 37 all (3): with the verb 38 | 38 all (4): all, everybody/everyone and everything 39 | 39 all and every 40 | 40 all and whole 41 | 41 all right and alright 42 | 42 allow, permit and let 43 | 43 almost and nearly; practically 44 | 44 alone, lonely, lonesome and lone 45 | 45 along 46 | 46 also, as well and too 47 | 47 also, as well, too and either in negative clauses 48 | 48 alternate(ly) and alternative(ly) 49 | 49 although, though, but and however: contrast 50 | 50 altogether and all together 51 | 51 American and British English 52 | 52 and 53 | 53 and after try, wait, go etc 54 | 54 another and other(s) 55 | 55 any 56 | 56 any and every 57 | 57 any and no: adverbs 58 | 58 appear 59 | 59 arise and rise 60 | 60 (a)round and about 61 | 61 articles (1): introduction 62 | 62 articles (2): basic information (A) 63 | 63 articles (3): basic information (B) 64 | 64 articles (4): more about the 65 | 65 articles (5): more about a/an 66 | 66 articles (6): no article with plural and uncountable nouns 67 | 67 articles (7): the difference between some/any and no article 68 | 68 articles (8): talking in general 69 | 69 articles (9): the (difficult cases) 70 | 70 articles (10): special rules and exceptions 71 | 71 as and though: special word order 72 | 72 as, because, since and for 73 | 73 as, when and while: simultaneous events 74 | 74 as if and as though; like 75 | 75 as long as 76 | 76 as such 77 | 77 as usual 78 | 78 as well as 79 | 79 ask 80 | 80 at/in and to 81 | 81 at, on and in: place 82 | 82 at, on and in: time 83 | 83 at all 84 | 84 at first and first 85 | 85 auxiliary verbs 86 | 86 (a)wake and (a)waken 87 | 87 back and again 88 | 88 bath and bathe 89 | 89 be: progressive forms 90 | 90 be with auxiliary do 91 | 91 be + infinitive: I am to ..., you are to... etc 92 | 92 be and have 93 | 93 beat and win 94 | 94 because 95 | 95 been meaning 'come' or 'gone' 96 | 96 before: adverb 97 | 97 before: conjunction 98 | 98 before (preposition) and in front of 99 | 99 begin and start 100 | 100 below, under, underneath, beneath 101 | 101 beside and besides 102 | 102 besides, except and apart from 103 | 103 bet 104 | 104 better 105 | 105 between and among 106 | 106 big, large and great 107 | 107 [a] bit 108 | 108 born and borne 109 | 109 borrow and lend 110 | 110 both 111 | 111 both ... and 112 | 112 bring and take 113 | 113 bring up and educate 114 | 114 Britain, the United Kingdom, the British Isles and England 115 | 115 broad and wide 116 | 116 but meaning 'except' 117 | 117 by: time 118 | 118 by and near 119 | 119 by (method, agent) and with (tools etc) 120 | 120 call 121 | 121 can and could (1): introduction 122 | 122 can and could (2): ability 123 | 123 can and could (3): ability (advanced points) 124 | 124 can and could (4): interpersonal uses (permission, requests etc) 125 | 125 can and could (5): with see, hear, etc 126 | 126 can't help 127 | 127 care: take care (of), care (about) and care for 128 | 128 changes: become, get, go, grow, etc 129 | 129 city and town 130 | 130 cleft sentences (1): What I need is a holiday 131 | 131 cleft sentences (2): it was my secretary who 132 | 132 close and shut 133 | 133 cloth and clothes 134 | 134 come and go 135 | 135 comparison (1): structures 136 | 136 comparison (2): as ... as; as much/many as 137 | 137 comparison (3): comparative and superlative adjectives 138 | 138 comparison (4): comparative and superlative adverbs 139 | 139 comparison (5): using comparatives and superlatives 140 | 140 comparison (6): much, far etc with comparatives and superlatives 141 | 141 comparison (7): advanced points 142 | 142 continual(ly) and continuous(ly) 143 | 143 contractions 144 | 144 contrary 145 | 145 control 146 | 146 correspondence (1): letters 147 | 147 correspondence (2): emails and text messages 148 | 148 countable and uncountable nouns (1): basic information 149 | 149 countable and uncountable nouns (2): advanced points 150 | 150 country 151 | 151 dare 152 | 152 dates 153 | 153 dead, died and death 154 | 154 determiners: the, my, some, several etc 155 | 155 different 156 | 156 direct speech: reporting verbs and word order 157 | 157 discourse markers 158 | 158 do (1): introduction 159 | 159 do (2): auxiliary verb 160 | 160 do (3): general-purpose verb; do and make 161 | 161 do (4): substitute verb 162 | 162 do so/it/that 163 | 163 doubt 164 | 164 dress 165 | 165 drown 166 | 166 due to and owing to 167 | 167 during and for 168 | 168 during and in 169 | 169 each 170 | 170 each and every: the difference 171 | 171 each other and one another 172 | 172 east and eastern, north and northern etc 173 | 173 efficient and effective 174 | 174 either: determiner 175 | 175 either ... or 176 | 176 elder and eldest 177 | 177 ellipsis (1): introduction 178 | 178 ellipsis (2): with and, but and or 179 | 179 ellipsis (3): at the beginning of a sentence 180 | 180 ellipsis (4): in noun phrases 181 | 181 ellipsis (5): after auxiliary verbs 182 | 182 ellipsis (6): infinitives 183 | 183 else 184 | 184 emphasis 185 | 185 end and finish: verbs 186 | 186 enjoy 187 | 187 enough 188 | 188 especial(ly) and special(ly) 189 | 189 even 190 | 190 eventual(ly) 191 | 191 ever 192 | 192 ever so, ever such 193 | 193 every (one) 194 | 194 except and except for 195 | 195 exclamations: structures 196 | 196 expect, hope, wait and look forward 197 | 197 experiment and experience 198 | 198 explain 199 | 199 fairly, quite, rather and pretty: adverbs of degree 200 | 200 far and a long way 201 | 201 farther and further 202 | 202 feel 203 | 203 female and feminine; male and masculine 204 | 204 finally, at last, in the end and at the end 205 | 205 finished 206 | 206 fit and suit 207 | 207 for: purpose and cause 208 | 208 for, since, in and from: time 209 | 209 forget and leave 210 | 210 fun and funny 211 | 211 future (1): introduction 212 | 212 future (2): will/shall (information and prediction) 213 | 213 future (3): going to ... 214 | 214 future (4): present progressive 215 | 215 future (5): simple present 216 | 216 future (6): present forms or will? 217 | 217 future (7): will and shall (interpersonal uses) 218 | 218 future (8): will/shall, going to and present progressive (advanced points) 219 | 219 future (9): future perfect (they will have finished) 220 | 220 future (10): future progressive 221 | 221 future (11): future in the past 222 | 222 gender (references to males and females) 223 | 223 get (1): basic structures 224 | 224 get (2): + object + verb form 225 | 225 get and go: movement 226 | 226 give with action-nouns 227 | 227 go/come for a ... 228 | 228 go/come ... ing 229 | 229 gone with be 230 | 230 had better 231 | 231 half 232 | 232 happen to ... 233 | 233 hardly, scarcely and no sooner 234 | 234 have (1): introduction 235 | 235 have (2): auxiliary verb 236 | 236 have (3): actions 237 | 237 have (4): have (got) - possession, relationships and other states 238 | 238 have (5): + object + verb form 239 | 239 have (6): have (got) to 240 | 240 headlines 241 | 241 hear and listen (to) 242 | 242 hear, see etc + object + verb form 243 | 243 hear, see etc with that-clause 244 | 244 help 245 | 245 here and there 246 | 246 high and tall 247 | 247 hire, rent and let 248 | 248 holiday and holidays 249 | 249 home 250 | 250 hope 251 | 251 hopefully 252 | 252 how 253 | 253 how and what ... like? 254 | 254 -ic and -ical 255 | 255 idioms, collocations and fixed expressions 256 | 256 if (1): introduction 257 | 257 if (2): ordinary structures 258 | 258 if (3): special structures with past tenses and would 259 | 259 if (4): unreal past situations 260 | 260 if (5): if ... will 261 | 261 if (6): other points 262 | 262 if (7): other structures found in spoken English 263 | 263 if (8): other words with the same meaning 264 | 264 if I were you 265 | 265 if only 266 | 266 ill and sick 267 | 267 immediately, the moment etc: conjunctions 268 | 268 imperatives 269 | 269 in and into, on and onto: prepositions 270 | 270 in and to 271 | 271 in case and if 272 | 272 in spite of 273 | 273 indeed 274 | 274 indirect speech (1): introduction 275 | 275 indirect speech (2): tenses 276 | 276 indirect speech (3): questions and answers 277 | 277 indirect speech (4): infinitives 278 | 278 indirect speech (5): advanced points 279 | 279 infinitives (1): introduction 280 | 280 infinitives (2): forms 281 | 281 infinitives (3): without to 282 | 282 infinitives (4): after verbs 283 | 283 infinitives (5): I want you to listen 284 | 284 infinitives (6): after adjectives 285 | 285 infinitives (7): after nouns and pronouns 286 | 286 infinitives (8): who to ... , what to ... etc 287 | 287 infinitives (9): active and passive infinitive with similar meaning 288 | 288 infinitives (10): I'm glad to have left 289 | 289 infinitives (11): purpose 290 | 290 infinitives (12): subject, complement or object 291 | 291 infinitives (13): for ... to 292 | 292 infinitives (14): other uses 293 | 293 -ing forms (1): introduction 294 | 294 -ing forms (2): a waiting room; a waiting train 295 | 295 -ing forms (3): subject, complement or object 296 | 296 -ing forms (4): after verbs 297 | 297 -ing forms (5): after nouns and adjectives 298 | 298 -ing forms (6): without breaking; before starting 299 | 299 -ing forms (7): remember, go on etc + -ing or infinitive 300 | 300 -ing forms (8): participles; progressive verbs 301 | 301 instead of 302 | 302 inversion (1): auxiliary verb before subject 303 | 303 inversion (2): whole verb before subject 304 | 304 irregular verbs 305 | 305 its and it's 306 | 306 it's time 307 | 307 just 308 | 308 kinds of English (1): standard English and dialects 309 | 309 kinds of English (2): correctness 310 | 310 kinds of English (3): spoken and written English 311 | 311 kinds of English (4): formality 312 | 312 kinds of English (5): variation and change 313 | 313 know 314 | 314 last, the last, the latest 315 | 315 later and in 316 | 316 lay and lie 317 | 317 learn 318 | 318 least and fewest 319 | 319 left 320 | 320 less and fewer 321 | 321 lest 322 | 322 let (1): structures 323 | 323 let (2): introducing imperatives 324 | 324 life: countable or uncountable noun 325 | 325 like: verb 326 | 326 like and as: similarity, function 327 | 327 likely 328 | 328 link verbs: be, seem, look etc 329 | 329 (a) little and (a) few 330 | 330 long and (for) a long time 331 | 331 look 332 | 332 lose and loose 333 | 333 [a] lot, lots, plenty, a great deal, a large amount, a large number, the majority 334 | 334 loudly and aloud 335 | 335 make: causative structures 336 | 336 make: prepositions 337 | 337 marry and divorce 338 | 338 may and might (1): introduction 339 | 339 may and might (2): chances etc 340 | 340 may and might (3): permission 341 | 341 may and might (4): may in wishes and hopes 342 | 342 may and might (5): may/might ... but 343 | 343 may and might (6): may/might as well 344 | 344 may and might (7): requests, suggestions and criticisms 345 | 345 may and might (8): may/might and can/could 346 | 346 maybe and perhaps 347 | 347 meals 348 | 348 mean 349 | 349 means 350 | 350 measurements: 'marked' and 'unmarked' forms 351 | 351 mind: do you mind etc 352 | 352 miss 353 | 353 modal auxiliary verbs: introduction 354 | 354 modal auxiliary verbs: meanings 355 | 355 more 356 | 356 most 357 | 357 much and many 358 | 358 must (1): introduction 359 | 359 must (2): deduction (concluding that something is certain) 360 | 360 must (3): necessity and obligation 361 | 361 must (4): advanced points 362 | 362 names: Florence, Homer etc 363 | 363 names and titles: Peter; Mr Lewis 364 | 364 nationalities, countries and regions 365 | 365 near (to) 366 | 366 need 367 | 367 negative structures (1): basic rules 368 | 368 negative structures (2): negative questions 369 | 369 negative structures (3): think, hope, seem etc 370 | 370 negative structures (4): double negatives 371 | 371 negative structures (5): ambiguous sentences 372 | 372 neither (of): determiner 373 | 373 neither ... nor 374 | 374 neither, nor and not ... either 375 | 375 next and the next; nearest 376 | 376 no, none and not a/any 377 | 377 no doubt 378 | 378 no matter 379 | 379 no more, not any more, no longer, not any longer 380 | 380 no one and none 381 | 381 non-affirmative (or 'non-assertive') words 382 | 382 not and no 383 | 383 not only 384 | 384 noun + complement: what can follow a noun? 385 | 385 noun + noun (1): basic information 386 | 386 noun + noun (2): advanced points 387 | 387 now (that) 388 | 388 nowadays 389 | 389 numbers 390 | 390 of course 391 | 391 often 392 | 392 older English verb forms 393 | 393 once: adverb 394 | 394 once: conjunction 395 | 395 one: substitute word 396 | 396 one, you and they: indefinite personal pronouns 397 | 397 one of ... 398 | 398 only: focusing adverb 399 | 399 open 400 | 400 opportunity and possibility 401 | 401 opposite (adjective): position 402 | 402 opposite, facing and in front of 403 | 403 ought 404 | 404 out of 405 | 405 own 406 | 406 paragraphs 407 | 407 part 408 | 408 participles (-ing and -ed forms) (1): introduction 409 | 409 participles (2): active and passive 410 | 410 participles (3): details 411 | 411 participles (4): clauses 412 | 412 passives (1): passive structures and verb forms 413 | 413 passives (2): agent 414 | 414 passives (3): When do we use passive structures? 415 | 415 passives (4): verbs with two objects 416 | 416 passives (5): verbs with prepositions 417 | 417 passives (6): it was thought that ... 418 | 418 passives (7): He is believed to be 419 | 419 passives (8): he was considered a genius 420 | 420 passives (9): My suitcase is packed 421 | 421 past (1): simple past (I worked etc) 422 | 422 past (2): past progressive (I was working etc) 423 | 423 past perfect (1): basic information 424 | 424 past perfect (2): advanced points 425 | 425 past perfect (3): progressive 426 | 426 past verb form with present or future meaning 427 | 427 perfect verb forms 428 | 428 personal pronouns (1): basic information 429 | 429 personal pronouns (2): advanced points 430 | 430 piece- and group-words 431 | 431 place: a place to live, etc 432 | 432 play and game 433 | 433 please and thank you 434 | 434 point of view 435 | 435 politeness (1): using questions 436 | 436 politeness (2): distancing verb forms 437 | 437 politeness (3): softening expressions 438 | 438 politics and policy 439 | 439 possessives (1): noun + 's (forms) 440 | 440 possessives (2): noun + 's (use) 441 | 441 possessives (3): my, your etc 442 | 442 possessives (4): mine, yours etc 443 | 443 possessives (5): a friend of mine etc 444 | 444 prefer 445 | 445 prefixes and suffixes 446 | 446 preparatory it (1): subject 447 | 447 preparatory it (2): object 448 | 448 prepositions (1): introduction 449 | 449 prepositions (2): after particular words and expressions 450 | 450 prepositions (3): before particular words and expressions 451 | 451 prepositions (4): expressions without prepositions 452 | 452 prepositions (5): at the ends of clauses 453 | 453 prepositions (6): before conjunctions 454 | 454 prepositions (7): -ing forms and infinitives 455 | 455 present perfect (1): basic information 456 | 456 present perfect (2): perfect or past? 457 | 457 present perfect (3): perfect or past (advanced points) 458 | 458 present perfect (4): progressive (or 'continuous') 459 | 459 present perfect (5): simple or progressive? 460 | 460 present perfect (6): present perfect or present? 461 | 461 present tenses (1): introduction 462 | 462 present tenses (2): simple present (forms) 463 | 463 present tenses (3): simple present (use) 464 | 464 present tenses (4): progressive (or 'continuous') 465 | 465 present tenses (5): stories, commentaries and instructions 466 | 466 present tenses (6): advanced points 467 | 467 presently 468 | 468 price and prize 469 | 469 principal and principle 470 | 470 progressive (1): general 471 | 471 progressive (2): non-progressive verbs 472 | 472 progressive (3): with always etc 473 | 473 punctuation (1): full stop, question mark and exclamation mark 474 | 474 punctuation (2): colon 475 | 475 punctuation (3): semi-colon 476 | 476 punctuation (4): comma 477 | 477 punctuation (5): dash 478 | 478 punctuation (6): quotation marks 479 | 479 punctuation (7): apostrophe 480 | 480 questions (1): basic rules 481 | 481 questions (2): declarative questions 482 | 482 questions (3): rhetorical questions 483 | 483 questions (4): echo questions 484 | 484 questions (5): reply questions (Was it? Did you?) 485 | 485 questions (6): question-word clauses 486 | 486 questions (7): that-clauses 487 | 487 question tags (1): basic information 488 | 488 question tags (2): advanced points 489 | 489 quite 490 | 490 rather: adverb of degree (rather good, etc) 491 | 491 rather: preference 492 | 492 reason 493 | 493 reflexive pronouns 494 | 494 relatives (1): basic information 495 | 495 relatives (2): identifying and non-identifying clauses 496 | 496 relatives (3): whose 497 | 497 relatives (4): what 498 | 498 relatives (5): advanced points 499 | 499 remind 500 | 500 repetition 501 | 501 [the] rest 502 | 502 road and street 503 | 503 the same 504 | 504 say and tell 505 | 505 see 506 | 506 see, look (at) and watch 507 | 507 seem 508 | 508 sensible and sensitive 509 | 509 sentence structure (1): basic word order 510 | 510 sentence structure (2): conjunctions 511 | 511 sentence structure (3): problems with conjunctions 512 | 512 sentence structure (4): information structure 513 | 513 sentence structure (5): fronting 514 | 514 sentence structure (6): spoken structures and tags 515 | 515 sentence structure (7): understanding complicated structures 516 | 516 shade and shadow 517 | 517 short answers: Yes, he can etc 518 | 518 should (1): introduction 519 | 519 should (2): obligation, deduction etc 520 | 520 should (3): should, ought and must 521 | 521 should (4): in subordinate clauses 522 | 522 since: tenses 523 | 523 singular and plural (1): regular plurals 524 | 524 singular and plural (2): irregular and special plurals 525 | 525 singular and plural (3): pronunciation of plurals 526 | 526 singular and plural (4): singular nouns with plural verbs 527 | 527 singular and plural (5): plural expressions with singular verbs 528 | 528 singular and plural (6): singular they 529 | 529 singular and plural (7): mixed structures 530 | 530 singular and plural (8): distributive plural 531 | 531 singular and plural (9): noun + noun 532 | 532 singular and plural (10): other points 533 | 533 slang 534 | 534 small and little 535 | 535 smell 536 | 536 so: adverb meaning 'like this/that' 537 | 537 so (conjunction) and then 538 | 538 so (degree adverb): so tired, so fast 539 | 539 so and not with hope, believe etc 540 | 540 so with say and tell 541 | 541 so have I, so am I etc 542 | 542 so much and so many 543 | 543 so that and in order that 544 | 544 so-and-so; so-so 545 | 545 'social' language 546 | 546 some 547 | 547 some and any 548 | 548 somebody, someone, anybody, anyone etc 549 | 549 some time, sometime and sometimes 550 | 550 soon, early and quickly 551 | 551 sort of, kind of and type of 552 | 552 sound 553 | 553 speak and talk 554 | 554 speech (1): stress and rhythm 555 | 555 speech (2): intonation 556 | 556 spelling (1): capital letters 557 | 557 spelling (2): -ly 558 | 558 spelling (3): -ise and -ize 559 | 559 spelling (4): hyphens 560 | 560 spelling (5): final e 561 | 561 spelling (6): y and i 562 | 562 spelling (7): doubling final consonants 563 | 563 spelling (8): ch and tch, k and ck 564 | 564 spelling (9): ie and ei 565 | 565 spelling (10): spelling and pronunciation 566 | 566 still, yet and already: time 567 | 567 subjunctive 568 | 568 such 569 | 569 such and so 570 | 570 suggest 571 | 571 suppose, supposing and what if 572 | 572 supposed to 573 | 573 surely 574 | 574 sympathetic 575 | 575 taboo words and swearwords 576 | 576 take: time 577 | 577 taste 578 | 578 telephoning 579 | 579 telling the time 580 | 580 tense simplification in subordinate clauses 581 | 581 than and as as subjects, objects and complements 582 | 582 thankful and grateful 583 | 583 that-clauses 584 | 584 that: omission 585 | 585 the matter (with) 586 | 586 there 587 | 587 there is 588 | 588 think 589 | 589 this and that 590 | 590 this/that and it: things that have just been mentioned 591 | 591 This is the first/last ... etc 592 | 592 through: time 593 | 593 time 594 | 594 tonight 595 | 595 too 596 | 596 too much and too many 597 | 597 travel, journey, trip and voyage 598 | 598 turning verbs into nouns 599 | 599 two-part verbs (1): phrasal verbs 600 | 600 two-part verbs (2): prepositional verbs 601 | 601 unless 602 | 602 until 603 | 603 up and down 604 | 604 used + infinitive 605 | 605 [be] used to 606 | 606 verb complementation: what can follow a verb? 607 | 607 verb + object + complement 608 | 608 verbs of movement: she ran in etc 609 | 609 verbs with both active and passive meanings 610 | 610 verbs with two objects 611 | 611 very and very much 612 | 612 wait 613 | 613 want 614 | 614 -ward(s) 615 | 615 way 616 | 616 weak and strong forms 617 | 617 well 618 | 618 when and if 619 | 619 where (to) 620 | 620 whether ... or ... 621 | 621 whether and if 622 | 622 which, what and who: question words 623 | 623 who and whom 624 | 624 who ever, what ever etc 625 | 625 whoever, whatever etc 626 | 626 whose: question word 627 | 627 whose and who's 628 | 628 why and why not 629 | 629 will: various uses 630 | 630 wish 631 | 631 with 632 | 632 worth 633 | 633 would: various uses 634 | 634 yes and no 635 | -------------------------------------------------------------------------------- /火星词典.Link3.txt: -------------------------------------------------------------------------------- 1 | Contents Overview 2 |
条目概览 Contents Overview
3 |
4 |
这是本书的语言点概要,而不是完整目录。关于某一语言点的更详细信息,请使用“索引”。
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /火星词典.Link4.txt: -------------------------------------------------------------------------------- 1 | verbs, tense and aspect 2 |
verbs, tense and aspect
3 |
4 |
future 211-221
5 |
present tenses 461-466
6 |
past simple and progressive 421-422
7 |
perfect verb forms 427
8 |
present perfect 455-460
9 |
past perfect 423-425
10 |
progressive (continuous) verb forms 470-472
11 |
past verb form with present or future meaning 426
12 |
tense simplification in subordinate clauses (present for future, past for would etc) 580
13 |
14 | 15 | be, do, have and modal auxiliaries 16 |
be, do, have and modal auxiliaries
17 |
18 |
auxiliary verbs 85
19 | be 89-92
20 | there is 587
21 | do 158-162
22 | have 234-239
23 |
modal verbs 353-354
24 | can and could 121-125
25 | may and might 338-344
26 | can, could, may and might compared 345
27 | must 358-361
28 | ought 403
29 | should 518-521
30 | should, ought and must compared 520
31 | will 629
32 | would 633
33 |
34 | 35 | infinitives and participles 36 |
infinitives and participles
37 |
38 |
infinitives 279-292
39 |
-ing forms 293-294
40 |
-ing forms used like nouns (gerunds) 295-298
41 |
-ing form or infinitive after remember, go on etc 299
42 |
-ing and -ed forms used as adjectives (participles) 408-411
43 |
44 | 45 | verbs: other points 46 |
verbs: other points
47 |
48 |
active verb forms 10
49 |
passives 412-420
50 |
subjunctive 567
51 |
link verbs: be, seem, look etc 328
52 |
irregular verbs 304
53 |
verb complementation (what can follow a verb?) 606
54 |
verbs with two objects 610
55 |
verb + object + complement 607
56 |
two-part verbs: phrasal verbs 599; prepositional verbs 600
57 |
verbs of movement (she ran in etc) 608
58 |
turning verbs into nouns 598
59 |
older English verb forms 392
60 |
61 | 62 | nouns 63 |
nouns
64 |
65 |
singular and plural 523-532
66 |
countable and uncountable nouns 148-149
67 |
gender (references to males and females) 222
68 |
piece- and group-words (a bar of chocolate, a bunch of flowers etc) 430
69 |
possessive's 439-440
70 |
noun + noun 385-386
71 |
complementation (what can follow a noun?) 384
72 |
73 | 74 | pronouns 75 |
pronouns
76 |
77 |
personal pronouns(I, me, you etc) 428-9
78 |
reflexive pronouns (myself etc) 493
79 |
each other and one another 171
80 |
indefinite pronouns (somebody, someone, anything etc) 548
81 |
interrogative which, what, who etc 622-624
82 |
one: substitute word (a big one etc) 395
83 |
possessives and demonstratives: see determiners
84 |
relative who, whom, which, that etc 494-497
85 |
whoever, whatever etc 625
86 |
87 | 88 | determiners (the, my, some, several etc) 89 |
determiners (the, my, some, several etc)
90 |
91 |
introduction 154
92 |
articles (a/an and the) 61-70
93 |
possessives (my, mine etc) 441-443
94 |
demonstratives (this, that, these, those) 589-590
95 |
all 35-40
96 |
another and other(s) 54
97 |
any 55
98 |
any and every 56
99 |
both 110
100 |
each 169
101 |
each and every 170
102 |
every (one) 193
103 |
either 174
104 |
enough 187
105 |
half 231
106 |
less and fewer 320
107 |
least and fewest 318
108 |
(a) little and (a) few 329
109 |
[a] lot 333
110 |
more 355
111 |
most 356
112 |
much and many 357
113 |
neither (of) 372
114 |
no, none and not a/any 376
115 |
so much and so many 542
116 |
some 546
117 |
some and any 547
118 |
too much and too many 596
119 |
120 | 121 | adjectives 122 |
adjectives
123 |
124 |
position 12-14
125 |
order before nouns 15
126 |
complementation (what can follow an adjective?) 19
127 |
adjectives with and 16
128 |
adjectives without nouns 17
129 |
pronunciation of aged, naked etc 18
130 |
131 | 132 | adverbs 133 |
adverbs
134 |
135 |
position 21-25
136 |
adverbs of manner and adjectives 26
137 |
adverbs or adjectives? confusing cases 27
138 |
adverb particles 20
139 |
140 | 141 | comparison 142 |
comparison
143 |
144 |
structures 135
145 |
as ... as; as much/many as 136
146 |
comparative and superlative adjectives and adverbs 137-141
147 |
148 | 149 | prepositions 150 |
prepositions
151 |
152 |
general
153 | introduction 448
154 | at the ends of clauses 452
155 | before conjunctions 453
156 | before -ing forms 454
157 | before and after particular words
158 | and expressions 449-450
159 | prepositional verbs 600
160 | expressions without prepositions 451
161 |
particular prepositions
162 | about and on 4
163 | above and over 6
164 | according to 8
165 | across, over and through 9
166 | along 45
167 | (a)round and about 60
168 | at/in and to 80
169 | at, on and in: place 81
170 | at, on and in: time 82
171 | before and in front of 98
172 | below, under, underneath
173 | and beneath 100
174 | between and among 105
175 | by time 117
176 | by and near 118
177 | by (method, agent) and with (tools etc) 119
178 | due to and owing to 166
179 | during and for 167
180 | during and in 168
181 | for: purpose and cause 207
182 | for, since, in and from time 208
183 | in and into, on and onto 269
184 | in and to 270
185 | in spite of 272
186 | instead of 301
187 | like and as: similarity, function 326
188 | near (to) 365
189 | opposite, facing and in front of 402
190 | out of 404
191 | through: time 592
192 | until 602
193 | up and down 603
194 | with 631
195 |
196 | 197 | conjunctions 198 |
conjunctions
199 |
200 |
general
201 | conjunctions 510
202 | sentence structure 511
203 |
particular conjunctions
204 | and 52
205 | and after try, wait, go etc 53
206 | as and though: special word order 71
207 | as if and as though; like 74
208 | as long as 75
209 | as well as 78
210 | because 94
211 | before 97
212 | both and 111
213 | either or 175
214 | how 252
215 | immediately, the moment etc 267
216 | it's time (that) 306
217 | lest 321
218 | neither ... nor 373
219 | neither, nor and not ... either 374
220 | not only ... 383
221 | now (that) 387
222 | once 394
223 | so that and in order that 543
224 | that-clauses 583
225 | omission of that 584
226 | unless 601
227 | when and if 618
228 | whether ... or ... 620
229 | whether and if 621
230 |
231 | 232 | word order and sentence organisation 233 |
word order and sentence organisation
234 |
235 |
basic word order 509
236 |
inversion (verb before subject) 302-303
237 |
fronting (e.g. People like that I can't stand) 513
238 |
information structure 512
239 |
emphasis 184
240 |
241 | 242 | various structures 243 |
various structures
244 |
245 |
questions 480-486
246 |
question tags 487-488
247 |
negative structures 367-371
248 |
imperatives 268, 323 (let)
249 |
exclamations 195
250 |
direct speech: reporting verbs and word order 156
251 |
indirect speech (reported speech) 274-278
252 |
relatives (the person who ... etc): 494-498
253 |
whoever, whatever etc 625
254 |
if 256-265
255 |
preparatory it: 446-447
256 |
cleft sentences: what I need is a holiday 130; it was my secretary who ... 131
257 |
ellipsis (leaving out words) 177-182
258 |
understanding complicated sentences 515
259 |
260 | 261 | constructing text 262 |
constructing text
263 |
264 |
discourse markers (linking expressions) 157
265 |
paragraphs 406
266 |
repetition 500
267 |
correspondence
268 | letters 145-146
269 | emails and text messages 147
270 |
271 | 272 | spoken grammar 273 |
spoken grammar
274 |
275 |
contractions 143
276 |
spoken structures and tags 514
277 |
short answers (Yes, he can etc) 517
278 |
reply questions (Was it? Did you?) 484
279 |
280 | 281 | special kinds of language 282 |
special kinds of language
283 |
284 |
abbreviations and acronyms 2
285 |
idioms, collocations and fixed expressions 255
286 |
politeness
287 | using questions 435
288 | distancing verb forms 436
289 | softening expressions 437
290 | 'social' language 545
291 |
varieties and styles of English
292 | American and British English 51
293 | standard English and dialects 308
294 | correctness 309
295 | spoken and written English 310
296 | formality 311
297 | variation and change 312
298 | abbreviated styles 1
299 | headlines 240
300 | slang 533
301 | taboo words and swearwords 575
302 |
303 | 304 | topic areas 305 |
topic areas
306 |
307 |
age 32
308 |
dates 152
309 |
meals 347
310 |
measurements: 'marked' and 'unmarked' forms 350
311 |
names (Florence, Homer etc) 362
312 |
names and titles (Peter; Mr Lewis) 363
313 |
nationalities, countries and regions 364
314 |
numbers 389
315 |
telephoning 578
316 |
telling the time 579
317 |
318 | 319 | spelling and punctuation 320 |
spelling and punctuation
321 |
322 |
spelling 556-565
323 |
punctuation 473-479
324 |
325 | 326 | pronunciation 327 |
pronunciation
328 |
329 |
stress and rhythm 554
330 |
intonation 555
331 |
weak and strong forms 616
332 |
333 | 334 | word-building 335 |
word-building
336 |
prefixes and suffixes 445
337 | 338 | confusable words and expressions 339 |
confusable words and expressions
340 |
341 |
   accept and agree 7
342 | all right and alright 41
343 | allow, permit and let 42
344 | almost and nearly; practically 43
345 | alone, lonely, lonesome and lone 44
346 | also, as well and too 46-47
347 | alternately and alternatively 48
348 | although, though, but and however: contrast 49
349 | altogether and all together 50
350 | arise and rise 59
351 | as, because, since and for 72
352 | as, when and while: simultaneous events 73
353 | at first and first 84
354 | (a)wake and (a)waken 86
355 | back and again 87
356 | bath and bathe 88
357 | beat and win 93
358 | begin and start 99
359 | beside and besides 101
360 | besides, except and apart from 102
361 | big, large and great 106
362 | born and borne 108
363 | borrow and lend 109
364 | bring and take 112
365 | bring up and educate 113
366 | Britain, the United Kingdom, the British Isles and England 114
367 | broad and wide 115
368 | care: take care (of), care (about) and
369 | care for 127
370 | changes (become, get, go, grow etc) 128
371 | city and town 129
372 | classicand classical 254
373 | close and shut 132
374 | cloth and clothes 133
375 | come and go 134
376 | comic and comical 254
377 | continual(ly) and continuous(ly) 142
378 | dead, died and death 153
379 | east and eastern, north and northern etc 172
380 | economic and economical 254
381 | efficient and effective 173
382 | electric and electrical 254
383 | end and finish verbs 185
384 | especial(ly) and special(ly) 188
385 | except and except for 194
386 | expect, hope, wait and look forward 196
387 | experiment and experience 197
388 | fairly, quite, rather and pretty: adverbs of degree 199
389 | far and a long way 200
390 | farther and further 201
391 | female and feminine; male and masculine 203
392 | finally, at last, in the end and at the end 204
393 | fit and suit 206
394 | forget and leave 209
395 | fun and funny 210
396 | get and go: movement 225
397 | hear and listen (to) 241
398 | here and there 245
399 | high and tall 246
400 | hire, rent and let 247
401 | historic and historical 254
402 | holiday and holidays 248
403 | how and what ... like? 253
404 | ill and sick 266
405 | in case and if 271
406 | its and it's 305
407 | last, the last, the latest 314
408 | later and in 315
409 | lay and lie 316
410 | long and (for) a long time 330
411 | lose and loose 332
412 | loudly and aloud 334
413 | magic and magical 254
414 | maybe and perhaps 346
415 | next and the next; nearest 37
416 | no more, not any more, no longer 379
417 | not and no 382
418 | opportunity and possibility 400
419 | play and game 432
420 | politic and political 254
421 | politics and policy 438
422 | price and prize 468
423 | principal and principle 469
424 | road and street 502
425 | say and tell 504
426 | sensible and sensitive 508
427 | shade and shadow 516
428 | small and little 534
429 | so (conjunction) and then 537
430 | sometime, sometime and sometimes 549
431 | soon, early and quickly 550
432 | such and so 569
433 | speak and talk 553
434 | thankful and grateful 582
435 | travel, journey, trip and voyage 597
436 | whose and who's 627
437 |
438 | 439 | other words and expressions 440 |
other words and expressions
441 |
442 |
   [be] able to 3
443 | actual(ly) 11
444 | afraid 28
445 | after adverb 29
446 | after: conjunction 30
447 | after all 31
448 | ago 33
449 | alike 34
450 | any (any better etc) 57
451 | appear 58
452 | as: structures 581
453 | as such 76
454 | as usual 77
455 | ask 79
456 | at all 83
457 | before: adverb 96
458 | bet 103
459 | better 104
460 | [a] bit 107
461 | but meaning 'except' 116
462 | call 120
463 | can't help 126
464 | contrary 144
465 | control 145
466 | country 150
467 | dare 151
468 | different 155
469 | divorce 337
470 | doubt 163
471 | dress 164
472 | drown 165
473 | elder and eldest 176
474 | else 183
475 | enjoy 186
476 | even 189
477 | eventual(ly) 190
478 | ever 191
479 | ever so, ever such 192
480 | explain 198
481 | feel 202
482 | finished 205
483 | first (this is the first ... etc): tenses 591
484 | get: meanings and structures 223-224
485 | give with action-nouns 226
486 | go/come for a ... 227
487 | go/come ... ing 228
488 | gone with be 229
489 | had better 230
490 | happen to ... 232
491 | hardly, scarcely and no sooner 233
492 | hear, see etc + object + verb form 242
493 | hear, see etc with that-clause 243
494 | help 244
495 | home 249
496 | hope 250
497 | hopefully 251
498 | indeed 273
499 | just 307
500 | know 313
501 | last (this is the last ... etc): tenses 591
502 | learn 317
503 | left 319
504 | let: 322-323
505 | life: countable or uncountable 324
506 | like verb 325
507 | likely 327
508 | look 331
509 | make: 335-336
510 | marry 337
511 | mean 348
512 | means 349
513 | mind (do you mind etc) 351
514 | miss 352
515 | need 366
516 | no (no better etc) 57
517 | no doubt 377
518 | no matter 378
519 | nowadays 388
520 | of course 390
521 | often 391
522 | once: adverb 393
523 | only: focusing adverb 398
524 | open 399
525 | opposite (adjective) position 401
526 | own 405
527 | part 407
528 | place (a place to live, etc) 431
529 | please and thank you 433
530 | point of view 434
531 | prefer 444
532 | presently 467
533 | quite 489
534 | rather 490-491
535 | reason 492
536 | remind 499
537 | [the] rest 501
538 | [the] same 503
539 | see 505
540 | see, look (at) and watch 506
541 | seem 507
542 | smell 535
543 | since: tenses 522
544 | so: degree adverb (so tired, so fast) 538
545 | so (and not) with hope, believe etc 539
546 | so with say and tell 540
547 | so-and-so; so-so 544
548 | sort of, kind of and type of 551
549 | sound 552
550 | still, yet and already: time 566
551 | such 568
552 | suggest 570
553 | suppose, supposing and what if 571
554 | supposed to 572
555 | surely 573
556 | sympathetic 574
557 | take: time 576
558 | taste 577
559 | than: structures 581
560 | the matter (with) 585
561 | there 586
562 | think 588
563 | time 593
564 | tonight 594
565 | too 595
566 | used to 604
567 | [be] used to ... ing 605
568 | very and very much 611
569 | wait 612
570 | want 613
571 | -wards 614
572 | way 615
573 | well 617
574 | where (to) 619
575 | why and why not 628
576 | wish: tenses 630
577 | worth 632
578 | yes and no 634
579 |
580 | 581 | -------------------------------------------------------------------------------- /火星词典.Link5.txt: -------------------------------------------------------------------------------- 1 | 0015 条目概览 Contents Overview Contents Overview 条目概览 2 | 0015 verbs, tense and aspect动词、时和态 verbs, tense and aspect 动词、时和态 3 | 0015 be, do, have和modal auxiliaries情态助动词 be, do, have and modal auxiliaries be,do,have和情态助动词 4 | 0015 infinitives and participles动词不定式和分词 infinitives and participles 动词不定式和分词 5 | 0015 verbs: other points动词:其他语言点 verbs: other points 动词:其他语言点 6 | 0016 nouns名词 nouns 名词 7 | 0016 pronouns代词 pronouns 代词 8 | 0016 determiners限定词(the, my, some, several等) determiners (the, my, some, several etc) 限定词 (the, my, some, several等) 9 | 0017 adjectives形容词 adjectives 形容词 10 | 0017 adverbs副词 adverbs 副词 11 | 0017 comparison比较 comparison 比较 12 | 0017 prepositions介词 prepositions 介词 13 | 0018 conjunctions连词 conjunctions 连词 14 | 0018 word order and sentence organisation词序和句子组织 word order and sentence organisation 词序和句子组织 15 | 0018 various structures各种结构 various structures 各种结构 16 | 0018 constructing text构建文本 constructing text 构建文本 17 | 0018 spoken grammar口语语法 spoken grammar 口语语法 18 | 0019 special kinds of language语言的特殊方面 special kinds of language 语言的特殊方面 19 | 0019 topic areas话题 topic areas 话题 20 | 0019 spelling and punctuation拼写和标点 spelling and punctuation 拼写和标点 21 | 0019 pronunciation发音 pronunciation 发音 22 | 0019 word-building构词 word-building 构词 23 | 0019 confusable words and expressions易混淆的词语和表达方式 confusable words and expressions 易混淆的词语和表达方式 24 | 0021 other words and expressions其他词语和表达方式 other words and expressions 其他词语和表达方式 25 | -------------------------------------------------------------------------------- /火星词典.Link7.txt: -------------------------------------------------------------------------------- 1 | 0993 2 | a/an 3 | a- 4 | a bit 5 | a couple of 6 | a few 7 | a great deal 8 | a group of 9 | a large amount/number 10 | a little 11 | a long time 12 | a long way 13 | a lot 14 | a number of 15 | abbreviated styles 16 | abbreviations 17 | able 18 | -able 19 | about 20 | about to 21 | above 22 | accents 23 | accept 24 | accommodation 25 | according to 26 | accuse 27 | accused 28 | accustomed 29 | ache 30 | acre 31 | acronyms 32 | across 33 | act 34 | active verb forms 35 | actor 36 | actual(ly) 37 | AD 38 | addition 39 | addresses 40 | adjectives 41 | admired 42 | admit 43 | adopted 44 | advanced 45 | adverb particles 46 | adverbs 47 | advertisements 48 | advice 49 | advise 50 | afford to 51 | afloat 52 | afraid 53 | after 54 | after all 55 | afterward(s) 56 | again 57 | age 58 | 0994 59 | aged 60 | agent 61 | ages 62 | ago 63 | agree 64 | ain't 65 | aircraft 66 | alight 67 | alike 68 | alive 69 | all 70 | all ... but 71 | all day/week 72 | all else 73 | all right 74 | all the better 75 | all the same 76 | all together 77 | allow 78 | almost 79 | alone 80 | along 81 | aloud 82 | already 83 | also 84 | alternately 85 | although 86 | altogether 87 | always 88 | am 89 | a m 90 | American 91 | American-British differences 92 | among 93 | amount 94 | amused 95 | analysis 96 | and 97 | Anglo 98 | angry 99 | annoyed by/with 100 | another 101 | another thing 102 | ante 103 | anti 104 | antique shop 105 | anxious 106 | any 107 | anybody 108 | anyhow 109 | anyone 110 | anything 111 | 0995 112 | anyway 113 | anywhere 114 | apart from 115 | apologies 116 | apologise 117 | apostrophe 118 | apparently 119 | appear 120 | appendix 121 | appreciate 122 | approach 123 | Arab 124 | arch 125 | are 126 | areas 127 | aren't I? 128 | arise 129 | arms 130 | around 131 | arrange to 132 | arrive at/in 133 | arrived 134 | arse 135 | arsehole 136 | art 137 | articles 138 | as 139 | as a matter of fact 140 | as a result 141 | as ever 142 | as far as 143 | as for 144 | as I was saying 145 | as if 146 | as it were 147 | as long as 148 | as much/many 149 | as regards 150 | as soon as 151 | as such 152 | as though 153 | as usual 154 | as well 155 | as well as 156 | 0996 157 | ask 158 | asleep 159 | ass 160 | asshole 161 | astonish 162 | at 163 | at all 164 | at any rate 165 | at first 166 | at last 167 | at least 168 | at once 169 | at which point 170 | ate 171 | -ate 172 | athletics 173 | -ation 174 | attempt 175 | Attorney General 176 | attributive 177 | authoress 178 | auto- 179 | autumn 180 | auxiliary verbs 181 | available 182 | avoid ...ing 183 | await 184 | awake 185 | aware of 186 | back 187 | backward(s) 188 | bacterium 189 | bad 190 | badly 191 | baggage 192 | balls 193 | bank 194 | barracks 195 | basis 196 | bath 197 | baths 198 | BBC 199 | BC 200 | be 201 | be able 202 | be committed 203 | be going 204 | be supposed to 205 | be sure and 206 | be that as it may 207 | be used to ... ing 208 | bear 209 | beat 210 | because 211 | become 212 | bed 213 | been 214 | before 215 | beg to 216 | begin 217 | belong 218 | beloved 219 | below 220 | bend 221 | beneath 222 | beside 223 | bet 224 | better 225 | between 226 | bi 227 | bicycle 228 | big 229 | billiards 230 | billion 231 | binoculars 232 | 0997 233 | bit 234 | bitch 235 | blast 236 | blessed 237 | blind 238 | bloody 239 | blue 240 | boat 241 | bollocks 242 | bored 243 | born 244 | borrow 245 | both 246 | bread 247 | break 248 | bride 249 | briefly 250 | bring 251 | bring up 252 | Brit 253 | Britain 254 | British 255 | British and American English 256 | Briton 257 | broad 258 | broadly speaking 259 | buffalo 260 | bugger 261 | bunch 262 | burst out 263 | bus 264 | but 265 | buy 266 | by 267 | by all/any/no means 268 | by and large 269 | by car 270 | by far 271 | by myself 272 | by the time that 273 | by the way 274 | Bye 275 | cactus 276 | calculations in speech 277 | calf 278 | call 279 | camped 280 | can 281 | can't bear 282 | can't help 283 | can't seem to 284 | can't stand 285 | capital letters 286 | car 287 | care to 288 | careful to 289 | carry 290 | case 291 | cattle 292 | causative structures 293 | cause 294 | cent 295 | cent(i)- 296 | -centric 297 | centuries 298 | certain 299 | certainly 300 | chairman 301 | chance 302 | 0998 303 | change 304 | changes 305 | changes in English 306 | Cheers 307 | chess 308 | chewing gum 309 | child 310 | Chinese 311 | choir 312 | choose to 313 | Christ 314 | Christmas 315 | church 316 | cinema 317 | city 318 | class 319 | classic 320 | classical names 321 | clause 322 | clean 323 | cleft sentences 324 | clever 325 | close(d) 326 | cloth 327 | clothes 328 | club 329 | co- 330 | cock 331 | cold 332 | collapsed 333 | collective nouns 334 | college 335 | collocations 336 | colons 337 | colour 338 | combat(t)ing 339 | come 340 | come true/right 341 | comic 342 | command 343 | commando 344 | commas 345 | commentaries 346 | committed 347 | committee 348 | common for 349 | comparatives and superlatives 350 | comparison 351 | compel 352 | complementation 353 | completely 354 | compound adjectives with participles 355 | compound nouns 356 | concentrate 357 | concern 358 | concerned 359 | concerto 360 | conclusion 361 | conditional structures 362 | conditional verb forms 363 | confused 364 | congratulate 365 | congratulations 366 | conjunctions 367 | consent 368 | consequently 369 | consider 370 | consist 371 | contain 372 | contemplate 373 | contents 374 | continual(ly) 375 | continue 376 | continuous 377 | 0999 378 | contractions 379 | contrary 380 | contrastive emphasis 381 | control 382 | conversation 383 | co-ordinating conjunctions 384 | corpus 385 | correctness 386 | correspondence 387 | cost 388 | costly 389 | could 390 | countable and uncountable 391 | counter- 392 | counting 393 | country 394 | couple 395 | course 396 | court martial 397 | covered in 398 | cowardly 399 | crack 400 | craft 401 | crap 402 | crash 403 | crew 404 | crisis 405 | criterion 406 | crooked 407 | crossroads 408 | cubic metre 409 | cunt 410 | cursed 411 | customs 412 | cyber- 413 | daily 414 | damn 415 | 'dangling' (misrelated) participles 416 | dare 417 | dash 418 | data 419 | dates 420 | day 421 | days of the week 422 | de- 423 | dead 424 | deaf 425 | deal 426 | decide to 427 | decimals 428 | declarative questions 429 | deep 430 | deer 431 | defining 432 | definitely 433 | delay 434 | delighted for 435 | demonstratives 436 | deny 437 | depend 438 | describe 439 | descriptive and prescriptive rules 440 | deserve 441 | despite this/that 442 | details 443 | determiners 444 | detest 445 | developed 446 | diagnosis 447 | dialects 448 | dice 449 | dick 450 | die 451 | died 452 | difference 453 | different from/to/than 454 | difficult 455 | difficulty 456 | dime 457 | dinner 458 | direct 459 | direct and indirect objects 460 | direct and indirect speech 461 | direct speech 462 | dis- 463 | disagree 464 | disappointed 465 | discourse markers 466 | discuss 467 | 1000 468 | discussion 469 | dislike 470 | distributive plural 471 | dive 472 | divide 473 | divorce 474 | do 475 | do so/it/that 476 | do you mind ... ? 477 | doctor 478 | does 479 | dogged 480 | dollar 481 | donate 482 | don't 483 | don't be 484 | don't mention it 485 | double negatives 486 | doubling consonants 487 | doubt 488 | down 489 | dozen 490 | Dr 491 | draughts 492 | dream 493 | dress 494 | drinking 495 | drive 496 | dropping 497 | drown 498 | drunken 499 | due to 500 | duke 501 | during 502 | Dutch 503 | e- 504 | each 505 | each other / one another 506 | eager for 507 | early 508 | earth 509 | easily 510 | east 511 | Easter 512 | easy 513 | echo 514 | echo questions 515 | eco- 516 | economic 517 | -ed 518 | educate 519 | -ee 520 | efficient 521 | e.g. 522 | either 523 | either ... or 524 | elder 525 | elect 526 | electric 527 | elf 528 | ellipsis 529 | 1001 530 | else 531 | emails 532 | embedding 533 | emphasis 534 | emphatic imperatives 535 | en- 536 | -en 537 | -ence 538 | encourage 539 | end 540 | endure 541 | end-weight 542 | England 543 | English 544 | enjoy 545 | enough 546 | enter 547 | entitled 548 | equipment 549 | -er 550 | escape 551 | escaped 552 | -ese 553 | Eskimo 554 | especial(ly) 555 | -ess 556 | essential 557 | -ette 558 | Euro- 559 | even 560 | even if/though 561 | even now 562 | even so 563 | eventual(ly) 564 | ever 565 | ever so/such 566 | every 567 | every few days 568 | every now and then 569 | every other 570 | every single 571 | every so often 572 | everybody 573 | everyday 574 | everyone 575 | everything 576 | everywhere 577 | ex- 578 | example of 579 | except 580 | excited by/about 581 | exclamation mark 582 | exclamations 583 | excuse 584 | Excuse me 585 | expect 586 | experience 587 | explain 588 | extent 589 | extra- 590 | face 591 | facing 592 | fact 593 | faded 594 | fail to 595 | fair 596 | fairly 597 | fall ill / asleep/ in love 598 | fallen 599 | family 600 | 1002 601 | fancy 602 | far 603 | farm 604 | fart 605 | farther 606 | fast 607 | fear 608 | feel 609 | female 610 | fetch 611 | few 612 | fewer 613 | fewest 614 | fight 615 | fill in/out 616 | filled with 617 | finally 618 | find 619 | find out 620 | fine 621 | finish 622 | finished 623 | finished-time words 624 | fireman 625 | firm 626 | first 627 | first floor 628 | first(ly) 629 | fish 630 | fit 631 | fixed expressions 632 | flat 633 | flock 634 | floors 635 | flow 636 | flu 637 | fly 638 | focus(s)ing 639 | follow 640 | foot 641 | for 642 | for a long time 643 | for example 644 | for one thing 645 | forbid 646 | force 647 | fore- 648 | forever 649 | forget 650 | forgive 651 | formal and informal language 652 | former 653 | formula 654 | forward(s) 655 | found 656 | fractions 657 | frankly 658 | free 659 | French 660 | frequently 661 | friendly 662 | frightened by/of 663 | from 664 | from my point of view 665 | front 666 | fronting 667 | fruit 668 | fuck 669 | -ful 670 | full stops 671 | fun 672 | funds 673 | 1003 674 | fungus 675 | furniture 676 | further 677 | furthermore 678 | future 679 | gallon 680 | game 681 | gather 682 | gender 683 | general 684 | genitive 685 | geo- 686 | geographical names 687 | gerunds 688 | get 689 | get back 690 | get dressed 691 | get married/divorced 692 | get on with 693 | get round to 694 | get used to 695 | give 696 | give up 697 | glass 698 | glasses 699 | go 700 | go on 701 | God 702 | God Almighty 703 | going to 704 | gold 705 | gone 706 | gonna 707 | good 708 | good-looking 709 | Good morning 710 | goods 711 | goose 712 | got 713 | gotta 714 | gotten 715 | government 716 | gradable adjectives 717 | granted 718 | grape(s) 719 | grateful 720 | great 721 | greetings 722 | groceries 723 | ground floor 724 | group 725 | group- 726 | grow 727 | grown up 728 | guess 729 | had 730 | had better 731 | had I 732 | had rather 733 | had to do 734 | hair 735 | half 736 | handicapped 737 | 'hanging' (misrelated) participles 738 | happen to 739 | Happy birthday / New Year 740 | happy to 741 | hard 742 | 1004 743 | hardly 744 | has 745 | hat 746 | hate 747 | have 748 | Have a good 749 | have on 750 | he 751 | headlines 752 | headquarters 753 | health 754 | hear 755 | Heaven forbid 756 | heavy 757 | height 758 | hell 759 | help 760 | herd 761 | here and there 762 | Here you are 763 | hero 764 | hers 765 | herself 766 | hesitate to 767 | high 768 | high tea 769 | high time 770 | him 771 | himself 772 | hire 773 | his 774 | historic 775 | holiday(s) 776 | home 777 | homeward(s) 778 | honestly 779 | -hood 780 | hope 781 | hopefully 782 | hospital 783 | host 784 | hot 785 | house 786 | houses 787 | hovercraft 788 | how 789 | how about ... ? 790 | How are you? 791 | How dare you? 792 | How do you know? 793 | how else 794 | how ever 795 | how far 796 | how long? 797 | how much/many 798 | how often 799 | how old 800 | how on earth 801 | How should I know? 802 | however 803 | 1005 804 | hundred 805 | hungry 806 | hurry 807 | hurt 808 | hyper- 809 | hyphens 810 | hypothesis 811 | I 812 | I am to 813 | I beg your pardon 814 | I dare say 815 | I don't know 816 | I feel 817 | I gather/hear/see/understand 818 | I guess 819 | I know 820 | I mean 821 | I reckon 822 | I should 823 | I suppose 824 | I think 825 | I think I'll 826 | I told you so 827 | I would 828 | -(i)an 829 | -ic 830 | idea 831 | identify 832 | identifying and non-identifying relative clauses 833 | idioms 834 | if 835 | if any 836 | if not 837 | if only 838 | if so/not 839 | if you like 840 | -ify 841 | ill 842 | ill- 843 | illnesses 844 | I'm 845 | I'm afraid 846 | im- 847 | imagine 848 | immediately 849 | imperatives 850 | important 851 | impossible to 852 | impressed 853 | in 854 | in addition 855 | in any case 856 | in case 857 | in case of 858 | in conclusion 859 | in fact 860 | in front of 861 | in general 862 | in most cases 863 | in my opinion 864 | in my view 865 | in order that 866 | in order to 867 | in other words 868 | in particular 869 | in short 870 | in some cases 871 | 1006 872 | in spite of 873 | in the end 874 | in the first 875 | in the same way 876 | in the way 877 | in time 878 | in which case 879 | in- 880 | inch 881 | incidentally 882 | inclined 883 | include 884 | increased 885 | indeed 886 | indefinite pronouns 887 | independence 888 | indirect and direct objects 889 | indirect speech 890 | infinitives 891 | informal and formal language 892 | information 893 | -ing forms 894 | -ing 895 | initials 896 | insist 897 | instance 898 | instant 899 | instead 900 | instruct 901 | instructions 902 | intend 903 | inter- 904 | interest(ed) 905 | international English 906 | 1007 907 | interrogative 908 | into 909 | intonation 910 | introductions 911 | inversion 912 | inverted commas 913 | invitations 914 | invite 915 | involve 916 | involved 917 | Irish 918 | irregular verbs 919 | is 920 | -ise/ize 921 | -ish 922 | -ism 923 | -ist 924 | it 925 | it doesn't matter 926 | it is the first/last 927 | it is true 928 | item of information 929 | its 930 | it's ... since 931 | it's time 932 | itself 933 | -ity 934 | -ive 935 | -ize 936 | Japanese 937 | jeans 938 | Jesus 939 | journey 940 | jury 941 | just 942 | just because 943 | just now 944 | keep 945 | kibbutz 946 | kick 947 | kidnapped 948 | kilo 949 | kilo- 950 | kind of 951 | kind to 952 | kinds of English 953 | King 954 | knife 955 | know 956 | knowledge 957 | known to 958 | lack 959 | large 960 | last 961 | lastly 962 | late 963 | lately 964 | later 965 | latest 966 | latter 967 | laugh 968 | lay 969 | lead 970 | leaf 971 | learn 972 | learned 973 | least 974 | leave 975 | leave off 976 | leaving out words 977 | left 978 | leisurely 979 | 1008 980 | lend 981 | length 982 | less 983 | -less 984 | lesser 985 | lest 986 | let 987 | letters 988 | lexical phrases 989 | lie 990 | life 991 | lightning 992 | like 993 | -like 994 | likely 995 | link verbs 996 | listen 997 | little 998 | live 999 | lively 1000 | loaf of bread 1001 | logo 1002 | lone 1003 | lonely 1004 | long 1005 | Long live the King 1006 | look 1007 | look after 1008 | look at 1009 | look for 1010 | look forward to 1011 | look here 1012 | look out for 1013 | lose 1014 | lots 1015 | loud 1016 | louse 1017 | love 1018 | lovely 1019 | low 1020 | luck 1021 | lucky to 1022 | luggage 1023 | lunch 1024 | -ly 1025 | macaroni 1026 | madam 1027 | made of/from/with 1028 | magic 1029 | majority 1030 | make 1031 | mal- 1032 | male 1033 | man 1034 | manage to 1035 | mankind 1036 | manners 1037 | many 1038 | 'marked' and 'unmarked' 1039 | marriage 1040 | marry 1041 | matter 1042 | 1009 1043 | may 1044 | maybe 1045 | mayor 1046 | me 1047 | meals 1048 | mean 1049 | meaning 1050 | means 1051 | measles 1052 | measure 1053 | measurement 1054 | media 1055 | meet (with) 1056 | mega- 1057 | melt 1058 | -ment 1059 | mention 1060 | mere 1061 | metre 1062 | micro- 1063 | mid- 1064 | Middle Ages 1065 | might 1066 | mile 1067 | milli- 1068 | million 1069 | mimicked 1070 | mind 1071 | mind you 1072 | mine 1073 | mini- 1074 | ministry 1075 | mis- 1076 | misrelated participles 1077 | Miss 1078 | missing 1079 | mistake for 1080 | mistaken 1081 | modal auxiliary verbs 1082 | moment 1083 | Monday 1084 | money 1085 | mono- 1086 | monthly 1087 | more 1088 | more than one 1089 | more or less 1090 | moreover 1091 | mosquito 1092 | most 1093 | mostly 1094 | mother-in-law 1095 | mouse 1096 | mouths 1097 | move 1098 | mph 1099 | Mr, Mrs and Ms 1100 | much 1101 | multi- 1102 | musical instruments 1103 | must 1104 | 1010 1105 | my 1106 | myself 1107 | naked 1108 | names 1109 | nationalities 1110 | nature 1111 | near 1112 | nearest 1113 | nearly 1114 | necessary 1115 | need 1116 | negative structures 1117 | neglect to 1118 | negro 1119 | neither 1120 | neo- 1121 | -ness 1122 | never 1123 | nevertheless 1124 | news 1125 | news headlines 1126 | next 1127 | nice 1128 | nickel 1129 | night 1130 | nil 1131 | no 1132 | no doubt 1133 | no good 1134 | no longer 1135 | no matter who 1136 | no more 1137 | no need for 1138 | no one 1139 | No problem 1140 | no sooner 1141 | no use 1142 | nobody 1143 | non- 1144 | non-affirmative words 1145 | non-assertive words 1146 | non-defining relative clauses 1147 | none 1148 | nonetheless 1149 | non-gradable adjectives 1150 | 1011 1151 | non-identifying relative clauses 1152 | non-progressive verbs 1153 | no one 1154 | nor 1155 | normal 1156 | normally 1157 | north 1158 | northward(s) 1159 | not 1160 | not a bit 1161 | not a grain/breath/scrap 1162 | not any more 1163 | not at all 1164 | not ever 1165 | not in the least 1166 | not only ... but also 1167 | not quite 1168 | not until 1169 | not very 1170 | nothing 1171 | notice 1172 | notices 1173 | nought 1174 | noun 1175 | noun + infinitive 1176 | noun + -ing form 1177 | noun + noun 1178 | noun + 's 1179 | noun complementation 1180 | nouns left out after adjectives 1181 | nouns used for actions 1182 | now 1183 | nowadays 1184 | nowhere 1185 | nucleus 1186 | number 1187 | numbers 1188 | oasis 1189 | object to 1190 | objects 1191 | oblige 1192 | occasionally 1193 | -ocracy 1194 | odds 1195 | of 1196 | of course 1197 | of which 1198 | offer 1199 | offers 1200 | often 1201 | OK 1202 | old 1203 | older English verb forms 1204 | -ology 1205 | omission of words 1206 | omni- 1207 | on 1208 | on ... ing 1209 | on 1210 | on condition that 1211 | on earth 1212 | on foot 1213 | 1012 1214 | on holiday 1215 | on one's own 1216 | on the contrary 1217 | on the one hand 1218 | on the way 1219 | on the whole 1220 | on time 1221 | on top of that 1222 | once 1223 | one 1224 | one another 1225 | one day 1226 | oneself 1227 | only 1228 | onto 1229 | open 1230 | operate 1231 | opinion 1232 | opportunity 1233 | opposite 1234 | or 1235 | -or 1236 | or else 1237 | or rather 1238 | orchestra 1239 | order 1240 | other 1241 | ought 1242 | ounce 1243 | our 1244 | ours 1245 | ourselves 1246 | -ous 1247 | out 1248 | out- 1249 | outskirts 1250 | outward(s) 1251 | over 1252 | over- 1253 | owe 1254 | owing to 1255 | own 1256 | ox 1257 | page 1258 | pair 1259 | pan- 1260 | panicking 1261 | pants 1262 | paper 1263 | paragraphs 1264 | Pardon? 1265 | parking 1266 | part 1267 | participles 1268 | particular 1269 | party 1270 | pass 1271 | passer-by 1272 | passives 1273 | 1013 1274 | past continuous 1275 | past participles 1276 | past perfect 1277 | past progressive 1278 | past simple 1279 | past tense 1280 | past verb form 1281 | paths 1282 | pay 1283 | penny 1284 | people 1285 | per 1286 | perfect infinitive 1287 | perfect -ing forms 1288 | perfect tenses 1289 | perhaps 1290 | period 1291 | permission 1292 | person 1293 | personal pronouns 1294 | persuade 1295 | phenomenon 1296 | -phile 1297 | -phobe 1298 | phone 1299 | photo 1300 | photo- 1301 | phrasal verbs 1302 | physics 1303 | piano 1304 | picnickers 1305 | picture 1306 | piece 1307 | piece- and group-words 1308 | pint 1309 | piss 1310 | pity 1311 | place 1312 | place-names 1313 | plan 1314 | plane 1315 | play 1316 | please 1317 | pleased 1318 | plenty 1319 | plural 1320 | pm 1321 | Poet Laureate 1322 | poetess 1323 | poetry 1324 | point 1325 | point of view 1326 | 1014 1327 | pointless for 1328 | police 1329 | policeman/woman 1330 | polish 1331 | polite 1332 | politeness 1333 | politic 1334 | politics 1335 | poly- 1336 | poor 1337 | possess 1338 | possessive's 1339 | possessives 1340 | possibility 1341 | possible 1342 | post 1343 | post- 1344 | postcards 1345 | postpone 1346 | potato 1347 | pound 1348 | practically 1349 | practise 1350 | pre- 1351 | predicative 1352 | prefer 1353 | prefixes 1354 | premises 1355 | preparatory it 1356 | prepare to 1357 | prepositions 1358 | prescriptive and descriptive rules 1359 | present 1360 | present and present perfect 1361 | present continuous 1362 | present participles 1363 | present perfect 1364 | present perfect continuous 1365 | present perfect progressive 1366 | present progressive 1367 | present simple 1368 | present tenses 1369 | presently 1370 | President 1371 | President elect 1372 | presume 1373 | pretend to 1374 | pretty 1375 | prevent 1376 | price 1377 | prick 1378 | prince 1379 | 1015 1380 | principle 1381 | prison 1382 | prize 1383 | pro- 1384 | probable 1385 | probably 1386 | professor 1387 | progress 1388 | progressive forms 1389 | promise 1390 | prone 1391 | pronouns 1392 | pronunciation 1393 | proof 1394 | -proof 1395 | proper 1396 | propose 1397 | proved 1398 | provided/providing (that) 1399 | pseudo- 1400 | psycho- 1401 | public 1402 | publicity 1403 | punctuation 1404 | push 1405 | put off 1406 | put up with 1407 | pyjamas 1408 | quarter 1409 | Queen 1410 | question 1411 | question mark 1412 | question tags 1413 | questions 1414 | quick 1415 | quite 1416 | quite a bit 1417 | quite the opposite 1418 | quotation marks 1419 | radio 1420 | radius 1421 | ragged 1422 | rain 1423 | raise 1424 | rare for 1425 | rarely 1426 | rather 1427 | re- 1428 | read 1429 | ready to 1430 | real 1431 | realise 1432 | really 1433 | 1016 1434 | reason for/why/that 1435 | 'received pronunciation' 1436 | recently 1437 | reckon so/not 1438 | recognise 1439 | recommend 1440 | recovered 1441 | reduced relative clauses 1442 | reference 1443 | reflexive pronouns 1444 | refuse 1445 | regard as 1446 | regarding 1447 | regards 1448 | regret 1449 | relative clauses 1450 | relative pronouns 1451 | relative structures 1452 | reluctant for 1453 | remain 1454 | remains 1455 | remember 1456 | remind 1457 | rent 1458 | repetition 1459 | reply questions 1460 | report 1461 | reported speech 1462 | reporting direct speech 1463 | request 1464 | require 1465 | research 1466 | resemble 1467 | resent 1468 | resist 1469 | responsible 1470 | rest 1471 | result 1472 | retired 1473 | rhetorical questions 1474 | rhythm 1475 | rich 1476 | right 1477 | ring back 1478 | rise 1479 | risk 1480 | road 1481 | Roman numbers 1482 | roofs 1483 | rotten 1484 | round 1485 | rubbish 1486 | rude 1487 | rugged 1488 | rules 1489 | run into 1490 | runner-up 1491 | 's 1492 | sacred 1493 | Safe journey home 1494 | Saint 1495 | same 1496 | satisfy 1497 | savings 1498 | say 1499 | says 1500 | scales 1501 | scarcely 1502 | school 1503 | 1017 1504 | scissors 1505 | Scot 1506 | scratch 1507 | sea 1508 | search 1509 | secondly 1510 | Secretary General 1511 | see 1512 | see above/over 1513 | See you 1514 | seem 1515 | seldom 1516 | self 1517 | -self 1518 | sell 1519 | semi- 1520 | semi-colon 1521 | send 1522 | sense 1523 | sensible 1524 | sentence structure 1525 | series 1526 | set of cutlery 1527 | several 1528 | sexist language 1529 | shade 1530 | shall 1531 | shame for 1532 | shape 1533 | share between/among 1534 | sharp 1535 | shave 1536 | she 1537 | sheep 1538 | sheer 1539 | sheet of paper 1540 | shelf 1541 | -ship 1542 | shit 1543 | shocked 1544 | shone 1545 | short 1546 | short answers 1547 | shorten 1548 | should 1549 | shout 1550 | show 1551 | shrunken 1552 | shut 1553 | sick 1554 | side 1555 | silk 1556 | silly 1557 | similar 1558 | similarly 1559 | simple past 1560 | simple present 1561 | since 1562 | 1018 1563 | sing 1564 | singular and plural 1565 | sir 1566 | size 1567 | sky 1568 | slang 1569 | Sleep well 1570 | sleeping 1571 | sleepy 1572 | slow 1573 | small 1574 | smell 1575 | smile 1576 | snow 1577 | so 1578 | so as to 1579 | so be it 1580 | so few 1581 | so little 1582 | so long as 1583 | so much 1584 | so that 1585 | so to speak 1586 | so-and-so 1587 | so-so 1588 | social language 1589 | society 1590 | socio- 1591 | solo 1592 | some 1593 | some time 1594 | somebody 1595 | someplace 1596 | something 1597 | sometime 1598 | sometimes 1599 | somewhere 1600 | soon 1601 | soprano 1602 | sorry 1603 | sort of 1604 | sound 1605 | 1019 1606 | sound 1607 | south 1608 | spacecraft 1609 | spaghetti 1610 | Spanish 1611 | speak to/with 1612 | speaking of/about 1613 | special(ly) 1614 | species 1615 | spectacles 1616 | speech 1617 | spelling 1618 | spend 1619 | spit 1620 | spite 1621 | split infinitive 1622 | spoken and written English 1623 | spoken English 1624 | spokesman/woman/person 1625 | spring 1626 | square foot 1627 | staff 1628 | stain 1629 | stand 1630 | standard English and dialects 1631 | start 1632 | state verbs 1633 | statistics 1634 | stay 1635 | steal 1636 | steward 1637 | still 1638 | stimulus 1639 | stomach-ache 1640 | stone 1641 | stop 1642 | stopped 1643 | storey 1644 | stories 1645 | straight 1646 | strange for 1647 | street 1648 | street names 1649 | stress 1650 | strike 1651 | strong and weak forms 1652 | stupid to 1653 | sub- 1654 | subject separated from sentence 1655 | subjunctives 1656 | subordinate clauses 1657 | subordinating conjunctions 1658 | such 1659 | such-and-such 1660 | suffer 1661 | suffixes 1662 | sugar 1663 | suggest 1664 | suit 1665 | sum 1666 | summer 1667 | Sunday 1668 | sunken 1669 | 1020 1670 | super- 1671 | superlatives 1672 | supper 1673 | suppose 1674 | supposed 1675 | sure 1676 | surely 1677 | surnames 1678 | surprise 1679 | surprised by/at 1680 | surprising 1681 | surroundings 1682 | swear 1683 | swearwords 1684 | Swiss 1685 | swollen 1686 | sympathetic 1687 | taboo words 1688 | tags 1689 | take 1690 | take care (of) 1691 | take part 1692 | talk 1693 | tall 1694 | taste 1695 | tea 1696 | teach 1697 | team 1698 | tear 1699 | tele- 1700 | telephone numbers 1701 | telephoning 1702 | television 1703 | tell 1704 | telling the time 1705 | tempt 1706 | tend 1707 | tense 1708 | tenses 1709 | text messages 1710 | than 1711 | than ever 1712 | thank you 1713 | thanking people 1714 | thankful 1715 | that 1716 | that is to say 1717 | That's all right / OK 1718 | the 1719 | 1021 1720 | the British Isles 1721 | the fact that 1722 | the former 1723 | the hell 1724 | the majority 1725 | the matter (with) 1726 | the Middle Ages 1727 | the moment (that) 1728 | the rest 1729 | the same 1730 | the United Kingdom 1731 | the way 1732 | theatre 1733 | thee 1734 | their 1735 | theirs 1736 | them 1737 | themselves 1738 | then 1739 | there 1740 | there is 1741 | There you go 1742 | there's 1743 | therefore 1744 | thermo- 1745 | these 1746 | they 1747 | thicken 1748 | thief 1749 | thine 1750 | thing 1751 | think 1752 | thirsty 1753 | this 1754 | those 1755 | thou 1756 | though 1757 | thought 1758 | thousand 1759 | through 1760 | throw at/to 1761 | thunder 1762 | thy 1763 | tight 1764 | till 1765 | time 1766 | time and tense 1767 | tired of 1768 | titles and names 1769 | tits 1770 | to 1771 | to begin with 1772 | to blame 1773 | to hear her talk, you'd think 1774 | to some / a great extent 1775 | to start with 1776 | to sum up 1777 | to tell the truth 1778 | today 1779 | tomato 1780 | tonight 1781 | too 1782 | 1022 1783 | too 1784 | too much/many 1785 | tooth 1786 | toothache 1787 | tornado 1788 | toward(s) 1789 | town 1790 | traffic 1791 | train 1792 | trans- 1793 | translate 1794 | travel 1795 | travelling 1796 | tri- 1797 | trip 1798 | troops 1799 | trouble 1800 | trousers 1801 | true 1802 | truths 1803 | try 1804 | tube 1805 | turn 1806 | turning verbs into nouns 1807 | TV 1808 | twat 1809 | twice as 1810 | two-part verbs 1811 | type of 1812 | typical 1813 | ugly 1814 | ultra- 1815 | un- 1816 | unable 1817 | uncountable 1818 | under- 1819 | under no circumstances 1820 | under 1821 | understand 1822 | understanding complicated sentences 1823 | unemployed 1824 | uni- 1825 | unimportant for 1826 | union 1827 | United States 1828 | university 1829 | unless 1830 | unlikely 1831 | unnecessary for 1832 | until 1833 | up 1834 | up to 1835 | upbringing 1836 | upward(s) 1837 | us 1838 | use 1839 | used 1840 | usual 1841 | usually 1842 | vacation 1843 | vanished 1844 | verb 1845 | verb complementation 1846 | verb forms in older English 1847 | verbs of movement 1848 | verbs with active and passive meanings 1849 | verbs with particles and prepositions 1850 | verbs with prepositions 1851 | 1023 1852 | verbs with two objects 1853 | vertebra 1854 | very 1855 | very much 1856 | vice- 1857 | view 1858 | vital 1859 | vital for 1860 | vocabulary 1861 | voice 1862 | volcano 1863 | volume 1864 | voyage 1865 | wait 1866 | waiter 1867 | wake 1868 | wank 1869 | wanna 1870 | want 1871 | -ward(s) 1872 | warm 1873 | warn 1874 | was 1875 | wash 1876 | watch 1877 | way 1878 | we 1879 | wear 1880 | weather 1881 | weekends 1882 | weekly 1883 | weigh 1884 | weight 1885 | welcome to 1886 | well 1887 | well-known 1888 | well-read 1889 | well worth 1890 | Welsh 1891 | were 1892 | wert 1893 | west 1894 | what 1895 | what ... like 1896 | what about ... ? 1897 | what else 1898 | what ever 1899 | what if 1900 | what is more 1901 | what on earth 1902 | What time ... ? 1903 | whatever 1904 | when 1905 | whenever 1906 | where 1907 | where's 1908 | whereas 1909 | wherever 1910 | whether 1911 | 1024 1912 | which 1913 | whichever 1914 | while 1915 | who 1916 | who ever 1917 | who on earth 1918 | whoever 1919 | whole 1920 | whom 1921 | whore 1922 | who's 1923 | whose 1924 | why 1925 | why ever 1926 | why on earth 1927 | Why should she? 1928 | wicked 1929 | wide 1930 | widen 1931 | widow 1932 | wife 1933 | will 1934 | willing for 1935 | win 1936 | wind 1937 | winter 1938 | wish 1939 | wishes 1940 | with 1941 | with reference to 1942 | without 1943 | wolf 1944 | woman 1945 | wonder 1946 | won't 1947 | word order 1948 | work 1949 | works 1950 | worshippers 1951 | worth 1952 | worthwhile 1953 | 1025 1954 | would 1955 | would like 1956 | would rather 1957 | Would you mind ... ? 1958 | wound 1959 | wreaths 1960 | wretched 1961 | write 1962 | written and spoken English 1963 | written English 1964 | wrong 1965 | -y 1966 | y'all 1967 | yard 1968 | ye 1969 | yearly 1970 | years old 1971 | yes 1972 | yet 1973 | you 1974 | You're welcome 1975 | young 1976 | your 1977 | Your health 1978 | yours 1979 | Yours faithfully 1980 | yourself 1981 | youse 1982 | youths 1983 | zero 1984 | -------------------------------------------------------------------------------- /火星词典.Link888.txt: -------------------------------------------------------------------------------- 1 | " 适用于快速手工添加链接词条 2 | " 词条格式:主词条(已有关键词) 链接词条 链接词条 3 | " 分隔符采用4个及以上的空格 4 | " 可以添加注释行,以 " 开头 5 | " 可以添加空行 6 | 7 | OPEU3Cover_0001 PEU OPEU 英语用法指南 牛津英语用法指南 8 | 9 | 汉英语言术语表及索引 从句 补语 10 | 11 | verbs, tense and aspect 动词 时态 12 | be, do, have and modal auxiliaries 动词 情态动词 助动词 13 | verbs: other points 动词 14 | verb 动词 15 | infinitives and participles 动词不定式 16 | link verbs 系动词 17 | participles 分词 18 | 19 | noun 名词 20 | attributive 定语 21 | predicative 表语 22 | OPEU3_0989 表语 23 | articles 冠词 定冠词 不定冠词 24 | 25 | prefixes 前缀 26 | suffixes 后缀 27 | 28 | sentence structure 句型 句子 29 | relative structures 关系从句 30 | negative structures 否定句 31 | questions 疑问句 32 | passives 被动句 33 | 34 | comparatives and superlatives 比较级 最高级 35 | -------------------------------------------------------------------------------- /火星词典.Pinyin.txt: -------------------------------------------------------------------------------- 1 | 0001 a 2 | 0001 a1 3 | 0002 a2 4 | 0002 a3 5 | 0002 a4 6 | 0002 a5 7 | 0002 ai 8 | 0002 ai1 9 | 0003 ai2 10 | 0004 ai3 11 | 0004 ai4 12 | 0006 an 13 | 0006 an1 14 | 0009 an3 15 | 0009 an4 16 | 0012 ang 17 | 0012 ang1 18 | 0012 ang2 19 | 0012 ang4 20 | 0013 ao 21 | 0013 ao1 22 | 0013 ao2 23 | 0014 ao3 24 | 0014 ao4 25 | 0016 ba 26 | 0016 ba1 27 | 0018 ba2 28 | 0019 ba3 29 | 0021 ba4 30 | 0022 ba5 31 | 0022 bai 32 | 0022 bai1 33 | 0023 bai2 34 | 0028 bai3 35 | 0031 bai4 36 | 0032 bai5 37 | 0032 ban 38 | 0032 ban1 39 | 0034 ban3 40 | 0036 ban4 41 | 0039 bang 42 | 0039 bang1 43 | 0040 bang3 44 | 0040 bang4 45 | 0041 bao 46 | 0041 bao1 47 | 0044 bao2 48 | 0044 bao3 49 | 0048 bao4 50 | 0052 bei 51 | 0052 bei1 52 | 0054 bei3 53 | 0056 bei4 54 | 0060 bei5 55 | 0060 ben 56 | 0060 ben1 57 | 0061 ben3 58 | 0063 ben4 59 | 0063 beng 60 | 0063 beng1 61 | 0064 beng2 62 | 0064 beng3 63 | 0064 beng4 64 | 0065 bi 65 | 0065 bi1 66 | 0065 bi2 67 | 0066 bi3 68 | 0070 bi4 69 | 0075 bian 70 | 0075 bian1 71 | 0078 bian3 72 | 0079 bian4 73 | 0079 bian5 74 | 0084 biao 75 | 0084 biao1 76 | 0086 biao3 77 | 0088 biao4 78 | 0088 bie 79 | 0088 bie1 80 | 0088 bie2 81 | 0090 bie3 82 | 0090 bie4 83 | 0090 bin 84 | 0090 bin1 85 | 0091 bin4 86 | 0091 bing 87 | 0091 bing1 88 | 0093 bing3 89 | 0094 bing4 90 | 0096 bo 91 | 0096 bo1 92 | 0099 bo2 93 | 0102 bo3 94 | 0102 bo4 95 | 0103 bo5 96 | 0103 bu 97 | 0103 bu1 98 | 0103 bu2 99 | 0103 bu3 100 | 0105 bu4 101 | 0117 ca 102 | 0117 ca1 103 | 0117 ca3 104 | 0117 ca4 105 | 0117 cai 106 | 0117 cai1 107 | 0117 cai2 108 | 0119 cai3 109 | 0121 cai4 110 | 0122 can 111 | 0122 can1 112 | 0124 can2 113 | 0125 can3 114 | 0126 can4 115 | 0126 cang 116 | 0126 cang1 117 | 0127 cang2 118 | 0128 cao 119 | 0128 cao1 120 | 0128 cao2 121 | 0129 cao3 122 | 0131 cao4 123 | 0131 ce 124 | 0131 ce4 125 | 0132 cei 126 | 0132 cei4 127 | 0132 cen 128 | 0132 cen1 129 | 0132 cen2 130 | 0132 ceng 131 | 0132 ceng1 132 | 0132 ceng2 133 | 0133 ceng4 134 | 0133 cha 135 | 0133 cha1 136 | 0135 cha2 137 | 0137 cha3 138 | 0138 cha4 139 | 0139 chai 140 | 0139 chai1 141 | 0140 chai2 142 | 0140 chai3 143 | 0140 chai4 144 | 0140 chan 145 | 0140 chan1 146 | 0141 chan2 147 | 0142 chan3 148 | 0144 chan4 149 | 0144 chang 150 | 0144 chang1 151 | 0145 chang2 152 | 0148 chang3 153 | 0150 chang4 154 | 0151 chao 155 | 0151 chao1 156 | 0154 chao2 157 | 0155 chao3 158 | 0155 chao4 159 | 0155 che 160 | 0155 che1 161 | 0157 che3 162 | 0158 che4 163 | 0158 chen 164 | 0158 chen1 165 | 0159 chen2 166 | 0162 chen3 167 | 0162 chen4 168 | 0163 chen5 169 | 0163 cheng 170 | 0163 cheng1 171 | 0164 cheng2 172 | 0171 cheng3 173 | 0171 cheng4 174 | 0171 chi 175 | 0171 chi1 176 | 0174 chi2 177 | 0176 chi3 178 | 0177 chi4 179 | 0178 chong 180 | 0178 chong1 181 | 0181 chong2 182 | 0183 chong3 183 | 0183 chong4 184 | 0183 chou 185 | 0183 chou1 186 | 0185 chou2 187 | 0186 chou3 188 | 0187 chou4 189 | 0187 chu 190 | 0187 chu1 191 | 0194 chu2 192 | 0195 chu3 193 | 0197 chu4 194 | 0198 chua 195 | 0198 chua1 196 | 0198 chuai 197 | 0198 chuai1 198 | 0198 chuai2 199 | 0198 chuai3 200 | 0198 chuai4 201 | 0199 chuan 202 | 0199 chuan1 203 | -------------------------------------------------------------------------------- /火星词典.Prefix.txt: -------------------------------------------------------------------------------- 1 | 0001 2 | 目录 3 | 0002 4 | 前言 5 | 0003 6 | 凡例 7 | 0004 8 | 0005 9 | 0006 10 | 0007 11 | 0008 12 | 火星文检索 13 | 0009 14 | 0010 15 | 0011 16 | 0012 17 | 0013 18 | -------------------------------------------------------------------------------- /火星词典.info.description.html: -------------------------------------------------------------------------------- 1 |

火星词典

2 |
3 |

这是看懂火星语必备的词典

4 |

blabla

5 |
6 |

Mdx created by VimVim 2020/08/12

7 | -------------------------------------------------------------------------------- /火星词典.info.title.html: -------------------------------------------------------------------------------- 1 | 火星词典 37th 2 | --------------------------------------------------------------------------------