diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/COPYING | 21 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-GPL2.txt | 339 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-LPPL1.3c.txt | 416 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/README | 3 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/README.md | 15 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/RELEASE_NOTES.md | 12 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/demo/color.tex | 14 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/demo/multiple-inheritance.tex | 16 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/description.html | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.pdf | bin | 269669 -> 233921 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.tex | 15 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pgf-umlcd/pgf-umlcd.sty | 353 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pgf-umlcd/tikzlibraryumlcd.code.tex | 402 |
13 files changed, 1243 insertions, 365 deletions
diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/COPYING b/Master/texmf-dist/doc/latex/pgf-umlcd/COPYING index 71917be32ee..6d137c2a21e 100644 --- a/Master/texmf-dist/doc/latex/pgf-umlcd/COPYING +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/COPYING @@ -1,14 +1,11 @@ This file is part of pgf-umlcd. -pgf-umlcd is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -pgf-umlcd is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Foobar. If not, see <http://www.gnu.org/licenses/>.
\ No newline at end of file +Copyright 2009-2020 Yuan Xu + +pgf-umlcd is licensed under the terms of the The LaTeX Project Public License (LPPL) 1.3c, or +alternatively under the terms of the General Public License (GPL) Version 2. + +The terms of each license can be found in the source repository: + +LaTeX Project Public License: doc/latex/pgf-umlcd/LICENSE-LPPL1.3c.txt +General Public License 2: doc/latex/pgf-umlcd/LICENSE-GPL2.txt diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-GPL2.txt b/Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-GPL2.txt new file mode 100644 index 00000000000..d159169d105 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-GPL2.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-LPPL1.3c.txt b/Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-LPPL1.3c.txt new file mode 100644 index 00000000000..22443139013 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/LICENSE-LPPL1.3c.txt @@ -0,0 +1,416 @@ +The LaTeX Project Public License +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +LPPL Version 1.3c 2008-05-04 + +Copyright 1999 2002-2008 LaTeX3 Project + Everyone is allowed to distribute verbatim copies of this + license document, but modification of it is not allowed. + + +PREAMBLE +======== + +The LaTeX Project Public License (LPPL) is the primary license under +which the LaTeX kernel and the base LaTeX packages are distributed. + +You may use this license for any work of which you hold the copyright +and which you wish to distribute. This license may be particularly +suitable if your work is TeX-related (such as a LaTeX package), but +it is written in such a way that you can use it even if your work is +unrelated to TeX. + +The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', +below, gives instructions, examples, and recommendations for authors +who are considering distributing their works under this license. + +This license gives conditions under which a work may be distributed +and modified, as well as conditions under which modified versions of +that work may be distributed. + +We, the LaTeX3 Project, believe that the conditions below give you +the freedom to make and distribute modified versions of your work +that conform with whatever technical specifications you wish while +maintaining the availability, integrity, and reliability of +that work. If you do not see how to achieve your goal while +meeting these conditions, then read the document `cfgguide.tex' +and `modguide.tex' in the base LaTeX distribution for suggestions. + + +DEFINITIONS +=========== + +In this license document the following terms are used: + + `Work' + Any work being distributed under this License. + + `Derived Work' + Any work that under any applicable law is derived from the Work. + + `Modification' + Any procedure that produces a Derived Work under any applicable + law -- for example, the production of a file containing an + original file associated with the Work or a significant portion of + such a file, either verbatim or with modifications and/or + translated into another language. + + `Modify' + To apply any procedure that produces a Derived Work under any + applicable law. + + `Distribution' + Making copies of the Work available from one person to another, in + whole or in part. Distribution includes (but is not limited to) + making any electronic components of the Work accessible by + file transfer protocols such as FTP or HTTP or by shared file + systems such as Sun's Network File System (NFS). + + `Compiled Work' + A version of the Work that has been processed into a form where it + is directly usable on a computer system. This processing may + include using installation facilities provided by the Work, + transformations of the Work, copying of components of the Work, or + other activities. Note that modification of any installation + facilities provided by the Work constitutes modification of the Work. + + `Current Maintainer' + A person or persons nominated as such within the Work. If there is + no such explicit nomination then it is the `Copyright Holder' under + any applicable law. + + `Base Interpreter' + A program or process that is normally needed for running or + interpreting a part or the whole of the Work. + + A Base Interpreter may depend on external components but these + are not considered part of the Base Interpreter provided that each + external component clearly identifies itself whenever it is used + interactively. Unless explicitly specified when applying the + license to the Work, the only applicable Base Interpreter is a + `LaTeX-Format' or in the case of files belonging to the + `LaTeX-format' a program implementing the `TeX language'. + + + +CONDITIONS ON DISTRIBUTION AND MODIFICATION +=========================================== + +1. Activities other than distribution and/or modification of the Work +are not covered by this license; they are outside its scope. In +particular, the act of running the Work is not restricted and no +requirements are made concerning any offers of support for the Work. + +2. You may distribute a complete, unmodified copy of the Work as you +received it. Distribution of only part of the Work is considered +modification of the Work, and no right to distribute such a Derived +Work may be assumed under the terms of this clause. + +3. You may distribute a Compiled Work that has been generated from a +complete, unmodified copy of the Work as distributed under Clause 2 +above, as long as that Compiled Work is distributed in such a way that +the recipients may install the Compiled Work on their system exactly +as it would have been installed if they generated a Compiled Work +directly from the Work. + +4. If you are the Current Maintainer of the Work, you may, without +restriction, modify the Work, thus creating a Derived Work. You may +also distribute the Derived Work without restriction, including +Compiled Works generated from the Derived Work. Derived Works +distributed in this manner by the Current Maintainer are considered to +be updated versions of the Work. + +5. If you are not the Current Maintainer of the Work, you may modify +your copy of the Work, thus creating a Derived Work based on the Work, +and compile this Derived Work, thus creating a Compiled Work based on +the Derived Work. + +6. If you are not the Current Maintainer of the Work, you may +distribute a Derived Work provided the following conditions are met +for every component of the Work unless that component clearly states +in the copyright notice that it is exempt from that condition. Only +the Current Maintainer is allowed to add such statements of exemption +to a component of the Work. + + a. If a component of this Derived Work can be a direct replacement + for a component of the Work when that component is used with the + Base Interpreter, then, wherever this component of the Work + identifies itself to the user when used interactively with that + Base Interpreter, the replacement component of this Derived Work + clearly and unambiguously identifies itself as a modified version + of this component to the user when used interactively with that + Base Interpreter. + + b. Every component of the Derived Work contains prominent notices + detailing the nature of the changes to that component, or a + prominent reference to another file that is distributed as part + of the Derived Work and that contains a complete and accurate log + of the changes. + + c. No information in the Derived Work implies that any persons, + including (but not limited to) the authors of the original version + of the Work, provide any support, including (but not limited to) + the reporting and handling of errors, to recipients of the + Derived Work unless those persons have stated explicitly that + they do provide such support for the Derived Work. + + d. You distribute at least one of the following with the Derived Work: + + 1. A complete, unmodified copy of the Work; + if your distribution of a modified component is made by + offering access to copy the modified component from a + designated place, then offering equivalent access to copy + the Work from the same or some similar place meets this + condition, even though third parties are not compelled to + copy the Work along with the modified component; + + 2. Information that is sufficient to obtain a complete, + unmodified copy of the Work. + +7. If you are not the Current Maintainer of the Work, you may +distribute a Compiled Work generated from a Derived Work, as long as +the Derived Work is distributed to all recipients of the Compiled +Work, and as long as the conditions of Clause 6, above, are met with +regard to the Derived Work. + +8. The conditions above are not intended to prohibit, and hence do not +apply to, the modification, by any method, of any component so that it +becomes identical to an updated version of that component of the Work as +it is distributed by the Current Maintainer under Clause 4, above. + +9. Distribution of the Work or any Derived Work in an alternative +format, where the Work or that Derived Work (in whole or in part) is +then produced by applying some process to that format, does not relax or +nullify any sections of this license as they pertain to the results of +applying that process. + +10. a. A Derived Work may be distributed under a different license + provided that license itself honors the conditions listed in + Clause 6 above, in regard to the Work, though it does not have + to honor the rest of the conditions in this license. + + b. If a Derived Work is distributed under a different license, that + Derived Work must provide sufficient documentation as part of + itself to allow each recipient of that Derived Work to honor the + restrictions in Clause 6 above, concerning changes from the Work. + +11. This license places no restrictions on works that are unrelated to +the Work, nor does this license place any restrictions on aggregating +such works with the Work by any means. + +12. Nothing in this license is intended to, or may be used to, prevent +complete compliance by all parties with all applicable laws. + + +NO WARRANTY +=========== + +There is no warranty for the Work. Except when otherwise stated in +writing, the Copyright Holder provides the Work `as is', without +warranty of any kind, either expressed or implied, including, but not +limited to, the implied warranties of merchantability and fitness for a +particular purpose. The entire risk as to the quality and performance +of the Work is with you. Should the Work prove defective, you assume +the cost of all necessary servicing, repair, or correction. + +In no event unless required by applicable law or agreed to in writing +will The Copyright Holder, or any author named in the components of the +Work, or any other party who may distribute and/or modify the Work as +permitted above, be liable to you for damages, including any general, +special, incidental or consequential damages arising out of any use of +the Work or out of inability to use the Work (including, but not limited +to, loss of data, data being rendered inaccurate, or losses sustained by +anyone as a result of any failure of the Work to operate with any other +programs), even if the Copyright Holder or said author or said other +party has been advised of the possibility of such damages. + + +MAINTENANCE OF THE WORK +======================= + +The Work has the status `author-maintained' if the Copyright Holder +explicitly and prominently states near the primary copyright notice in +the Work that the Work can only be maintained by the Copyright Holder +or simply that it is `author-maintained'. + +The Work has the status `maintained' if there is a Current Maintainer +who has indicated in the Work that they are willing to receive error +reports for the Work (for example, by supplying a valid e-mail +address). It is not required for the Current Maintainer to acknowledge +or act upon these error reports. + +The Work changes from status `maintained' to `unmaintained' if there +is no Current Maintainer, or the person stated to be Current +Maintainer of the work cannot be reached through the indicated means +of communication for a period of six months, and there are no other +significant signs of active maintenance. + +You can become the Current Maintainer of the Work by agreement with +any existing Current Maintainer to take over this role. + +If the Work is unmaintained, you can become the Current Maintainer of +the Work through the following steps: + + 1. Make a reasonable attempt to trace the Current Maintainer (and + the Copyright Holder, if the two differ) through the means of + an Internet or similar search. + + 2. If this search is successful, then enquire whether the Work + is still maintained. + + a. If it is being maintained, then ask the Current Maintainer + to update their communication data within one month. + + b. If the search is unsuccessful or no action to resume active + maintenance is taken by the Current Maintainer, then announce + within the pertinent community your intention to take over + maintenance. (If the Work is a LaTeX work, this could be + done, for example, by posting to comp.text.tex.) + + 3a. If the Current Maintainer is reachable and agrees to pass + maintenance of the Work to you, then this takes effect + immediately upon announcement. + + b. If the Current Maintainer is not reachable and the Copyright + Holder agrees that maintenance of the Work be passed to you, + then this takes effect immediately upon announcement. + + 4. If you make an `intention announcement' as described in 2b. above + and after three months your intention is challenged neither by + the Current Maintainer nor by the Copyright Holder nor by other + people, then you may arrange for the Work to be changed so as + to name you as the (new) Current Maintainer. + + 5. If the previously unreachable Current Maintainer becomes + reachable once more within three months of a change completed + under the terms of 3b) or 4), then that Current Maintainer must + become or remain the Current Maintainer upon request provided + they then update their communication data within one month. + +A change in the Current Maintainer does not, of itself, alter the fact +that the Work is distributed under the LPPL license. + +If you become the Current Maintainer of the Work, you should +immediately provide, within the Work, a prominent and unambiguous +statement of your status as Current Maintainer. You should also +announce your new status to the same pertinent community as +in 2b) above. + + +WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE +====================================================== + +This section contains important instructions, examples, and +recommendations for authors who are considering distributing their +works under this license. These authors are addressed as `you' in +this section. + +Choosing This License or Another License +---------------------------------------- + +If for any part of your work you want or need to use *distribution* +conditions that differ significantly from those in this license, then +do not refer to this license anywhere in your work but, instead, +distribute your work under a different license. You may use the text +of this license as a model for your own license, but your license +should not refer to the LPPL or otherwise give the impression that +your work is distributed under the LPPL. + +The document `modguide.tex' in the base LaTeX distribution explains +the motivation behind the conditions of this license. It explains, +for example, why distributing LaTeX under the GNU General Public +License (GPL) was considered inappropriate. Even if your work is +unrelated to LaTeX, the discussion in `modguide.tex' may still be +relevant, and authors intending to distribute their works under any +license are encouraged to read it. + +A Recommendation on Modification Without Distribution +----------------------------------------------------- + +It is wise never to modify a component of the Work, even for your own +personal use, without also meeting the above conditions for +distributing the modified component. While you might intend that such +modifications will never be distributed, often this will happen by +accident -- you may forget that you have modified that component; or +it may not occur to you when allowing others to access the modified +version that you are thus distributing it and violating the conditions +of this license in ways that could have legal implications and, worse, +cause problems for the community. It is therefore usually in your +best interest to keep your copy of the Work identical with the public +one. Many works provide ways to control the behavior of that work +without altering any of its licensed components. + +How to Use This License +----------------------- + +To use this license, place in each of the components of your work both +an explicit copyright notice including your name and the year the work +was authored and/or last substantially modified. Include also a +statement that the distribution and/or modification of that +component is constrained by the conditions in this license. + +Here is an example of such a notice and statement: + + %% pig.dtx + %% Copyright 2005 M. Y. Name + % + % This work may be distributed and/or modified under the + % conditions of the LaTeX Project Public License, either version 1.3 + % of this license or (at your option) any later version. + % The latest version of this license is in + % http://www.latex-project.org/lppl.txt + % and version 1.3 or later is part of all distributions of LaTeX + % version 2005/12/01 or later. + % + % This work has the LPPL maintenance status `maintained'. + % + % The Current Maintainer of this work is M. Y. Name. + % + % This work consists of the files pig.dtx and pig.ins + % and the derived file pig.sty. + +Given such a notice and statement in a file, the conditions +given in this license document would apply, with the `Work' referring +to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being +generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' +referring to any `LaTeX-Format', and both `Copyright Holder' and +`Current Maintainer' referring to the person `M. Y. Name'. + +If you do not want the Maintenance section of LPPL to apply to your +Work, change `maintained' above into `author-maintained'. +However, we recommend that you use `maintained', as the Maintenance +section was added in order to ensure that your Work remains useful to +the community even when you can no longer maintain and support it +yourself. + +Derived Works That Are Not Replacements +--------------------------------------- + +Several clauses of the LPPL specify means to provide reliability and +stability for the user community. They therefore concern themselves +with the case that a Derived Work is intended to be used as a +(compatible or incompatible) replacement of the original Work. If +this is not the case (e.g., if a few lines of code are reused for a +completely different task), then clauses 6b and 6d shall not apply. + + +Important Recommendations +------------------------- + + Defining What Constitutes the Work + + The LPPL requires that distributions of the Work contain all the + files of the Work. It is therefore important that you provide a + way for the licensee to determine which files constitute the Work. + This could, for example, be achieved by explicitly listing all the + files of the Work near the copyright notice of each file or by + using a line such as: + + % This work consists of all files listed in manifest.txt. + + in that place. In the absence of an unequivocal list it might be + impossible for the licensee to determine what is considered by you + to comprise the Work and, in such a case, the licensee would be + entitled to make reasonable conjectures as to which files comprise + the Work. + diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/README b/Master/texmf-dist/doc/latex/pgf-umlcd/README deleted file mode 100644 index 5cc6fbf3a01..00000000000 --- a/Master/texmf-dist/doc/latex/pgf-umlcd/README +++ /dev/null @@ -1,3 +0,0 @@ -Some LaTeX macros for UML Class Diagrams. -Home page of project: http://pgf-umlcd.googlecode.com/ -Please read pgf-umlcd-manual.pdf for more information. diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/README.md b/Master/texmf-dist/doc/latex/pgf-umlcd/README.md new file mode 100644 index 00000000000..6eff10fba28 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/README.md @@ -0,0 +1,15 @@ +# pgf-umlcd + +![CI](https://github.com/pgf-tikz/pgf/workflows/CI/badge.svg) + +Some LaTeX macros for UML Class Diagrams. + +Please go to the official repository at https://github.com/pgf-tikz/pgf-umlcd +or the official mailing list at https://tug.org/mailman/listinfo/pgf-tikz to +submit bug reports, request new features, etc. + +Please read pgf-umlcd-manual.pdf for more information. + +## License + +pgf-umlcd is released under the terms of both the LPPL v1.3c and the GPL v2. diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/RELEASE_NOTES.md b/Master/texmf-dist/doc/latex/pgf-umlcd/RELEASE_NOTES.md new file mode 100644 index 00000000000..818c0d327fd --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/RELEASE_NOTES.md @@ -0,0 +1,12 @@ +# Bug fixes + +This release contains mostly bugfixes but also some grand internal restructuring +of the package. However, the latter should not be visible to the end user. If +you encounter breakages please raise an issue on GitHub. + +- Patch for multiple inheritance +- Add color settings, thanks Maarten van Dessel +- Add support for static classes analogue to abstract classes +- Changed from above/below to auto in association et al. Added possibility of optional argument +- Move anchor=north before this umlcd style +- Start rewrite as a TikZ library diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/demo/color.tex b/Master/texmf-dist/doc/latex/pgf-umlcd/demo/color.tex new file mode 100644 index 00000000000..798f4ae1416 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/demo/color.tex @@ -0,0 +1,14 @@ +\renewcommand{\umltextcolor}{red} +\renewcommand{\umlfillcolor}{green} +\renewcommand{\umldrawcolor}{blue} + +\begin{tikzpicture} + \begin{class}[text width=8cm]{ClassName}{0,0} + \attribute{name : attribute type} + \attribute{name : attribute type = default value} + + \operation{name(parameter list) : type of value returned} + % virtual operation + \operation[0]{name(parameters list) : type of value returned} + \end{class} +\end{tikzpicture}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/demo/multiple-inheritance.tex b/Master/texmf-dist/doc/latex/pgf-umlcd/demo/multiple-inheritance.tex new file mode 100644 index 00000000000..d97c5140ef8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/demo/multiple-inheritance.tex @@ -0,0 +1,16 @@ +\begin{tikzpicture}%[show background grid] + \begin{class}[text width = 2cm]{TArg}{0, 0} + \end{class} + + \begin{class}[text width = 2cm]{TGroup}{5, 0} + \end{class} + + \begin{class}[text width = 2cm]{TProgInit}{10, 0} + \end{class} + + \begin{class}[text width = 2cm]{TProgram}{5, -2} + \inherit{TProgInit} + \inherit{TGroup} + \inherit{TArg} + \end{class} +\end{tikzpicture} diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/description.html b/Master/texmf-dist/doc/latex/pgf-umlcd/description.html new file mode 100644 index 00000000000..d077a85ed2f --- /dev/null +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/description.html @@ -0,0 +1,2 @@ +<p>Some LaTeX macros for UML Class Diagrams.<a data-cke-saved-href="/pkg/pgf" href="/pkg/pgf">pgf</a><br></p> + diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.pdf b/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.pdf Binary files differindex 7e6fea67e19..6f9d497a2f5 100644 --- a/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.pdf +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.pdf diff --git a/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.tex b/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.tex index 17a6edc6fdf..393d436b635 100644 --- a/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.tex +++ b/Master/texmf-dist/doc/latex/pgf-umlcd/pgf-umlcd-manual.tex @@ -68,7 +68,7 @@ keywordstyle=\color{blue} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \title{Drawing UML Class Diagram by using \texttt{pgf-umlcd}} \author{\href{mailto:xuyuan.cn@gmail.com}{Yuan Xu}} -\date{\today{}~(v0.2.1)} +\date{\today{}~(v0.3)} \maketitle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -112,6 +112,8 @@ The \lstinline|\umlnote| use the same syntax as tikz command \subsection{Inheritance and implement} \subsubsection{Inheritance} \demo{inheritance} +\subsubsection{Multiple Inheritance} +\demo{multiple-inheritance} \subsubsection{Implement an interface} \demo{implement-interface} @@ -132,6 +134,13 @@ The \lstinline|\umlnote| use the same syntax as tikz command \subsection{Package} \demo{package} +\section{Customization} +\subsection{Color settings} +The color of digram is defined by \lstinline|\umltextcolor|, \lstinline|\umldrawcolor| and \lstinline|\umlfillcolor|, such as: + +\demo{color} + + \section{Examples} \subsection{Abstract Factory} \example{abstract-factory} @@ -140,7 +149,9 @@ The \lstinline|\umlnote| use the same syntax as tikz command Many people contributed to \texttt{pgf-umlcd} by reporting problems, suggesting various improvements or submitting code. Here is a list of these people: \href{mailto:martin.quinson@loria.fr}{Martin Quinson}, -and \href{mailto:johannes_pieper@yahoo.de}{Johannes Pieper}. +\href{mailto:johannes_pieper@yahoo.de}{Johannes Pieper}, +\href{mailto:lwghsh@gmail.com}{sh w}, +and \href{mailto:maartenvandessel@hotmail.com}{Maarten van Dessel}. \end{document} %%% Local Variables: diff --git a/Master/texmf-dist/tex/latex/pgf-umlcd/pgf-umlcd.sty b/Master/texmf-dist/tex/latex/pgf-umlcd/pgf-umlcd.sty index 0062909b8d7..3d37e9b69e3 100644 --- a/Master/texmf-dist/tex/latex/pgf-umlcd/pgf-umlcd.sty +++ b/Master/texmf-dist/tex/latex/pgf-umlcd/pgf-umlcd.sty @@ -1,353 +1,10 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Start of pgf-umlcd.sty -% -% Some macros for UML Class Diagrams. -% Home page of project: http://pgf-umlcd.googlecode.com/ -% Author: Xu Yuan <xu@informatik.hu-berlin.de>, Humboldt University, Berlin -% Style from: http://www.ibm.com/developerworks/cn/rational/r-uml/ -% - +% SPDX-License-Identifier: GPL-2.0-only OR LPPL-1.3c \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{pgf-umlcd}[2011/10/01 v0.3dev Some LaTeX macros for -UML Class Diagrams.] +\ProvidesPackage{pgf-umlcd}[2022/05/22 v0.3 Some LaTeX macros for UML Class Diagrams.] \RequirePackage{tikz} +\usetikzlibrary{umlcd} -\usetikzlibrary{arrows,shapes.multipart,backgrounds,fit} -\tikzstyle{help lines}+=[blue!50,very thin,dashed] - -\newcommand{\umltextcolor}{black} -\newcommand{\umldrawcolor}{purple} -\newcommand{\umlfillcolor}{yellow!20} -\tikzstyle{umlcolor}=[color=\umldrawcolor,fill=\umlfillcolor,text=\umltextcolor] -\tikzstyle{umlcd style}=[umlcolor, >=angle 90] - -\tikzstyle{package}=[matrix, column sep=1mm, row sep=1cm, node distance=2cm] -\tikzstyle{packagename}=[rectangle, minimum height=2em] - -\tikzstyle{umlcd style implement line}=[color=\umldrawcolor, open triangle 45-,dashed] -\tikzstyle{objectline}=[color=\umldrawcolor, diamond->] -\tikzstyle{umlcd style inherit line}=[color=\umldrawcolor, open triangle 45-] -\tikzstyle{splitline}=[color=\umldrawcolor, dotted,font=\itshape] - -\tikzstyle{umlcd style class}=[rectangle split, rectangle split parts=3, -every text node part/.style={text centered}, -draw, minimum height=2em, umlcolor, minimum width=2cm, text width=5cm, -minimum height=1cm, node distance=2cm] - - -\tikzstyle{umlcd style dashed line}=[color=\umldrawcolor, >=angle 90,dashed] - -\tikzstyle{umlcd style school}=[] -\newif\ifschool\schoolfalse -\DeclareOption{school}{\tikzstyle{umlcd style school}=[rounded corners] \schooltrue} -\newif\ifsimplified\simplifiedfalse -\DeclareOption{simplified}{\simplifiedtrue} +\DeclareOption{school}{\tikzset{umlcd style school/.style={rounded corners}}\pgfumlcd@schooltrue} +\DeclareOption{simplified}{\pgfumlcd@simplifiedtrue} \ProcessOptions\relax - - -% declare layers -\pgfdeclarelayer{background} -\pgfdeclarelayer{connectionlayers} -\pgfsetlayers{background,connectionlayers,main} - -\newcounter{umlcdClassAttributesNum} -\newcounter{umlcdClassOperationsNum} -\newcounter{umlcdClassAbstractClassNum} -\newcounter{umlcdClassInterfaceNum} -\newcounter{umlcdClassSplitPartNum} - -\def\umlcdPackageFit{} - -\newenvironment{class}[3][]% -{ -\begin{classAndInterfaceCommon}{#1}{#2}{#3} -}% -{\calcuateNumberOfParts{} -\node[this umlcd style, anchor=north] (\umlcdClassName) at (\umlcdClassPos) - {\textbf{\umlcdClassName} -\insertAttributesAndOperations{} -}; - -\end{classAndInterfaceCommon} -} - -\newenvironment{interface}[3][]% -{ -\begin{classAndInterfaceCommon}{#1}{#2}{#3} -}% -{\calcuateNumberOfParts{} -\node[this umlcd style, anchor=north] (\umlcdClassName) at (\umlcdClassPos) - {$<<$interface$>>$ \\ \textbf{\umlcdClassName} -\insertAttributesAndOperations{} -}; - -\end{classAndInterfaceCommon} -} - -\newenvironment{abstractclass}[3][]% -{ -\begin{classAndInterfaceCommon}{#1}{#2}{#3} -}% -{\calcuateNumberOfParts{} -\node[this umlcd style, anchor=north] (\umlcdClassName) at (\umlcdClassPos) - {$<<$abstract$>>$ \\ \textbf{\umlcdClassName} -\insertAttributesAndOperations{} -}; - -\end{classAndInterfaceCommon} -} - -% TODO: here the name of \umlcdClassName and \umlObjectName should be -% switched, it is only for reusing \classAndInterfaceCommon at the -% moment. -\newenvironment{object}[3][]% -{ -\begin{classAndInterfaceCommon}{#1}{#2}{#3} -\def\@instanceOf{} -\def\@@instanceOf{} -}% -{ - % customized - \ifsimplified - \calcuateNumberOfParts{} - \else - \ifnum\c@umlcdClassOperationsNum>0 - \setcounter{umlcdClassSplitPartNum}{3} - \protected@xdef\umlcdSplitPart{3} - \else - \setcounter{umlcdClassSplitPartNum}{2} - \protected@xdef\umlcdSplitPart{2} - \fi - \fi - - \ifx\@instanceOf\@@instanceOf - \def\umldObjectName{\umlcdClassName} - \else - \def\umldObjectName{\umlcdClassName : \@instanceOf} - \fi - -\node[this umlcd style, anchor=north, umlcd style school] (\umlcdClassName) at (\umlcdClassPos) - { \ifschool - \textbf{\umldObjectName} - \else - \underline{\textbf{\umldObjectName}} - \fi - \insertAttributesAndOperations{} -}; - -\end{classAndInterfaceCommon} -} - -\newcommand*{\insertAttributesAndOperations} -{ - \ifnum\c@umlcdClassSplitPartNum>1 - \nodepart{second} - \fi - \umlcdClassAttributes - \ifnum\c@umlcdClassSplitPartNum>2 - \nodepart{third} - \fi - \umlcdClassOperations -} - -\newcommand*{\calcuateNumberOfParts} -{ - % calcuate the number of parts - \ifsimplified - \setcounter{umlcdClassSplitPartNum}{1} - \ifnum\c@umlcdClassAttributesNum>0 - \stepcounter{umlcdClassSplitPartNum} - \fi - \ifnum\c@umlcdClassOperationsNum>0 - \stepcounter{umlcdClassSplitPartNum} - \fi - \else - \setcounter{umlcdClassSplitPartNum}{3}% three parts by default - \fi - - \protected@xdef\umlcdSplitPart{3} - \ifnum\c@umlcdClassSplitPartNum=1 - \protected@xdef\umlcdSplitPart{1} - \fi - \ifnum\c@umlcdClassSplitPartNum=2 - \protected@xdef\umlcdSplitPart{2} - \fi -} - -\newenvironment*{classAndInterfaceCommon}[3] -{ -\def\umlcdClassName{#2}% -\def\umlcdClassPos{#3} -\def\umlcdClassAttributes{}% -\def\umlcdClassOperations{}% -\def\umlcdClassAbstractClass{}% -\def\umlcdClassInterface{}% -\setcounter{umlcdClassAttributesNum}{0}% -\setcounter{umlcdClassOperationsNum}{0}% -\setcounter{umlcdClassAbstractClassNum}{0}% -\setcounter{umlcdClassInterfaceNum}{0}% -\tikzstyle{this umlcd style}=[umlcd style class, rectangle split - parts=\umlcdSplitPart, #1] -}% -{ -%% connections -\begin{pgfonlayer}{connectionlayers} -\ifnum\c@umlcdClassAbstractClassNum>0 -\foreach \c in {\umlcdClassAbstractClass}{ - \draw [umlcd style inherit line] (\c) -- (\umlcdClassName); -} -\fi - -\ifnum\c@umlcdClassInterfaceNum>0 -\foreach \c in {\umlcdClassInterface}{ - \draw [umlcd style implement line] (\c) -- (\umlcdClassName); -} -\fi -\end{pgfonlayer} - -%% add to fit -\let\umlcdPackageFitOld\umlcdPackageFit -\protected@xdef\umlcdPackageFit{\umlcdPackageFitOld (\umlcdClassName)} -} - -\newcommand{\attribute}[1]{% -\ifnum\c@umlcdClassAttributesNum=0 -\protected@xdef\umlcdClassAttributes{#1} -\else -\let\umlcdClassAttributesOld\umlcdClassAttributes -\protected@xdef\umlcdClassAttributes{\umlcdClassAttributesOld \ \newline - #1} -\fi -\stepcounter{umlcdClassAttributesNum} -} - -\newcommand{\operation}[2][1]{% -\stepcounter{umlcdClassOperationsNum} - -\def\virtualoperation{#2} -\ifnum0=#1 -\def\virtualoperation{\textit{#2}} -\fi - -\ifnum\c@umlcdClassOperationsNum=1 -\protected@xdef\umlcdClassOperations{\virtualoperation} -\else -\let\umlcdClassOperationsOld\umlcdClassOperations -\protected@xdef\umlcdClassOperations{\umlcdClassOperationsOld \ \newline - \virtualoperation} -\fi -} - -\newcommand{\inherit}[1] -{ -\stepcounter{umlcdClassAbstractClassNum} -\ifnum\c@umlcdClassAbstractClassNum=1 -\protected@xdef\umlcdClassAbstractClass{#1} -\else -\let\umlcdClassAbstractClassOld\umlcdClassAbstractClass -\protected@xdef\umlcdClassAbstractClass{\umlcdClassAbstractClassOld, - #1} -\fi -} - -\newcommand{\implement}[1] -{ -\stepcounter{umlcdClassInterfaceNum} -\ifnum\c@umlcdClassInterfaceNum=1 -\protected@xdef\umlcdClassInterface{#1} -\else -\let\umlcdClassInterfaceOld\umlcdClassInterface -\protected@xdef\umlcdClassInterface{\umlcdClassInterfaceOld, - #1} -\fi -} - -\newcommand{\instanceOf}[1]{\def\@instanceOf{#1}} - -\newcommand{\association}[6]{ -\draw [umlcd style] (#1) -- (#4) -node[near start, above]{#2} -node[near start, below]{#3} -node[near end, above]{#5} -node[near end, below]{#6}; -} - -\newcommand{\unidirectionalAssociation}[4]{ -\draw [umlcd style, ->] (#1) -- (#4) -node[near end, above]{#2} -node[near end, below]{#3}; -} - -\newcommand{\aggregation}[4] -{ -\draw[umlcd style, open diamond->] (#1) -- (#4) -node[near end, above]{#2} -node[near end, below]{#3}; -} - -\newcommand{\composition}[4] -{ -\draw[umlcd style, fill=\umldrawcolor, diamond->] (#1) -- (#4) -node[near end, above]{#2} -node[near end, below]{#3}; -} - -\newenvironment{package}[1]{ -\def\umlcdPackageFit{} -\def\umlcdPackageName{#1} -}{ - \begin{pgfonlayer}{background} - \node[umlcd style, draw, inner sep=0.5cm, fit = \umlcdPackageFit] (\umlcdPackageName) {}; - \node[umlcd style, draw, outer ysep=-0.5, anchor=south west] (\umlcdPackageName caption) at - (\umlcdPackageName.north west) {\umlcdPackageName}; - \end{pgfonlayer} -} - -\newcommand{\switchUmlcdSchool}{ - \ifschool - \tikzstyle{umlcd style school}=[] - \schoolfalse - \else - \tikzstyle{umlcd style school}=[rounded corners] - \schooltrue - \fi -} - -\pgfdeclareshape{umlcdnote}{ -\inheritsavedanchors[from=rectangle] % this is nearly a rectangle -\inheritanchorborder[from=rectangle] -\inheritanchor[from=rectangle]{center} -\inheritanchor[from=rectangle]{north} -\inheritanchor[from=rectangle]{south} -\inheritanchor[from=rectangle]{west} -\inheritanchor[from=rectangle]{east} -% ... and possibly more -\backgroundpath{% this is new -% store lower right in xa/ya and upper right in xb/yb -\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y -\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y -% compute corner of flipped page -\pgf@xc=\pgf@xb \advance\pgf@xc by-10pt % this should be a parameter -\pgf@yc=\pgf@yb \advance\pgf@yc by-10pt -% construct main path -\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} -\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} -\pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yb}} -\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yc}} -\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} -\pgfpathclose -% add little corner -\pgfpathmoveto{\pgfpoint{\pgf@xc}{\pgf@yb}} -\pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yc}} -\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yc}} -\pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yc}} -} -} - -\newcommand{\umlnote}[1][]{ - \node[umlcd style, anchor=north, draw,shape=umlcdnote, text width=4cm, #1] -} - -%%% End of pgf-umlcd.sty -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/pgf-umlcd/tikzlibraryumlcd.code.tex b/Master/texmf-dist/tex/latex/pgf-umlcd/tikzlibraryumlcd.code.tex new file mode 100644 index 00000000000..63b05580f7e --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf-umlcd/tikzlibraryumlcd.code.tex @@ -0,0 +1,402 @@ +% SPDX-License-Identifier: GPL-2.0-only OR LPPL-1.3c + +\usetikzlibrary{arrows,shapes.multipart,backgrounds,fit} + +% +% Utilities +% + +\def\pgfumlcd@ifx#1#2{% + \ifx#1#2% + \expandafter\pgfutil@firstoftwo + \else + \expandafter\pgfutil@secondoftwo + \fi} + +\def\pgfumlcd@ifdim#1#2#3{% + \ifdim\dimexpr#1\relax#2\dimexpr#3\relax + \expandafter\pgfutil@firstoftwo + \else + \expandafter\pgfutil@secondoftwo + \fi} + +\def\pgfumlcd@ifnum#1#2#3{% + \ifnum\numexpr#1\relax#2\numexpr#3\relax + \expandafter\pgfutil@firstoftwo + \else + \expandafter\pgfutil@secondoftwo + \fi} + +\def\pgfumlcd@newif#1{% + \csname newif\expandafter\endcsname\csname ifpgfumlcd@#1\endcsname + \expandafter\def\csname pgfumlcd@if#1\expandafter\endcsname\expandafter{% + \csname ifpgfumlcd@#1\endcsname + \expandafter\pgfutil@firstoftwo + \else + \expandafter\pgfutil@secondoftwo + \fi}% +} + +\expandafter\let\expandafter\pgfumlcd@xdef\csname\ifcsname protected@xdef\endcsname protected@\fi xdef\endcsname + +\def\umltextcolor{black} +\def\umldrawcolor{purple} +\def\umlfillcolor{yellow!20} + +\tikzset{% + help lines/.append style = {blue!50,very thin,dashed}, + umlcolor/.style = {color=\umldrawcolor,fill=\umlfillcolor,text=\umltextcolor}, + umlcd style/.style = {umlcolor, >=angle 90}, + package/.style = {matrix, column sep=1mm, row sep=1cm, node distance=2cm}, + packagename/.style = {rectangle, minimum height=2em}, + umlcd style implement line/.style = {color=\umldrawcolor, open triangle 45-,dashed}, + objectline/.style = {color=\umldrawcolor, diamond->}, + umlcd style inherit line/.style = {color=\umldrawcolor, open triangle 45-}, + splitline/.style = {color=\umldrawcolor, dotted,font=\pgfutil@font@itshape}, + umlcd style class/.style = {rectangle split, rectangle split parts=3, + every text node part/.style={text centered}, + draw, minimum height=2em, umlcolor, minimum width=2cm, text width=5cm, + minimum height=1cm, node distance=2cm}, + umlcd style dashed line/.style = {color=\umldrawcolor, >=angle 90,dashed}, + umlcd style school/.style = {}, +} + +\pgfumlcd@newif{school} +\pgfumlcd@newif{simplified} + +% declare layers +\pgfdeclarelayer{background} +\pgfdeclarelayer{connectionlayers} +\pgfsetlayers{background,connectionlayers,main} + +\newcount\pgfumlcd@ClassAttributesNum +\newcount\pgfumlcd@ClassOperationsNum +\newcount\pgfumlcd@ClassAbstractClassNum +\newcount\pgfumlcd@ClassInterfaceNum +\newcount\pgfumlcd@ClassSplitPartNum + +\def\pgfumlcd@PackageFit{} + +\def\pgfumlcd@class{\pgfutil@ifnextchar[{\pgfumlcd@class@}{\pgfumlcd@class@[]}} +\def\pgfumlcd@class@[#1]#2#3{% + \pgfumlcd@classAndInterfaceCommon{#1}{#2}{#3}% +} +\def\endpgfumlcd@class{% + \pgfumlcd@calcuateNumberOfParts{}% + \node[anchor=north,this umlcd style] (\pgfumlcd@ClassName) at (\pgfumlcd@ClassPos) {% + {\pgfutil@font@bfseries\pgfumlcd@ClassName} % <-- explicit space + \pgfumlcd@insertAttributesAndOperations{}% + };% + \endpgfumlcd@classAndInterfaceCommon +} + +\def\pgfumlcd@interface{\pgfutil@ifnextchar[{\pgfumlcd@interface@}{\pgfumlcd@interface@[]}} +\def\pgfumlcd@interface@[#1]#2#3{% + \pgfumlcd@classAndInterfaceCommon{#1}{#2}{#3}% +} +\def\endpgfumlcd@interface{% + \pgfumlcd@calcuateNumberOfParts{}% + \node[anchor=north,this umlcd style] (\pgfumlcd@ClassName) at (\pgfumlcd@ClassPos) {% + $<<$interface$>>$\break + {\pgfutil@font@bfseries\pgfumlcd@ClassName} % <-- explicit space + \pgfumlcd@insertAttributesAndOperations{}% + };% + \endpgfumlcd@classAndInterfaceCommon +} + +\def\pgfumlcd@abstractclass{\pgfutil@ifnextchar[{\pgfumlcd@abstractclass@}{\pgfumlcd@abstractclass@[]}} +\def\pgfumlcd@abstractclass@[#1]#2#3{% + \pgfumlcd@classAndInterfaceCommon{#1}{#2}{#3}% +} +\def\endpgfumlcd@abstractclass{% + \pgfumlcd@calcuateNumberOfParts{} + \node[anchor=north,this umlcd style] (\pgfumlcd@ClassName) at (\pgfumlcd@ClassPos) {% + $<<$abstract$>>$\break + {\pgfutil@font@bfseries\pgfumlcd@ClassName} % <-- explicit space + \pgfumlcd@insertAttributesAndOperations{}% + };% + \endpgfumlcd@classAndInterfaceCommon +} + +\def\pgfumlcd@staticclass{\pgfutil@ifnextchar[{\pgfumlcd@staticclass@}{\pgfumlcd@staticclass@[]}} +\def\pgfumlcd@staticclass@[#1]#2#3{% + \pgfumlcd@classAndInterfaceCommon{#1}{#2}{#3}% +} +\def\endpgfumlcd@staticclass{% + \pgfumlcd@calcuateNumberOfParts{} + \node[anchor=north,this umlcd style] (\pgfumlcd@ClassName) at (\pgfumlcd@ClassPos) {% + $<<$static$>>$\break + {\pgfutil@font@bfseries\pgfumlcd@ClassName} % <-- explicit space + \pgfumlcd@insertAttributesAndOperations{}% + };% + \endpgfumlcd@classAndInterfaceCommon +} + +% TODO: here the name of \pgfumlcd@ClassName and \umlObjectName should be +% switched, it is only for reusing \classAndInterfaceCommon at the +% moment. +\def\pgfumlcd@object{\pgfutil@ifnextchar[{\pgfumlcd@object@}{\pgfumlcd@object@[]}} +\def\pgfumlcd@object@[#1]#2#3{% + \pgfumlcd@classAndInterfaceCommon{#1}{#2}{#3}% + \def\pgfumlcd@@instanceOf{} +} +\def\endpgfumlcd@object{% + % customized + \pgfumlcd@ifsimplified{% + \pgfumlcd@calcuateNumberOfParts{}% + }{% + \pgfumlcd@ifnum{\pgfumlcd@ClassOperationsNum}{>}{0}{% + \pgfumlcd@ClassSplitPartNum=3 + \pgfumlcd@xdef\pgfumlcd@SplitPart{3}% + }{% + \pgfumlcd@ClassSplitPartNum=2 + \pgfumlcd@xdef\pgfumlcd@SplitPart{2}% + }% + }% + \pgfumlcd@ifx{\pgfumlcd@@instanceOf}{\pgfutil@empty}{% + \def\pgfumlcd@ObjectName{\pgfumlcd@ClassName}% + }{% + \def\pgfumlcd@ObjectName{\pgfumlcd@ClassName : \pgfumlcd@@instanceOf}% + }% + \node[anchor=north,this umlcd style,umlcd style school] (\pgfumlcd@ClassName) at (\pgfumlcd@ClassPos) {% + \pgfumlcd@ifschool{% + {\pgfutil@font@bfseries\pgfumlcd@ObjectName}% + }{% + \underline{\pgfutil@font@bfseries\pgfumlcd@ObjectName}% + } % <-- explicit space + \pgfumlcd@insertAttributesAndOperations{}% + };% + \endpgfumlcd@classAndInterfaceCommon +} + +\def\pgfumlcd@insertAttributesAndOperations{% + \pgfumlcd@ifnum{\pgfumlcd@ClassSplitPartNum}{>}{1}{% + \nodepart{second}% + }{}% + \pgfumlcd@ClassAttributes + \pgfumlcd@ifnum{\pgfumlcd@ClassSplitPartNum}{>}{2}{% + \nodepart{third}% + }{}% + \pgfumlcd@ClassOperations +} + +\def\pgfumlcd@calcuateNumberOfParts{% + % calcuate the number of parts + \pgfumlcd@ifsimplified{% + \pgfumlcd@ClassSplitPartNum=1 + \pgfumlcd@ifnum{\pgfumlcd@ClassAttributesNum}{>}{0}{% + \advance\pgfumlcd@ClassSplitPartNum by 1 + }{}% + \pgfumlcd@ifnum{\pgfumlcd@ClassOperationsNum}{>}{0}{% + \advance\pgfumlcd@ClassSplitPartNum by 1 + }{}% + }{% + \pgfumlcd@ClassSplitPartNum=3 % three parts by default + }% + \pgfumlcd@xdef\pgfumlcd@SplitPart{3} + \pgfumlcd@ifnum{\pgfumlcd@ClassSplitPartNum}{=}{1}{% + \pgfumlcd@xdef\pgfumlcd@SplitPart{1}% + }{}% + \pgfumlcd@ifnum{\pgfumlcd@ClassSplitPartNum}{=}{2}{% + \pgfumlcd@xdef\pgfumlcd@SplitPart{2}% + }{}% +} + +\def\pgfumlcd@classAndInterfaceCommon#1#2#3{% + \def\pgfumlcd@ClassName{#2}% + \def\pgfumlcd@ClassPos{#3} + \def\pgfumlcd@ClassAttributes{}% + \def\pgfumlcd@ClassOperations{}% + \def\pgfumlcd@ClassAbstractClass{}% + \def\pgfumlcd@ClassInterface{}% + \pgfumlcd@ClassAttributesNum=0 + \pgfumlcd@ClassOperationsNum=0 + \pgfumlcd@ClassAbstractClassNum=0 + \pgfumlcd@ClassInterfaceNum=0 + \tikzset{% + this umlcd style/.style={% + umlcd style class,% + rectangle split parts=\pgfumlcd@SplitPart,% + #1}% + } +}% +\def\endpgfumlcd@classAndInterfaceCommon{% + %% connections + \pgfonlayer{connectionlayers}% + \pgfumlcd@ifnum{\pgfumlcd@ClassAbstractClassNum}{>}{0}{% + \foreach \c in \pgfumlcd@ClassAbstractClass {% + \draw [umlcd style inherit line] (\c) -- (\pgfumlcd@ClassName);% + }% + }{}% + \pgfumlcd@ifnum{\pgfumlcd@ClassInterfaceNum}{>}{0}{% + \foreach \c in \pgfumlcd@ClassInterface {% + \draw [umlcd style implement line] (\c) -- (\pgfumlcd@ClassName);% + }% + }{}% + \endpgfonlayer + %% add to fit + \let\pgfumlcd@PackageFitOld\pgfumlcd@PackageFit + \pgfumlcd@xdef\pgfumlcd@PackageFit{\pgfumlcd@PackageFitOld (\pgfumlcd@ClassName)}% +} + +\def\pgfumlcd@attribute#1{% + \pgfumlcd@ifnum{\pgfumlcd@ClassAttributesNum}{=}{0}{% + \pgfumlcd@xdef\pgfumlcd@ClassAttributes{#1}% + }{% + \let\pgfumlcd@ClassAttributesOld\pgfumlcd@ClassAttributes + \pgfumlcd@xdef\pgfumlcd@ClassAttributes{\pgfumlcd@ClassAttributesOld\break#1}% + }% + \advance\pgfumlcd@ClassAttributesNum by 1 +} + +\def\pgfumlcd@operation{\pgfutil@ifnextchar[{\pgfumlcd@operation@}{\pgfumlcd@operation@[1]}} +\def\pgfumlcd@operation@[#1]#2{% + \advance\pgfumlcd@ClassOperationsNum by 1 + \def\pgfumlcd@virtualoperation{#2} + \pgfumlcd@ifnum{0}{=}{#1}{% + \def\pgfumlcd@virtualoperation{{\pgfutil@font@itshape#2}}% + }{}% + \pgfumlcd@ifnum{\pgfumlcd@ClassOperationsNum}{=}{1}{% + \pgfumlcd@xdef\pgfumlcd@ClassOperations{\pgfumlcd@virtualoperation}% + }{% + \let\pgfumlcd@ClassOperationsOld\pgfumlcd@ClassOperations + \pgfumlcd@xdef\pgfumlcd@ClassOperations{\pgfumlcd@ClassOperationsOld\break\pgfumlcd@virtualoperation}% + }% +} + +\def\pgfumlcd@inherit#1{% + \advance\pgfumlcd@ClassAbstractClassNum by 1 + \pgfumlcd@ifnum{\pgfumlcd@ClassAbstractClassNum}{=}{1}{% + \pgfumlcd@xdef\pgfumlcd@ClassAbstractClass{#1}% + }{% + \let\pgfumlcd@ClassAbstractClassOld\pgfumlcd@ClassAbstractClass + \pgfumlcd@xdef\pgfumlcd@ClassAbstractClass{\pgfumlcd@ClassAbstractClassOld, #1}% + }% +} + +\def\pgfumlcd@implement#1{% + \advance\pgfumlcd@ClassInterfaceNum by 1 + \pgfumlcd@ifnum{\pgfumlcd@ClassInterfaceNum}{=}{1}{% + \pgfumlcd@xdef\pgfumlcd@ClassInterface{#1} + }{% + \let\pgfumlcd@ClassInterfaceOld\pgfumlcd@ClassInterface + \pgfumlcd@xdef\pgfumlcd@ClassInterface{\pgfumlcd@ClassInterfaceOld, #1} + }% +} + +\def\pgfumlcd@instanceOf#1{\def\pgfumlcd@@instanceOf{#1}} + +\def\pgfumlcd@association{\pgfutil@ifnextchar[{\pgfumlcd@association@}{\pgfumlcd@association@[]}} +\def\pgfumlcd@association@[#1]#2#3#4#5#6#7{% + \draw [umlcd style,#1] (#2) -- (#5) + node[near start, auto]{#3} + node[near start, auto, swap]{#4} + node[near end, auto]{#6} + node[near end, auto, swap]{#7};% +} + +\def\pgfumlcd@unidirectionalAssociation{% + \pgfutil@ifnextchar[{\pgfumlcd@unidirectionalAssociation@}{\pgfumlcd@unidirectionalAssociation@[]}} +\def\pgfumlcd@unidirectionalAssociation@[#1]#2#3#4#5{% + \draw [umlcd style,->,#1] (#2) -- (#5) + node[near end, auto]{#3} + node[near end, auto, swap]{#4};% +} + +\def\pgfumlcd@aggregation{\pgfutil@ifnextchar[{\pgfumlcd@aggregation@}{\pgfumlcd@aggregation@[]}} +\def\pgfumlcd@aggregation@[#1]#2#3#4#5{% + \draw[umlcd style,open diamond->,#1] (#2) -- (#5) + node[near end, auto]{#3} + node[near end, auto, swap]{#4};% +} + +\def\pgfumlcd@composition{\pgfutil@ifnextchar[{\pgfumlcd@composition@}{\pgfumlcd@composition@[]}} +\def\pgfumlcd@composition@[#1]#2#3#4#5{% + \draw[umlcd style,fill=\umldrawcolor,diamond->,#1] (#2) -- (#5) + node[near end, auto]{#3} + node[near end, auto, swap]{#4};% +} + +\def\pgfumlcd@package#1{% + \def\pgfumlcd@PackageFit{}% + \def\pgfumlcd@PackageName{#1}% +} +\def\endpgfumlcd@package{% + \pgfonlayer{background}% + \node[umlcd style,draw,inner sep=0.5cm,fit=\pgfumlcd@PackageFit] (\pgfumlcd@PackageName) {};% + \node[umlcd style,draw,outer ysep=-0.5,anchor=south west] (\pgfumlcd@PackageName caption) at + (\pgfumlcd@PackageName.north west) {\pgfumlcd@PackageName};% + \endpgfonlayer +} + +\def\switchUmlcdSchool{% + \pgfumlcd@ifschool{% + \tikzset{umlcd style school/.style={}}% + \pgfumlcd@schoolfalse + }{% + \tikzset{umlcd style school/.style = {rounded corners}}% + \pgfumlcd@schooltrue + }% +} + +\pgfdeclareshape{umlcdnote}{% + \inheritsavedanchors[from=rectangle]% this is nearly a rectangle + \inheritanchorborder[from=rectangle]% + \inheritanchor[from=rectangle]{center}% + \inheritanchor[from=rectangle]{north}% + \inheritanchor[from=rectangle]{south}% + \inheritanchor[from=rectangle]{west}% + \inheritanchor[from=rectangle]{east}% + % ... and possibly more + \backgroundpath{% this is new + % store lower right in xa/ya and upper right in xb/yb + \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y + % compute corner of flipped page + \pgf@xc=\pgf@xb \advance\pgf@xc by-10pt % this should be a parameter + \pgf@yc=\pgf@yb \advance\pgf@yc by-10pt + % construct main path + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}% + \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}% + \pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yb}}% + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yc}}% + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}% + \pgfpathclose + % add little corner + \pgfpathmoveto{\pgfpoint{\pgf@xc}{\pgf@yb}}% + \pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yc}}% + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yc}}% + \pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yc}}% + }% +} + +\def\pgfumlcd@umlnote{\pgfutil@ifnextchar[{\pgfumlcd@umlnote@}{\pgfumlcd@umlnote@[]}} +\def\pgfumlcd@umlnote@[#1]{% + \node[anchor=north,draw,shape=umlcdnote,text width=4cm,umlcd style,#1]% +} + +\tikzaddtikzonlycommandshortcutlet{\class}{\pgfumlcd@class} +\tikzaddtikzonlycommandshortcutlet{\endclass}{\endpgfumlcd@class} +\tikzaddtikzonlycommandshortcutlet{\interface}{\pgfumlcd@interface} +\tikzaddtikzonlycommandshortcutlet{\endinterface}{\endpgfumlcd@interface} +\tikzaddtikzonlycommandshortcutlet{\abstractclass}{\pgfumlcd@abstractclass} +\tikzaddtikzonlycommandshortcutlet{\endabstractclass}{\endpgfumlcd@abstractclass} +\tikzaddtikzonlycommandshortcutlet{\staticclass}{\pgfumlcd@staticclass} +\tikzaddtikzonlycommandshortcutlet{\endstaticclass}{\endpgfumlcd@staticclass} +\tikzaddtikzonlycommandshortcutlet{\object}{\pgfumlcd@object} +\tikzaddtikzonlycommandshortcutlet{\endobject}{\endpgfumlcd@object} +\tikzaddtikzonlycommandshortcutlet{\classAndInterfaceCommon}{\pgfumlcd@classAndInterfaceCommon} +\tikzaddtikzonlycommandshortcutlet{\endclassAndInterfaceCommon}{\endpgfumlcd@classAndInterfaceCommon} +\tikzaddtikzonlycommandshortcutlet{\package}{\pgfumlcd@package} +\tikzaddtikzonlycommandshortcutlet{\endpackage}{\endpgfumlcd@package} + +\tikzaddtikzonlycommandshortcutlet{\attribute}{\pgfumlcd@attribute} +\tikzaddtikzonlycommandshortcutlet{\operation}{\pgfumlcd@operation} +\tikzaddtikzonlycommandshortcutlet{\inherit}{\pgfumlcd@inherit} +\tikzaddtikzonlycommandshortcutlet{\implement}{\pgfumlcd@implement} +\tikzaddtikzonlycommandshortcutlet{\instanceOf}{\pgfumlcd@instanceOf} +\tikzaddtikzonlycommandshortcutlet{\association}{\pgfumlcd@association} +\tikzaddtikzonlycommandshortcutlet{\unidirectionalAssociation}{\pgfumlcd@unidirectionalAssociation} +\tikzaddtikzonlycommandshortcutlet{\aggregation}{\pgfumlcd@aggregation} +\tikzaddtikzonlycommandshortcutlet{\composition}{\pgfumlcd@composition} +\tikzaddtikzonlycommandshortcutlet{\umlnote}{\pgfumlcd@umlnote} |