diff --git a/.gitignore b/.gitignore index aaecd3eb7db9ce41c4f1c097ac5645f4cf18b862..7d010fc70cc06290ae9defafa26bbba6327f8704 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ -build/ .vscode/ +.aux/ +build/ +*.synctex.gz +*.synctex(busy) diff --git a/LICENSE b/LICENSE index ee40d4ece2e43ea35a9d0734f636e5cc513f5ca4..f8b699e6eb55682dc3a7d7172582eb61e698664c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,415 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2020 Jan Wille - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +The 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/Makefile b/Makefile index e11e0f6e138d8da6a19dbfdd6a98fa779f9545b0..cbe4b18a44d187c1ecabe7d5496d376d2231c3bf 100644 --- a/Makefile +++ b/Makefile @@ -1,50 +1,58 @@ # Makefile for Latex project NAME = project -LATEX = pdflatex +PDFLATEX = pdflatex BIBTEX = biber -SUBDIRS = svg plt crc -OUTDIR = build -TEX_FLAGS = -file-line-error -interaction=nonstopmode -COM_FLAGS = -output-directory=$(OUTDIR) -quiet -GARBAGE_PATTERNS = *.aux *.bbl *.bib *.bcf *.blg *.idx *.ind *.lof *.lot *.log *.xml *.toc +# OUTDIR needs to be at least this, can not be empty: +OUTDIR = . +AUXDIR = .aux +IGNORE = src/% +GARBAGE_PATTERNS = *.aux *.bbl *.bcf *.blg *.idx *.ind *.lof *.lot *.log *.xml *.toc *.synctex(busy) *.synctex.gz(busy) -SUB_TEX_FILES = $(foreach D,$(SUBDIRS),$(wildcard $(D)/*.tex)) -SUB_PDF_FILES = $(join $(dir $(SUB_TEX_FILES)),$(addprefix $(OUTDIR)/,$(notdir $(SUB_TEX_FILES:tex=pdf)))) -SUB_SVG_FILES = $(foreach D,$(SUBDIRS),$(wildcard $(D)/*.svg)) -SUB_PDF_TEX_FILES = $(join $(dir $(SUB_SVG_FILES)),$(addprefix $(OUTDIR)/,$(notdir $(SUB_SVG_FILES:svg=pdf)))) -GARBAGE = $(foreach D,. $(SUBDIRS), $(wildcard $(addprefix $(D)/$(OUTDIR)/,$(GARBAGE_PATTERNS)))) +# comment this out to get all outputs: +QUIET = -quiet +TEX_FLAGS = -file-line-error -interaction=nonstopmode -aux-directory=$(dir $@)$(OUTDIR)/$(AUXDIR) -output-directory=$(dir $@)$(OUTDIR) +# this grabs all subfiles it can find +SUB_TEX_FILES = $(filter-out $(IGNORE),$(wildcard **/*.tex)) +SUB_SVG_FILES = $(filter-out $(IGNORE),$(wildcard **/*.svg)) +# and makes a big list of prerequisits +SUB_FILES = $(SUB_TEX_FILES:tex=pdf) $(SUB_SVG_FILES:svg=pdf_tex) + +# get src folder on include path export TEXINPUTS:=$(CURDIR)\src -all: bib - $(LATEX) $(TEX_FLAGS) $(COM_FLAGS) $(NAME).tex - $(LATEX) -synctex=1 $(TEX_FLAGS) $(COM_FLAGS) $(NAME).tex - copy /Y $(OUTDIR)\$(NAME).pdf .\ -bib: $(NAME).pdf $(OUTDIR)\$(NAME).bcf - $(BIBTEX) $(COM_FLAGS) $(NAME) +all: pdf bib + $(PDFLATEX) $(TEX_FLAGS) $(QUIET) $(NAME).tex + $(PDFLATEX) -synctex=1 $(TEX_FLAGS) $(QUIET) $(NAME).tex -$(OUTDIR)\$(NAME).bcf: - $(LATEX) -synctex=1 $(TEX_FLAGS) $(COM_FLAGS) $(NAME).tex +pdf: $(SUB_FILES) $(NAME).pdf -pdf: $(NAME).pdf +bib: $(OUTDIR)/$(AUXDIR)/$(NAME).bcf + $(BIBTEX) -output-directory=$(OUTDIR)/$(AUXDIR) $(QUIET) $(NAME) -$(NAME).pdf: $(NAME).tex $(SUB_PDF_FILES) $(SUB_PDF_TEX_FILES) - $(LATEX) -synctex=1 $(TEX_FLAGS) $(COM_FLAGS) $(NAME).tex +# generel latex call +%.pdf: %.tex + $(PDFLATEX) $(TEX_FLAGS) $(QUIET) $*.tex -$(SUB_PDF_FILES): $(SUB_TEX_FILES) - cd $(subst $(OUTDIR)/,,$(dir $@)) && $(LATEX) $(TEX_FLAGS) $(COM_FLAGS) $(notdir $(@:pdf=tex)) +# generell inkscape call +%.pdf_tex: %.svg + inkscape -C --export-latex $*.svg -o $*.pdf -$(SUB_PDF_TEX_FILES): $(SUB_SVG_FILES) - cd $(subst $(OUTDIR)/,,$(dir $@)) && inkscape -C --export-latex $(notdir $(@:pdf=svg)) -o $(and $(OUTDIR),$(OUTDIR)\)$(notdir $@) +# little hack if temp files are not present +%.bcf: $(NAME).tex + if exist $(NAME).pdf del $(NAME).pdf + $(MAKE) pdf +# These are NOT portable!! clean: tidy - for %%a in ($(foreach D,$(subst /,\,$(SUB_PDF_FILES) $(SUB_PDF_TEX_FILES)) $(subst pdf,synctex.gz,$(subst /,\,$(SUB_PDF_FILES))) $(subst pdf,pdf_tex,$(subst /,\,$(SUB_PDF_TEX_FILES))) $(OUTDIR)\$(NAME).pdf $(OUTDIR)\$(NAME).synctex.gz, "$(D)")) do if exist %%~a del /q %%~a - for %%a in ($(foreach D,. $(SUBDIRS),"$(D)\$(if $(subst .,,$(OUTDIR)),$(OUTDIR),build)")) do if exist %%~a rmdir /s /q %%~a -# if exist $(NAME).pdf del $(NAME).pdf + for %%a in ($(subst /,\,$(SUB_FILES) $(SUB_SVG_FILES:svg=pdf))) do if exist %%~a del /s/q %%~a + if exist $(OUTDIR)\$(NAME).synctex.gz del $(OUTDIR)\$(NAME).synctex.gz + if exist $(OUTDIR)\$(NAME).pdf del $(OUTDIR)\$(NAME).pdf tidy: - if exist $(or $(word 1, $(subst /,\,$(GARBAGE))), false) del /q $(subst /,\,$(GARBAGE)) + for %%a in ($(OUTDIR)\$(AUXDIR) $(subst /,\,$(wildcard **/$(AUXDIR)))) do if exist %%~a rmdir /s/q %%~a + for %%a in ("$(wildcard $(GARBAGE_PATTERNS))") do if exist %%~a del /s/q %%~a diff --git a/README.md b/README.md index ac9dc8592940446813bef3e87a63ca03f4186453..e6aca673ab026e2fa330e47a4f5984953c5406f4 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ This is a template designed to ease the workflow when writing documents for the Hochschule Hannover. It is intended to be used in all sophisticated works, from lab-reports to masters thesis's. -The project provides custom document-classes caring the `HsH-` prefix as well as support files. These classes extend the well known KOMA-script classes and customize them -them with specific configurations and presets as well as providing commonly needed features. +The project provides custom document-classes caring the `HsH-` prefix as well as support files. These classes extend the well known KOMA-script +classes and customize them them with specific configurations, presets and provide commonly needed features. -**Provides classes are:** +**Provided classes are:** HsH-article HsH-report @@ -16,6 +16,10 @@ them with specific configurations and presets as well as providing commonly need **Date:** 20.03.2021 ## Check out the **Example-Branche** +# License + +This project is distributed under the LaTeX project public license (LPPL), version 1.3c. + # Requirements: diff --git a/src/HsH-article.cls b/src/HsH-article.cls index d13d03895281b647a0c44aea76aedc953f3ac695..7aac3627d1402e85373316e00098f6279f738f75 100644 --- a/src/HsH-article.cls +++ b/src/HsH-article.cls @@ -1,103 +1,128 @@ -\typeout{Adapted from KOMA script for use in Hochschule Hannover <2022-03-20> Jan Wille} +%% +%% This is file `HsH-article.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% HsH-classes.dtx (with options: `article') +%% +%% This is a generated file. +%% +%% Copyright (C) 2021 by Jan Wille <mail@janwille.de> +%% +%% This file 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 +%% 2021/01/01 or later. +%% +\typeout{Adapted from KOMA script for use in Hochschule Hannover <2021-03-18> Jan Wille} \NeedsTeXFormat{LaTeX2e} - \newcommand{\myClassName}{HsH-article} -\ProvidesClass{\myClassName}[2021/03/20 HsH Report based on KOMA] +\ProvidesClass{\myClassName}[2021/03/18 v1.0 HsH-Class based on KOMA] +%% commands for HsH-logo \newcommand{\HsHlogoPath}{HSH-Logo.pdf} \newcommand{\HsHlogoPage}{1} +\newcommand{\includeHsHlogohere}[1][5cm]{\includegraphics[width=#1,page=\HsHlogoPage]{\HsHlogoPath}} \newif\if@german% +%% document options ------------------------------------------------------------------------------- \DeclareOption{german}{% - \PassOptionsToPackage{ngerman}{babel} - \@germantrue + \@germantrue } \DeclareOption{ngerman}{% - \PassOptionsToPackage{\CurrentOption}{babel} - \@germantrue + \@germantrue } \DeclareOption{english}{% - \PassOptionsToPackage{\CurrentOption}{babel} - \@germanfalse + \@germanfalse } \DeclareOption{f1}{% use logo of fakulty 1 - \renewcommand{\HsHlogoPage}{2} + \renewcommand{\HsHlogoPage}{2} } \DeclareOption{f2}{% use logo of fakulty 2 - \renewcommand{\HsHlogoPage}{3} + \renewcommand{\HsHlogoPage}{3} } \DeclareOption{f3}{% use logo of fakulty 3 - \renewcommand{\HsHlogoPage}{4} + \renewcommand{\HsHlogoPage}{4} } \DeclareOption{f4}{% use logo of fakulty 4 - \renewcommand{\HsHlogoPage}{5} + \renewcommand{\HsHlogoPage}{5} } \DeclareOption{f5}{% use logo of fakulty 5 - \renewcommand{\HsHlogoPage}{6} + \renewcommand{\HsHlogoPage}{6} } \DeclareOption{sans}{% use san serif font - \renewcommand{\familydefault}{\sfdefault} + \renewcommand{\familydefault}{\sfdefault} } \DeclareOption{roman}{% use roman/serif font - \renewcommand{\familydefault}{\rmdefault} + \renewcommand{\familydefault}{\rmdefault} } \DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} - -\ExecuteOptions{fontsize=11pt,a4paper,sans} % standart options +\ExecuteOptions{fontsize=11pt,a4paper,ngerman,sans} % standart options \ProcessOptions\relax -% Load KOMA class +%% Load KOMA class \LoadClass{scrartcl} \KOMAoption{toc}{bibliography,listof} -% standart options for packages +%% package loading and config --------------------------------------------------------------------- \PassOptionsToPackage{utf8}{inputenc} +\RequirePackage{inputenc} \PassOptionsToPackage{T1}{fontenc} +\RequirePackage{fontenc} +\RequirePackage{lmodern} % font +\RequirePackage{graphicx} +\RequirePackage{amsmath} +\if@german\RequirePackage{ziffer}\fi \PassOptionsToPackage{left=3cm,right=2.5cm,top=3cm,bottom=3cm}{geometry} -\PassOptionsToPackage{hidelinks}{hyperref} +\RequirePackage{geometry} +\if@german\PassOptionsToPackage{ngerman}{babel}\else\PassOptionsToPackage{english}{babel}\fi +\RequirePackage{babel} \PassOptionsToPackage{headsepline}{scrlayer-scrpage} +\RequirePackage{scrlayer-scrpage} +\RequirePackage{scrhack} +\PassOptionsToPackage{hidelinks}{hyperref} +\RequirePackage{hyperref} +\RequirePackage{bookmark} \PassOptionsToPackage{babel}{csquotes} \if@german\PassOptionsToPackage{german=quotes}{csquotes}\fi - +\RequirePackage{csquotes} +\MakeOuterQuote{"} +\RequirePackage{pgffor} +%% options for not loaded packages ---------------------------------------------------------------- \PassOptionsToPackage{backend=biber,style=alphabetic,sorting=nyt}{biblatex} \PassOptionsToPackage{free-standing-units,abbreviations}{siunitx} \PassOptionsToPackage{european,EFvoltages,straightvoltages,betterproportions}{circuitikz} -% used packages: -\RequirePackage{inputenc} % inputencoding, utf8 recomendet -\RequirePackage{fontenc} % outputencoding, T1 recomendet -\RequirePackage{lmodern} % font -\RequirePackage{babel} % required for german names -\RequirePackage{geometry} % required for changing layout -\RequirePackage{scrlayer-scrpage} % required for header and footer -\RequirePackage{scrhack} % compatability with listings -\RequirePackage{pgffor} % foreach loops -\RequirePackage{graphicx} % required for importing images -\RequirePackage{hyperref} % references and lists are clikable -\RequirePackage{bookmark} % generat bookmarkes -\RequirePackage{amsmath} % a lot of nice Math -\RequirePackage{csquotes} % quotations -\if@german\RequirePackage{ziffer}\fi % german dezimal numbers - - -% internal stuff -\newtoks\@tabtoks -\newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}} -\newcommand\eaddtabtoks[1]{\edef\mytmp{#1}\expandafter\addtabtoks\expandafter{\mytmp}} -%\newcommand*\resettabtoks{\global\@tabtoks{}} -\newcommand*\printtabtoks{\the\@tabtoks} - - % config for title, header and footer +%% title matters ---------------------------------------------------------------------------------- \newcommand*{\@matrikelnr}{}% \newcommand{\matrikelnr}[1]{\gdef\@matrikelnr{#1}}% \newcommand*{\@professor}{}% \newcommand{\professor}[1]{\gdef\@professor{#1}}% +\newcommand*{\@keywords}{}% +\newcommand{\keywords}[1]{\gdef\@keywords{#1}}% \let\@author\@empty +\let\@keywords\@empty \InputIfFileExists{personal.tex}{ - \ClassInfo{\myClassName}{personal.tex was found. Using it...} + \ClassInfo{\myClassName}{personal.tex was found. Using it...} }{ - \ClassInfo{\myClassName}{no personal.tex! Configre the titlepage yourselfe} + \ClassInfo{\myClassName}{no personal.tex! Configre the titlepage yourself} } + +%% typesetting indexes upright or standart +\def\subinrm#1{\sb{\mathrm{#1}}} +{\catcode`\_=13 \global\let_=\subinrm} +\mathcode`_="8000 +\newcommand\upsubscripts{\catcode`\_=12 } +\newcommand\normalsubscripts{\catcode`\_=8 } +\upsubscripts + +%% header and footer \pagestyle{scrheadings} \clearpairofpagestyles \automark{section} @@ -105,267 +130,265 @@ \ihead{\@title} \ofoot*{\pagemark} -% typesetting indexes upright or standart -\def\subinrm#1{\sb{\mathrm{#1}}} -{\catcode`\_=13 \global\let_=\subinrm} -\mathcode`_="8000 -\newcommand\upsubscripts{\catcode`\_=12 } % the toggle for upright subscripts -\newcommand\normalsubscripts{\catcode`\_=8 } % the toggle for italic subscripts -\upsubscripts % setting upright as default +%% floats +\renewcommand{\fps@figure}{h!t} +\renewcommand{\fps@table}{h!t} +\ifx\KOMAScriptVersion\undefined\else + \g@addto@macro\@floatboxreset\centering + \setcapwidth[c]{0.8\textwidth} +\fi +\if@german + \renewcaptionname{ngerman}{\figurename}{Abb.} + \renewcaptionname{ngerman}{\tablename}{Tab.} + \renewcaptionname{ngerman}{\abstractname}{Abstract} +\else + \renewcaptionname{english}{\figurename}{Fig.} + \renewcaptionname{english}{\tablename}{Tab.} +\fi -% styling for itemize +%% styling for itemize \renewcommand{\labelitemi}{$\bullet$} \renewcommand{\labelitemii}{$\circ$} \renewcommand{\labelitemiii}{$-$} \renewcommand{\labelitemiv}{$\cdot$} -% custom commands -\newcommand{\includeHsHlogohere}[1][5cm]{\includegraphics[width=#1,page=\HsHlogoPage]{\HsHlogoPath}} -\newcommand{\uproman}[1]{\uppercase\expandafter{\romannumeral#1}} -\newcommand{\lowroman}[1]{\romannumeral#1\relax} - -% do stuff +%% do stuff \setlength\parindent{0pt} % indentation of new paragraphs \raggedbottom -\renewcommand{\fps@figure}{h!t} % positioning of figures -\renewcommand{\fps@table}{h!t} % Positonierung of tables \renewcommand{\layercontentsmeasure}{\empty} % rulers when using draft disabled -\MakeOuterQuote{"} % easy quotationmarks - -% load config at beginning of document +%% custom commands +\newcommand{\uproman}[1]{\uppercase\expandafter{\romannumeral#1}} +\newcommand{\lowroman}[1]{\romannumeral#1\relax} +%% load config at beginning of document \AtBeginDocument{ - \makeatletter - % solve some common errors: - \@ifpackageloaded{biblatex}{ - \renewcommand*{\mkbibacro}[1]{\MakeUppercase{#1}} % solves fontype warning in San-Serif - }{}% - \@ifpackageloaded{subfigure}{ - \newcommand{\subfigureautorefname}{\figureautorefname} - }{}% - % input config File: - \InputIfFileExists{config.tex}{ - \ClassInfo{\myClassName}{config.tex was found. Using it...} - }{ - \ClassInfo{\myClassName}{no config.tex!! I hope you configered it yourself.} - } - % provide some usefull commands: - \providecommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}} % Makro for vertical lines around absolute values - \makeatother + \makeatletter + \@ifpackageloaded{biblatex}{ + \renewcommand*{\mkbibacro}[1]{\MakeUppercase{#1}} + }{} + \@ifpackageloaded{subfigure}{ + \newcommand{\subfigureautorefname}{\figureautorefname} + }{} + \InputIfFileExists{config.tex}{ + \ClassInfo{\myClassName}{config.tex was found. Using it...} + }{ + \ClassInfo{\myClassName}{no config.tex!! I hope you configered it yourself.} + } + %% provide some usefull commands: + \providecommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}} + \makeatother } - -% nicer abstract: +%% nicer abstract --------------------------------------------------------------------------------- \renewenvironment{abstract}{% - \chapter*{\centering\abstractname} - \addcontentsline{toc}{chapter}{\abstractname} - \small - \quotation + \section*{\centering\abstractname} + \addcontentsline{toc}{chapter}{\abstractname} + \small + \quotation }{% - \endquotation + \ifx\@keywords\@empty\else + \vspace{1cm} + \paragraph{\if@german Schlüsselwörter:\else Keywords:\fi} + \@keywords + \fi + \endquotation } - -% decloration of Authorship +%% decloration of Authorship ---------------------------------------------------------------------- +\newif\if@oneAuthor \@oneAuthortrue +\if@german + \setlocalecaption{ngerman}{dATitle}{Selbstständigkeitserklärung} + \setlocalecaption{ngerman}{dAPronomen}{\if@oneAuthor ich\else wir\fi} + \setlocalecaption{ngerman}{dAPluralendung}{\if@oneAuthor\else n\fi} + \setlocalecaption{ngerman}{dAGenitiv}{\if@oneAuthor mir\else uns\fi} + \setlocalecaption{ngerman}{dAText}{ + Hiermit bestätige\dAPluralendungname\space\dAPronomenname, dass die folgende Arbeit eigenständig von \dAGenitivname\space allein erstellt + und unter Berücksichtigung der zur Verfügung gestellten Aufgabenstellung sowie dem Arbeitsmaterial unter Angabe aller verwendeten Quellen + erarbeitet wurde. Die Regelungen und Konsequenzen eines Plagiats, inklusive disziplinarischer Maßnahmen, sind \dAGenitivname\space + bewusst. Insbesondere wurden alle Zitate und gedanklichen Übernahmen als solche kenntlich gemacht. + } +\else + \setlocalecaption{english}{dATitle}{Declaration of Authorship} + \setlocalecaption{english}{dAPronomen}{\if@oneAuthor I\else we\fi} + \setlocalecaption{english}{dAPronomenf}{\if@oneAuthor I\else We\fi} + \setlocalecaption{english}{dAPronomverb}{\if@oneAuthor am\else are\fi} + \setlocalecaption{english}{dAGenitiv}{\if@oneAuthor my\else our\fi} + \setlocalecaption{english}{dAText}{ + \dAPronomenfname\space hereby certify that the work \dAPronomenname\space\dAPronomverbname\space submitting is entirely of + \dAGenitivname\space own making except where otherwise indicated. \dAPronomenfname\space\dAPronomverbname\space aware of regulations + concerning plagiarism, including disciplinary actions that may result from it. Any use of the works of any other author, in any form, is + properly acknowledged at their point of use. + } +\fi \newcommand\declarationAuthorship{ - \thispagestyle{plain} - \vspace*{\fill} - {\rule{\textwidth}{0.1pt}} - \vspace{0.5cm} - \renewcommand{\thanks}{\sbox0} - - \if@german{ - \newcommand{\pronomen}{ich} - \newcommand{\plutalendung}{} - \newcommand{\genitiv}{mir} - \foreach \x [count=\i] in \@author{ - \ifnum\i>1 - \gdef\pronomen{wir} - \gdef\plutalendung{n} - \gdef\genitiv{uns} - \else\fi - } - \begin{center} - \huge \textbf{Selbstständigkeitserklärung}\\ - \end{center} - \vspace{1cm}\normalsize - Hiermit bestätige\plutalendung\space\pronomen, dass die folgende Arbeit eigenständig von \genitiv\space allein erstellt und unter - Berücksichtigung der zur Verfügung gestellten Aufgabenstellung sowie dem Arbeitsmaterial unter Angabe aller verwendeten Quellen erarbeitet - wurde. Die Regelungen und Konsequenzen eines Plagiats, inklusive disziplinarischer Maßnahmen, sind \genitiv\space bewusst. Insbesondere wurden - alle Zitate und gedanklichen Übernahmen als solche kenntlich gemacht. - }\else{ - \newcommand{\pronomen}{I} - \newcommand{\pronomenf}{I} - \newcommand{\genitiv}{my} - \newcommand{\proniomeverb}{am} - \foreach \x [count=\i] in \@author{ - \ifnum\i>1 - \gdef\pronomen{we} - \gdef\pronomenf{We} - \gdef\genitiv{our} - \gdef\proniomeverb{are} - \else\fi - } - \begin{center} - \huge \textbf{Declaration of Authorship}\\ - \end{center} - \vspace{1cm}\normalsize - \pronomenf\space hereby certify that the work \pronomen\space\proniomeverb\space submitting is entirely of \genitiv\space own making except - where otherwise indicated. \pronomenf\space\proniomeverb\space aware of regulations concerning plagiarism, including disciplinary actions that - may result from it. Any use of the works of any other author, in any form, is properly acknowledged at their point of use. - }\fi - \begin{flushright} - \foreach \x [count=\i] in \@author{ - \begin{tabular}[t]{r} - \\[3em] - \rule{4cm}{0.4pt} \\ - {\footnotesize\x} - \end{tabular} - } - \end{flushright} + \renewcommand{\thanks}{\sbox0} + \foreach \x [count=\i] in \@author{\ifnum\i>1\global\@oneAuthorfalse\fi} + \thispagestyle{plain} + \vspace*{\fill} + {\rule{\textwidth}{0.1pt}} + \vskip 3em + {\centering\huge\textbf{\dATitlename}\par} + \vskip 3em + {\dATextname\par} + {\raggedleft + \foreach \x in \@author{ + \begin{tabular}[t]{r} + \\[3em] + \rule{4cm}{0.4pt}\\ + {\footnotesize\x} + \end{tabular} + } + \par} } - -% reconfig Titlepage -\renewcommand\maketitle[1][c]{% - \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax - \else - \def\and{% - \end{tabular}% - \hskip 1em \@plus.17fil% - \begin{tabular}[t]{c}% - }% - \fi - \par - \ifx\@uppertitleback\@empty\else - \ClassWarning{\KOMAClassName}{% - non empty \string\uppertitleback\space ignored - by \string\maketitle\MessageBreak - in `titlepage=false' mode% - }% - \fi - \ifx\@lowertitleback\@empty\else - \ClassWarning{\KOMAClassName}{% - non empty \string\lowertitleback\space ignored - by \string\maketitle\MessageBreak - in `titlepage=false' mode% - }% - \fi - \begingroup - \def\@param{#1} - \ifx\@param\@empty\ClassError{\myClassName}{\maketitle\space with empty option}{ - \maketitle[] has been called with an empty parameter, this doesn't work. Use \maketitle instead. - } - \fi - \let\titlepage@restore\relax - \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% - \let\@oldmakefnmark\@makefnmark - \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% - \next@tdpage - \ifx\@extratitle\@empty - \ifx\@frontispiece\@empty\else \mbox{}\fi - \else - \@makeextratitle - \fi - \ifx\@frontispiece\@empty - \ifx\@extratitle\@empty\else\next@tdpage\fi - \else - \next@tpage - \@makefrontispiece - \next@tdpage - \fi - \global\@topnum=\z@ - \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative - \IfFileExists{\HsHlogoPath}{}{ - \ClassError{\myClassName}{HsH-Logo.pdf not found!}{ - The HsH Logo is necasary for the titlepage! Try putting it next to your source file or use \HsHlogoPath to define the file location - } - } - \vspace*{1cm} - \begin{minipage}[t]{\textwidth}% - \ifx\@titlehead\@empty \else - \usekomafont{titlehead}{\@titlehead}% - \fi - \hfill - \raisebox{0pt}[\ht\strutbox][\dp\strutbox]{\includeHsHlogohere} - \end{minipage} - \raisebox{10pt}{\rule{\textwidth}{0.5pt}} - \null - \vskip 2em% - \if\@param c\begin{center}\fi - \if\@param r\begin{flushright}\fi - \ifx\@subject\@empty \else - {\usekomafont{subject}{\@subject \par}}% - \vskip 1.5em - \fi - {\usekomafont{title}{\huge \@title \par}}% - \vskip .5em - {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% - \vskip 4em - {\ifx\@matrikelnr\@empty - \if\@author\@empty\else\usekomafont{author}{ - \parbox{\dimexpr\linewidth}{ - \if\@param c\centering\fi - \if\@param r\raggedleft\fi - \@author - } - }\fi - \else - \if\@author\@empty\else - % sneeky comma needed after \@matrikelnr to deal with single item list - \foreach \x [count=\i,evaluate=\i as \y using {{\@matrikelnr,}[\i-1]}] in \@author {\eaddtabtoks{\x & \y\protect\\}} - \usekomafont{author}{\def\arraystretch{1.2} - \if\@param l\hspace{-6pt}\begin{tabular}{l l}\printtabtoks\end{tabular}\fi - \if\@param c\begin{tabular}{l l}\printtabtoks\end{tabular}\fi - \if\@param r\begin{tabular}{r r}\printtabtoks\end{tabular}\hspace{-6pt}\fi - } - \fi - \fi}% - \vskip 1em% - {\usekomafont{date}{\@date \par}}% - \vskip 1em - {\if\@prof\@empty\else\usekomafont{author}{Professor(in)/Lehrbeauftragte(r): \@prof}\fi} - %{\usekomafont{publishers}{\@publishers \par}}% - \ifx\@dedication\@empty \else - \vskip 2em - {\usekomafont{dedication}{\@dedication \par}}% - \fi - \if\@param c\end{center}\fi - \if\@param r\end{flushright}\fi - \par - \vskip 2em - \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi - \@thanks\global\let\@thanks\@empty - \endgroup - \setcounter{footnote}{0}% - \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax - \let\thanks\relax - \let\maketitle\relax - \let\@maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\@subtitle\@empty - \global\let\@extratitle\@empty - \global\let\@frontispiece\@empty - \global\let\@titlehead\@empty - \global\let\@subject\@empty - \global\let\@publishers\@empty - \global\let\@uppertitleback\@empty - \global\let\@lowertitleback\@empty - \global\let\@dedication\@empty - \global\let\@matrikelnr\@empty - \global\let\@prof\@empty - \global\let\author\relax - \global\let\title\relax - \global\let\extratitle\relax - \global\let\titlehead\relax - \global\let\subject\relax - \global\let\publishers\relax - \global\let\uppertitleback\relax - \global\let\lowertitleback\relax - \global\let\dedication\relax - \global\let\date\relax - \global\let\matrikelnr\relax - \global\let\professor\relax - \fi - \global\let\and\relax -}% +%% reconfig Titlepage ----------------------------------------------------------------------------- +\newtoks\@tabtoks +\newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}} +\newcommand\eaddtabtoks[1]{\edef\mytmp{#1}\expandafter\addtabtoks\expandafter{\mytmp}} +\newcommand*\printtabtoks{\the\@tabtoks} +\addtokomafont{publishers}{\normalsize} +\renewcommand\maketitle[1][c]{ + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \else + \def\and{% + \end{tabular} + \hskip 1em \@plus.17fil + \begin{tabular}[t]{c}% + } + \fi + \par + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + } + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + } + \fi + \begingroup + \let\@param#1 + \ifx\@param\@empty + \ClassError{\myClassName}{\maketitle\space with empty option}{ + \maketitle[] has been called with an empty parameter, this doesn't work. Use \maketitle instead. + } + \fi + \let\titlepage@restore\relax + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \next@tdpage + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else \mbox{}\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \global\@topnum=\z@ + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \IfFileExists{\HsHlogoPath}{}{ + \ClassError{\myClassName}{HsH-Logo.pdf not found!}{ + The HsH Logo is necasary for the titlepage! Try putting it next to your source file or use \HsHlogoPath to define the file location + } + } + \vspace*{1cm} + \begin{minipage}[t]{\textwidth}% + \ifx\@titlehead\@empty \else + \usekomafont{titlehead}{\@titlehead}% + \fi + \hfill + \raisebox{0pt}[\ht\strutbox][\dp\strutbox]{\includeHsHlogohere} + \end{minipage} + \raisebox{10pt}{\rule{\textwidth}{0.5pt}} + \null + \vskip 2em + \begingroup + \if\@param c\centering\fi + \if\@param r\raggedleft\fi + \ifx\@subject\@empty\else + {\usekomafont{subject}{\@subject\par}} + \vskip 1.5em + \fi + {\usekomafont{title}{\huge\@title\par}} + \vskip .5em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi} + \vskip 4em + {\ifx\@matrikelnr\@empty + \if\@author\@empty\else\usekomafont{author}{ + \parbox{\dimexpr\linewidth}{ + \if\@param c\centering\fi + \if\@param r\raggedleft\fi + \@author + } + }\fi + \else + \if\@author\@empty\else + % sneeky comma needed after \@matrikelnr to deal with single item lists + \foreach \x [count=\i,evaluate=\i as \y using {{\@matrikelnr,}[\i-1]}] in \@author {\eaddtabtoks{\x & \y\protect\\}} + \usekomafont{author}{\def\arraystretch{1.2} + \if\@param l\hspace{-6pt}\begin{tabular}{l l}\printtabtoks\end{tabular}\fi + \if\@param c\begin{tabular}{l l}\printtabtoks\end{tabular}\fi + \if\@param r\begin{tabular}{r r}\printtabtoks\end{tabular}\hspace{-6pt}\fi + } + \fi + \fi} + \vskip 1em + {\usekomafont{date}{\@date\par}} + \vskip 1em + {\if\@professor\@empty\else\usekomafont{publishers}{Professor\if@german(in)/Lehrbeauftragte(r)\fi: \@professor}\fi} + \ifx\@dedication\@empty\else + \vskip 2em + {\usekomafont{dedication}{\@dedication \par}}% + \fi + \par + \endgroup + \vskip 2em + \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi + \@thanks\global\let\@thanks\@empty + \endgroup + \setcounter{footnote}{0} + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \let\thanks\relax + \let\maketitle\relax + \let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@subtitle\@empty + \global\let\@extratitle\@empty + \global\let\@frontispiece\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\@matrikelnr\@empty + \global\let\@prof\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \global\let\matrikelnr\relax + \global\let\professor\relax + \fi + \global\let\and\relax +} +\endinput +%% +%% End of file `HsH-article.cls'. diff --git a/src/HsH-report.cls b/src/HsH-report.cls index 9b652c3e26cfa37cf01667d500e005f99f1d5b97..e4463c16a95c74a0ea0c853d3afcb2132a781e9a 100644 --- a/src/HsH-report.cls +++ b/src/HsH-report.cls @@ -1,431 +1,451 @@ +%% +%% This is file `HsH-report.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% HsH-classes.dtx (with options: `report') +%% +%% This is a generated file. +%% +%% Copyright (C) 2021 by Jan Wille <mail@janwille.de> +%% +%% This file 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 +%% 2021/01/01 or later. +%% \typeout{Adapted from KOMA script for use in Hochschule Hannover <2021-03-18> Jan Wille} \NeedsTeXFormat{LaTeX2e} - \newcommand{\myClassName}{HsH-report} -\ProvidesClass{\myClassName}[2021/03/18 HsH-Report based on KOMA] +\ProvidesClass{\myClassName}[2021/03/18 v1.0 HsH-Class based on KOMA] +%% commands for HsH-logo \newcommand{\HsHlogoPath}{HSH-Logo.pdf} \newcommand{\HsHlogoPage}{1} +\newcommand{\includeHsHlogohere}[1][5cm]{\includegraphics[width=#1,page=\HsHlogoPage]{\HsHlogoPath}} \newif\if@german% +%% document options ------------------------------------------------------------------------------- \DeclareOption{german}{% - \PassOptionsToPackage{ngerman}{babel} - \@germantrue + \@germantrue } \DeclareOption{ngerman}{% - \PassOptionsToPackage{\CurrentOption}{babel} - \@germantrue + \@germantrue } \DeclareOption{english}{% - \PassOptionsToPackage{\CurrentOption}{babel} - \@germanfalse + \@germanfalse } \DeclareOption{f1}{% use logo of fakulty 1 - \renewcommand{\HsHlogoPage}{2} + \renewcommand{\HsHlogoPage}{2} } \DeclareOption{f2}{% use logo of fakulty 2 - \renewcommand{\HsHlogoPage}{3} + \renewcommand{\HsHlogoPage}{3} } \DeclareOption{f3}{% use logo of fakulty 3 - \renewcommand{\HsHlogoPage}{4} + \renewcommand{\HsHlogoPage}{4} } \DeclareOption{f4}{% use logo of fakulty 4 - \renewcommand{\HsHlogoPage}{5} + \renewcommand{\HsHlogoPage}{5} } \DeclareOption{f5}{% use logo of fakulty 5 - \renewcommand{\HsHlogoPage}{6} + \renewcommand{\HsHlogoPage}{6} } \DeclareOption{sans}{% use san serif font - \renewcommand{\familydefault}{\sfdefault} + \renewcommand{\familydefault}{\sfdefault} } \DeclareOption{roman}{% use roman/serif font - \renewcommand{\familydefault}{\rmdefault} + \renewcommand{\familydefault}{\rmdefault} } \DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrreprt}} - -\ExecuteOptions{fontsize=11pt,a4paper,sans} % standart options +\ExecuteOptions{fontsize=11pt,a4paper,ngerman,sans} % standart options \ProcessOptions\relax -% Load KOMA class +%% Load KOMA class \LoadClass{scrreprt} \KOMAoption{toc}{bibliography,listof} -% standart options for packages +%% package loading and config --------------------------------------------------------------------- \PassOptionsToPackage{utf8}{inputenc} +\RequirePackage{inputenc} \PassOptionsToPackage{T1}{fontenc} +\RequirePackage{fontenc} +\RequirePackage{lmodern} % font +\RequirePackage{graphicx} +\RequirePackage{amsmath} +\if@german\RequirePackage{ziffer}\fi \PassOptionsToPackage{left=3cm,right=2.5cm,top=3cm,bottom=3cm}{geometry} -\PassOptionsToPackage{hidelinks}{hyperref} +\RequirePackage{geometry} +\if@german\PassOptionsToPackage{ngerman}{babel}\else\PassOptionsToPackage{english}{babel}\fi +\RequirePackage{babel} \PassOptionsToPackage{headsepline}{scrlayer-scrpage} +\RequirePackage{scrlayer-scrpage} +\RequirePackage{scrhack} +\PassOptionsToPackage{hidelinks}{hyperref} +\RequirePackage{hyperref} +\RequirePackage{bookmark} \PassOptionsToPackage{babel}{csquotes} \if@german\PassOptionsToPackage{german=quotes}{csquotes}\fi - +\RequirePackage{csquotes} +\MakeOuterQuote{"} +\RequirePackage{pgffor} +%% options for not loaded packages ---------------------------------------------------------------- \PassOptionsToPackage{backend=biber,style=alphabetic,sorting=nyt}{biblatex} \PassOptionsToPackage{free-standing-units,abbreviations}{siunitx} \PassOptionsToPackage{european,EFvoltages,straightvoltages,betterproportions}{circuitikz} -% used packages: -\RequirePackage{inputenc} % inputencoding, utf8 recomendet -\RequirePackage{fontenc} % outputencoding, T1 recomendet -\RequirePackage{lmodern} % font -\RequirePackage{babel} % required for german names -\RequirePackage{geometry} % required for changing layout -\RequirePackage{scrlayer-scrpage} % required for header and footer -\RequirePackage{scrhack} % compatability with listings -\RequirePackage{pgffor} % foreach loops -\RequirePackage{graphicx} % required for importing images -\RequirePackage{hyperref} % references and lists are clikable -\RequirePackage{bookmark} % generat bookmarkes -\RequirePackage{amsmath} % a lot of nice Math -\RequirePackage{csquotes} % quotations -\if@german\RequirePackage{ziffer}\fi % german dezimal numbers - - -% internal commands -\newtoks\@tabtoks -\newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}} -\newcommand\eaddtabtoks[1]{\edef\mytmp{#1}\expandafter\addtabtoks\expandafter{\mytmp}} -%\newcommand*\resettabtoks{\global\@tabtoks{}} -\newcommand*\printtabtoks{\the\@tabtoks} - -% config for title, header and footer +%% title matters ---------------------------------------------------------------------------------- \newcommand*{\@matrikelnr}{}% \newcommand{\matrikelnr}[1]{\gdef\@matrikelnr{#1}}% \newcommand*{\@professor}{}% \newcommand{\professor}[1]{\gdef\@professor{#1}}% +\newcommand*{\@keywords}{}% +\newcommand{\keywords}[1]{\gdef\@keywords{#1}}% \let\@author\@empty +\let\@keywords\@empty \InputIfFileExists{personal.tex}{ - \ClassInfo{\myClassName}{personal.tex was found. Using it...} + \ClassInfo{\myClassName}{personal.tex was found. Using it...} }{ - \ClassInfo{\myClassName}{no personal.tex! Configre the titlepage yourselfe} + \ClassInfo{\myClassName}{no personal.tex! Configre the titlepage yourself} } + +%% typesetting indexes upright or standart +\def\subinrm#1{\sb{\mathrm{#1}}} +{\catcode`\_=13 \global\let_=\subinrm} +\mathcode`_="8000 +\newcommand\upsubscripts{\catcode`\_=12 } +\newcommand\normalsubscripts{\catcode`\_=8 } +\upsubscripts + +%% header and footer \pagestyle{scrheadings} \clearpairofpagestyles -\renewcommand*{\chapterpagestyle}{scrheadings} % Chaptertitles get same header/footer as everything +\renewcommand*{\chapterpagestyle}{scrheadings} \automark{chapter} \ohead{\headmark} \ihead{\@title} \ofoot*{\pagemark} -% typesetting indexes upright or standart -\def\subinrm#1{\sb{\mathrm{#1}}} -{\catcode`\_=13 \global\let_=\subinrm} -\mathcode`_="8000 -\newcommand\upsubscripts{\catcode`\_=12 } % the toggle for upright subscripts -\newcommand\normalsubscripts{\catcode`\_=8 } % the toggle for italic subscripts -\upsubscripts % setting upright as default +%% floats +\renewcommand{\fps@figure}{h!t} +\renewcommand{\fps@table}{h!t} +\ifx\KOMAScriptVersion\undefined\else + \g@addto@macro\@floatboxreset\centering + \setcapwidth[c]{0.8\textwidth} +\fi +\if@german + \renewcaptionname{ngerman}{\figurename}{Abb.} + \renewcaptionname{ngerman}{\tablename}{Tab.} + \renewcaptionname{ngerman}{\abstractname}{Abstract} +\else + \renewcaptionname{english}{\figurename}{Fig.} + \renewcaptionname{english}{\tablename}{Tab.} +\fi -% styling for itemize +%% styling for itemize \renewcommand{\labelitemi}{$\bullet$} \renewcommand{\labelitemii}{$\circ$} \renewcommand{\labelitemiii}{$-$} \renewcommand{\labelitemiv}{$\cdot$} -% custom commands -\newcommand{\includeHsHlogohere}[1][5cm]{\includegraphics[width=#1,page=\HsHlogoPage]{\HsHlogoPath}} -\newcommand{\uproman}[1]{\uppercase\expandafter{\romannumeral#1}} -\newcommand{\lowroman}[1]{\romannumeral#1\relax} - -% do stuff +%% do stuff \setlength\parindent{0pt} % indentation of new paragraphs \raggedbottom -\renewcommand{\fps@figure}{h!t} % positioning of figures -\renewcommand{\fps@table}{h!t} % Positonierung of tables \renewcommand{\layercontentsmeasure}{\empty} % rulers when using draft disabled -\MakeOuterQuote{"} % easy quotationmarks - -% load config at beginning of document +%% custom commands +\newcommand{\uproman}[1]{\uppercase\expandafter{\romannumeral#1}} +\newcommand{\lowroman}[1]{\romannumeral#1\relax} +%% load config at beginning of document \AtBeginDocument{ - \makeatletter - % solve some common errors: - \@ifpackageloaded{biblatex}{ - \renewcommand*{\mkbibacro}[1]{\MakeUppercase{#1}} % solves fontype warning in San-Serif - }{}% - \@ifpackageloaded{subfigure}{ - \newcommand{\subfigureautorefname}{\figureautorefname} - }{}% - % input config File: - \InputIfFileExists{config.tex}{ - \ClassInfo{\myClassName}{config.tex was found. Using it...} - }{ - \ClassInfo{\myClassName}{no config.tex!! I hope you configered it yourself.} - } - % provide some usefull commands: - \providecommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}} % Makro for vertical lines around absolute values - \makeatother + \makeatletter + \@ifpackageloaded{biblatex}{ + \renewcommand*{\mkbibacro}[1]{\MakeUppercase{#1}} + }{} + \@ifpackageloaded{subfigure}{ + \newcommand{\subfigureautorefname}{\figureautorefname} + }{} + \InputIfFileExists{config.tex}{ + \ClassInfo{\myClassName}{config.tex was found. Using it...} + }{ + \ClassInfo{\myClassName}{no config.tex!! I hope you configered it yourself.} + } + %% provide some usefull commands: + \providecommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}} + \makeatother } - -% nicer abstract: +%% nicer abstract --------------------------------------------------------------------------------- \renewenvironment{abstract}{% - \chapter*{\centering\abstractname} - \addcontentsline{toc}{chapter}{\abstractname} - \small - \quotation + \chapter*{\centering\abstractname} + \addcontentsline{toc}{chapter}{\abstractname} + \small + \quotation }{% - \endquotation + \ifx\@keywords\@empty\else + \vspace{1cm} + \paragraph{\if@german Schlüsselwörter:\else Keywords:\fi} + \@keywords + \fi + \endquotation } - -% decloration of Authorship +%% decloration of Authorship ---------------------------------------------------------------------- +\newif\if@oneAuthor \@oneAuthortrue +\if@german + \setlocalecaption{ngerman}{dATitle}{Selbstständigkeitserklärung} + \setlocalecaption{ngerman}{dAPronomen}{\if@oneAuthor ich\else wir\fi} + \setlocalecaption{ngerman}{dAPluralendung}{\if@oneAuthor\else n\fi} + \setlocalecaption{ngerman}{dAGenitiv}{\if@oneAuthor mir\else uns\fi} + \setlocalecaption{ngerman}{dAText}{ + Hiermit bestätige\dAPluralendungname\space\dAPronomenname, dass die folgende Arbeit eigenständig von \dAGenitivname\space allein erstellt + und unter Berücksichtigung der zur Verfügung gestellten Aufgabenstellung sowie dem Arbeitsmaterial unter Angabe aller verwendeten Quellen + erarbeitet wurde. Die Regelungen und Konsequenzen eines Plagiats, inklusive disziplinarischer Maßnahmen, sind \dAGenitivname\space + bewusst. Insbesondere wurden alle Zitate und gedanklichen Übernahmen als solche kenntlich gemacht. + } +\else + \setlocalecaption{english}{dATitle}{Declaration of Authorship} + \setlocalecaption{english}{dAPronomen}{\if@oneAuthor I\else we\fi} + \setlocalecaption{english}{dAPronomenf}{\if@oneAuthor I\else We\fi} + \setlocalecaption{english}{dAPronomverb}{\if@oneAuthor am\else are\fi} + \setlocalecaption{english}{dAGenitiv}{\if@oneAuthor my\else our\fi} + \setlocalecaption{english}{dAText}{ + \dAPronomenfname\space hereby certify that the work \dAPronomenname\space\dAPronomverbname\space submitting is entirely of + \dAGenitivname\space own making except where otherwise indicated. \dAPronomenfname\space\dAPronomverbname\space aware of regulations + concerning plagiarism, including disciplinary actions that may result from it. Any use of the works of any other author, in any form, is + properly acknowledged at their point of use. + } +\fi \newcommand\declarationAuthorship{ - \thispagestyle{plain} - \vspace*{\fill} - {\rule{\textwidth}{0.1pt}} - \vspace{0.5cm} - \renewcommand{\thanks}{\sbox0} - - \if@german{ - \newcommand{\pronomen}{ich} - \newcommand{\plutalendung}{} - \newcommand{\genitiv}{mir} - \foreach \x [count=\i] in \@author{ - \ifnum\i>1 - \gdef\pronomen{wir} - \gdef\plutalendung{n} - \gdef\genitiv{uns} - \else\fi - } - \begin{center} - \huge \textbf{Selbstständigkeitserklärung}\\ - \end{center} - \vspace{1cm}\normalsize - Hiermit bestätige\plutalendung\space\pronomen, dass die folgende Arbeit eigenständig von \genitiv\space allein erstellt und unter - Berücksichtigung der zur Verfügung gestellten Aufgabenstellung sowie dem Arbeitsmaterial unter Angabe aller verwendeten Quellen erarbeitet - wurde. Die Regelungen und Konsequenzen eines Plagiats, inklusive disziplinarischer Maßnahmen, sind \genitiv\space bewusst. Insbesondere wurden - alle Zitate und gedanklichen Übernahmen als solche kenntlich gemacht. - }\else{ - \newcommand{\pronomen}{I} - \newcommand{\pronomenf}{I} - \newcommand{\genitiv}{my} - \newcommand{\proniomeverb}{am} - \foreach \x [count=\i] in \@author{ - \ifnum\i>1 - \gdef\pronomen{we} - \gdef\pronomenf{We} - \gdef\genitiv{our} - \gdef\proniomeverb{are} - \else\fi - } - \begin{center} - \huge \textbf{Declaration of Authorship}\\ - \end{center} - \vspace{1cm}\normalsize - \pronomenf\space hereby certify that the work \pronomen\space\proniomeverb\space submitting is entirely of \genitiv\space own making except - where otherwise indicated. \pronomenf\space\proniomeverb\space aware of regulations concerning plagiarism, including disciplinary actions that - may result from it. Any use of the works of any other author, in any form, is properly acknowledged at their point of use. - }\fi - \begin{flushright} - \foreach \x [count=\i] in \@author{ - \begin{tabular}[t]{r} - \\[3em] - \rule{4cm}{0.4pt} \\ - {\footnotesize\x} - \end{tabular} - } - \end{flushright} + \renewcommand{\thanks}{\sbox0} + \foreach \x [count=\i] in \@author{\ifnum\i>1\global\@oneAuthorfalse\fi} + \thispagestyle{plain} + \vspace*{\fill} + {\rule{\textwidth}{0.1pt}} + \vskip 3em + {\centering\huge\textbf{\dATitlename}\par} + \vskip 3em + {\dATextname\par} + {\raggedleft + \foreach \x in \@author{ + \begin{tabular}[t]{r} + \\[3em] + \rule{4cm}{0.4pt}\\ + {\footnotesize\x} + \end{tabular} + } + \par} } - -% reconfig Titlepage -\renewcommand\maketitle[1][l]{% - \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax - \else - \def\and{% - \end{tabular}% - \hskip 1em \@plus.17fil% - \begin{tabular}[t]{c}% - }% - \fi - \begin{titlepage} - % \setcounter{page}{% - % #1% - % }% - \def\@param{#1} - \ifx\@param\@empty\ClassError{\myClassName}{\maketitle\space with empty option}{ - \maketitle[] has been called with an empty parameter, this doesn't work. Use \maketitle instead. - } - \fi - \if@titlepageiscoverpage - \edef\titlepage@restore{% - \noexpand\endgroup - \noexpand\global\noexpand\@colht\the\@colht - \noexpand\global\noexpand\@colroom\the\@colroom - \noexpand\global\vsize\the\vsize - \noexpand\global\noexpand\@titlepageiscoverpagefalse - \noexpand\let\noexpand\titlepage@restore\noexpand\relax - }% - \begingroup - \topmargin=\dimexpr \coverpagetopmargin-1in\relax - \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax - \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax - \textwidth=\dimexpr - \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax - \textheight=\dimexpr - \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax - \headheight=0pt - \headsep=0pt - \footskip=\baselineskip - \@colht=\textheight - \@colroom=\textheight - \vsize=\textheight - \columnwidth=\textwidth - \hsize=\columnwidth - \linewidth=\hsize - \else - \let\titlepage@restore\relax - \fi - \let\footnotesize\small - \let\footnoterule\relax - \let\footnote\thanks - \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% - \let\@oldmakefnmark\@makefnmark - \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% - \ifx\@extratitle\@empty - \ifx\@frontispiece\@empty - \else - \if@twoside\mbox{}\next@tpage\fi - \noindent\@frontispiece\next@tdpage - \fi - \else - \noindent\@extratitle - \ifx\@frontispiece\@empty - \else - \next@tpage - \noindent\@frontispiece - \fi - \next@tdpage - \fi - \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative - \IfFileExists{\HsHlogoPath}{}{ - \ClassError{\myClassName}{HsH-Logo.pdf not found!}{ - The HsH Logo is necasary for the titlepage! Try putting it next to your source file or use \HsHlogoPath to define the file location - } - } - \vspace*{1cm} - \begin{minipage}[t]{\textwidth}% - \ifx\@titlehead\@empty \else - \usekomafont{titlehead}{\@titlehead}% - \fi - \hfill - \raisebox{0pt}[\ht\strutbox][\dp\strutbox]{\includeHsHlogohere} % image referrencepoint in lower left corner - \end{minipage} - \raisebox{10pt}{\rule{\textwidth}{0.5pt}} - \null\vfill - \if\@param c\begin{center}\fi - \if\@param r\begin{flushright}\fi - \ifx\@subject\@empty \else - {\usekomafont{subject}{\@subject\par}}% - \vskip 3em - \fi - {\usekomafont{title}{\huge\@title\par}}% - \vskip 1em - {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% - \vskip 4em - {\ifx\@matrikelnr\@empty - \if\@author\@empty\else\usekomafont{author}{ - \parbox{\dimexpr\linewidth}{ - \if\@param c\centering\fi - \if\@param r\raggedleft\fi - \@author - } - }\fi - \else - \if\@author\@empty\else - % sneeky comma needed after \@matrikelnr to deal with single item list - \foreach \x [count=\i,evaluate=\i as \y using {{\@matrikelnr,}[\i-1]}] in \@author {\eaddtabtoks{\x & \y\protect\\}} - \usekomafont{author}{\def\arraystretch{1.2} - \if\@param l\hspace{-6pt}\begin{tabular}{l l}\printtabtoks\end{tabular}\fi - \if\@param c\begin{tabular}{l l}\printtabtoks\end{tabular}\fi - \if\@param r\begin{tabular}{r r}\printtabtoks\end{tabular}\hspace{-6pt}\fi - } - \fi - \fi}% - \vskip 1.5em - {\usekomafont{date}{\@date \par}}% - \vskip \z@ \@plus3fill - {\if\@professor\@empty\else\usekomafont{author}{Professor(in)/Lehrbeauftragte(r): \@professor}\fi} - %{\usekomafont{publishers}{\@publishers \par}}% - \vskip 3em - \if\@param c\end{center}\fi - \if\@param r\end{flushright}\fi - \par - \@thanks\global\let\@thanks\@empty - \vfill\null - \if@twoside - \@tempswatrue - \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax - \else - \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty - \@tempswafalse - \fi\fi - \fi - \if@tempswa - \next@tpage - \begin{minipage}[t]{\textwidth} - \@uppertitleback - \end{minipage}\par - \vfill - \begin{minipage}[b]{\textwidth} - \@lowertitleback - \end{minipage}\par - \@thanks\global\let\@thanks\@empty - \fi - \else - \ifx\@uppertitleback\@empty\else - \ClassWarning{\KOMAClassName}{% - non empty \string\uppertitleback\space ignored - by \string\maketitle\MessageBreak - in `twoside=false' mode% - }% - \fi - \ifx\@lowertitleback\@empty\else - \ClassWarning{\KOMAClassName}{% - non empty \string\lowertitleback\space ignored - by \string\maketitle\MessageBreak - in `twoside=false' mode% - }% - \fi - \fi - \ifx\@dedication\@empty - \else - \next@tdpage\null\vfill - {\centering\usekomafont{dedication}{\@dedication \par}}% - \vskip \z@ \@plus3fill - \@thanks\global\let\@thanks\@empty - \cleardoubleemptypage - \fi - \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi - \end{titlepage} - \setcounter{footnote}{0}% - \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax - \let\thanks\relax - \let\maketitle\relax - \let\@maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\@subtitle\@empty - \global\let\@extratitle\@empty - \global\let\@frontispiece\@empty - \global\let\@titlehead\@empty - \global\let\@subject\@empty - \global\let\@publishers\@empty - \global\let\@uppertitleback\@empty - \global\let\@lowertitleback\@empty - \global\let\@dedication\@empty - \global\let\@matrikelnr\@empty - \global\let\@professor\@empty - \global\let\author\relax - \global\let\title\relax - \global\let\extratitle\relax - \global\let\titlehead\relax - \global\let\subject\relax - \global\let\publishers\relax - \global\let\uppertitleback\relax - \global\let\lowertitleback\relax - \global\let\dedication\relax - \global\let\date\relax - \global\let\matrikelnr\relax - \global\let\professor\relax - \fi - \global\let\and\relax -}% +%% reconfig Titlepage ----------------------------------------------------------------------------- +\newtoks\@tabtoks +\newcommand\addtabtoks[1]{\global\@tabtoks\expandafter{\the\@tabtoks#1}} +\newcommand\eaddtabtoks[1]{\edef\mytmp{#1}\expandafter\addtabtoks\expandafter{\mytmp}} +\newcommand*\printtabtoks{\the\@tabtoks} +\addtokomafont{publishers}{\normalsize} +\renewcommand\maketitle[1][l]{ + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \else + \def\and{% + \end{tabular} + \hskip 1em \@plus.17fil + \begin{tabular}[t]{c}% + } + \fi + \begin{titlepage} + \let\@param#1 + \ifx\@param\@empty + \ClassError{\myClassName}{\maketitle\space with empty option}{ + \maketitle[] has been called with an empty parameter, this doesn't work. Use \maketitle instead. + } + \fi + \if@titlepageiscoverpage + \edef\titlepage@restore{ + \noexpand\endgroup + \noexpand\global\noexpand\@colht\the\@colht + \noexpand\global\noexpand\@colroom\the\@colroom + \noexpand\global\vsize\the\vsize + \noexpand\global\noexpand\@titlepageiscoverpagefalse + \noexpand\let\noexpand\titlepage@restore\noexpand\relax + } + \begingroup + \topmargin=\dimexpr \coverpagetopmargin-1in\relax + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax + \textwidth=\dimexpr + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax + \textheight=\dimexpr + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax + \headheight=0pt + \headsep=0pt + \footskip=\baselineskip + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \hsize=\columnwidth + \linewidth=\hsize + \else + \let\titlepage@restore\relax + \fi + \let\footnotesize\small + \let\footnoterule\relax + \let\footnote\thanks + \renewcommand*\thefootnote{\@fnsymbol\c@footnote}% + \let\@oldmakefnmark\@makefnmark + \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}% + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else + \if@twoside\mbox{}\next@tpage\fi + \noindent\@frontispiece\next@tdpage + \fi + \else + \noindent\@extratitle + \ifx\@frontispiece\@empty + \else + \next@tpage + \noindent\@frontispiece + \fi + \next@tdpage + \fi + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \IfFileExists{\HsHlogoPath}{}{ + \ClassError{\myClassName}{HsH-Logo.pdf not found!}{ + The HsH Logo is necasary for the titlepage! Try putting it next to your source file or use \HsHlogoPath to define the file location + } + } + \vspace*{1cm} + \begin{minipage}[t]{\textwidth}% + \ifx\@titlehead\@empty \else + \usekomafont{titlehead}{\@titlehead}% + \fi + \hfill + \raisebox{0pt}[\ht\strutbox][\dp\strutbox]{\includeHsHlogohere} + \end{minipage} + \raisebox{10pt}{\rule{\textwidth}{0.5pt}} + \null + \vfill + \begingroup + \if\@param c\centering\fi + \if\@param r\raggedleft\fi + \ifx\@subject\@empty\else + {\usekomafont{subject}{\@subject\par}} + \vskip 3em + \fi + {\usekomafont{title}{\huge\@title\par}} + \vskip 1em + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi} + \vskip 4em + {\ifx\@matrikelnr\@empty + \if\@author\@empty\else\usekomafont{author}{ + \parbox{\dimexpr\linewidth}{ + \if\@param c\centering\fi + \if\@param r\raggedleft\fi + \@author + } + }\fi + \else + \if\@author\@empty\else + % sneeky comma needed after \@matrikelnr to deal with single item lists + \foreach \x [count=\i,evaluate=\i as \y using {{\@matrikelnr,}[\i-1]}] in \@author {\eaddtabtoks{\x & \y\protect\\}} + \usekomafont{author}{\def\arraystretch{1.2} + \if\@param l\hspace{-6pt}\begin{tabular}{l l}\printtabtoks\end{tabular}\fi + \if\@param c\begin{tabular}{l l}\printtabtoks\end{tabular}\fi + \if\@param r\begin{tabular}{r r}\printtabtoks\end{tabular}\hspace{-6pt}\fi + } + \fi + \fi} + \vskip 1.5em + {\usekomafont{date}{\@date\par}} + \vskip \z@ \@plus3fill + {\if\@professor\@empty\else\usekomafont{publishers}{Professor\if@german(in)/Lehrbeauftragte(r)\fi: \@professor}\fi} + \par + \endgroup + \vskip 3em + \@thanks\global\let\@thanks\@empty + \vfill\null + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty + \@tempswafalse + \fi\fi + \fi + \if@tempswa + \next@tpage + \begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage}\par + \@thanks\global\let\@thanks\@empty + \fi + \else + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + } + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `twoside=false' mode% + } + \fi + \fi + \ifx\@dedication\@empty + \else + \next@tdpage\null\vfill + {\centering\usekomafont{dedication}{\@dedication \par}}% + \vskip \z@ \@plus3fill + \@thanks\global\let\@thanks\@empty + \cleardoubleemptypage + \fi + \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi + \end{titlepage} + \setcounter{footnote}{0} + \expandafter\ifnum \csname scr@v@3.12\endcsname>\scr@compatibility\relax + \let\thanks\relax + \let\maketitle\relax + \let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\@subtitle\@empty + \global\let\@extratitle\@empty + \global\let\@frontispiece\@empty + \global\let\@titlehead\@empty + \global\let\@subject\@empty + \global\let\@publishers\@empty + \global\let\@uppertitleback\@empty + \global\let\@lowertitleback\@empty + \global\let\@dedication\@empty + \global\let\@matrikelnr\@empty + \global\let\@prof\@empty + \global\let\author\relax + \global\let\title\relax + \global\let\extratitle\relax + \global\let\titlehead\relax + \global\let\subject\relax + \global\let\publishers\relax + \global\let\uppertitleback\relax + \global\let\lowertitleback\relax + \global\let\dedication\relax + \global\let\date\relax + \global\let\matrikelnr\relax + \global\let\professor\relax + \fi + \global\let\and\relax +} +\endinput +%% +%% End of file `HsH-report.cls'. diff --git a/src/HsH-standalone.cls b/src/HsH-standalone.cls index 8f8f900ae80a652837292ec5fc3250978e66191b..417fc5e5ea416f6a7bf54f7a2ec3279345fb5bfc 100644 --- a/src/HsH-standalone.cls +++ b/src/HsH-standalone.cls @@ -1,56 +1,88 @@ +%% +%% This is file `HsH-standalone.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% HsH-classes.dtx (with options: `standalone') +%% +%% This is a generated file. +%% +%% Copyright (C) 2021 by Jan Wille <mail@janwille.de> +%% +%% This file 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 +%% 2021/01/01 or later. +%% \typeout{Adapted from KOMA script for use in Hochschule Hannover <2021-03-18> Jan Wille} \NeedsTeXFormat{LaTeX2e} - \newcommand{\myClassName}{HsH-standalone} -\ProvidesClass{\myClassName}[2021/03/18 HsH Report based on KOMA] +\ProvidesClass{\myClassName}[2021/03/18 v1.0 HsH-Class based on KOMA] +%% commands for HsH-logo \newcommand{\HsHlogoPath}{HSH-Logo.pdf} \newcommand{\HsHlogoPage}{1} -\newcommand{\includeHsHlogohere}{\includegraphics[width=5cm,page=\HsHlogoPage]{\HsHlogoPath}} - - +\newcommand{\includeHsHlogohere}[1][5cm]{\includegraphics[width=#1,page=\HsHlogoPage]{\HsHlogoPath}} \newif\if@german% + +%% document options ------------------------------------------------------------------------------- \DeclareOption{german}{% - \PassOptionsToPackage{ngerman}{babel} - \@germantrue + \@germantrue } \DeclareOption{ngerman}{% - \PassOptionsToPackage{\CurrentOption}{babel} - \@germantrue + \@germantrue } \DeclareOption{english}{% - \PassOptionsToPackage{\CurrentOption}{babel} - \@germanfalse + \@germanfalse } \DeclareOption{f1}{% use logo of fakulty 1 - \renewcommand{\HsHlogoPage}{2} + \renewcommand{\HsHlogoPage}{2} } \DeclareOption{f2}{% use logo of fakulty 2 - \renewcommand{\HsHlogoPage}{3} + \renewcommand{\HsHlogoPage}{3} } \DeclareOption{f3}{% use logo of fakulty 3 - \renewcommand{\HsHlogoPage}{4} + \renewcommand{\HsHlogoPage}{4} } \DeclareOption{f4}{% use logo of fakulty 4 - \renewcommand{\HsHlogoPage}{5} + \renewcommand{\HsHlogoPage}{5} } \DeclareOption{f5}{% use logo of fakulty 5 - \renewcommand{\HsHlogoPage}{6} + \renewcommand{\HsHlogoPage}{6} } \DeclareOption{sans}{% use san serif font - \renewcommand{\familydefault}{\sfdefault} + \renewcommand{\familydefault}{\sfdefault} } \DeclareOption{roman}{% use roman/serif font - \renewcommand{\familydefault}{\rmdefault} + \renewcommand{\familydefault}{\rmdefault} } \DeclareOption*{\PassOptionsToClass{\CurrentOption}{standalone}} - \ExecuteOptions{margin=0.25cm,fontsize=11pt,a4paper,ngerman,sans} % standart options \ProcessOptions\relax +%% Load KOMA class \LoadClass[multi=tikzpicture,multi=circuitikz]{standalone} +%% package loading and config --------------------------------------------------------------------- +\PassOptionsToPackage{utf8}{inputenc} +\RequirePackage{inputenc} +\PassOptionsToPackage{T1}{fontenc} +\RequirePackage{fontenc} +\RequirePackage{lmodern} % font +\RequirePackage{graphicx} +\RequirePackage{amsmath} +\if@german\RequirePackage{ziffer}\fi +%% options for not loaded packages ---------------------------------------------------------------- +\PassOptionsToPackage{free-standing-units,abbreviations}{siunitx} +\PassOptionsToPackage{european,EFvoltages,straightvoltages,betterproportions}{circuitikz} +%% title matters ---------------------------------------------------------------------------------- \newcommand*{\@titlehead}{}% \newcommand{\titlehead}[1]{\gdef\@titlehead{#1}}% \newcommand*{\@subject}{}% @@ -61,51 +93,42 @@ \newcommand{\matrikelnr}[1]{\gdef\@matrikelnr{#1}}% \newcommand*{\@professor}{}% \newcommand{\professor}[1]{\gdef\@professor{#1}}% +\newcommand*{\@keywords}{}% +\newcommand{\keywords}[1]{\gdef\@keywords{#1}}% +\let\@author\@empty +\let\@keywords\@empty \InputIfFileExists{personal.tex}{ - \ClassInfo{\myClassName}{personal.tex was found. Using it...} + \ClassInfo{\myClassName}{personal.tex was found. Using it...} }{ - \ClassInfo{\myClassName}{no personal.tex! Configre the titlepage yourself} + \ClassInfo{\myClassName}{no personal.tex! Configre the titlepage yourself} } -% enforced options for packages -\PassOptionsToPackage{utf8}{inputenc} -\PassOptionsToPackage{T1}{fontenc} -\PassOptionsToPackage{babel, german=quotes}{csquotes} -\PassOptionsToPackage{free-standing-units}{siunitx} -\PassOptionsToPackage{european,EFvoltages,straightvoltages,betterproportions}{circuitikz} - -% used packages: -\RequirePackage{inputenc} % inputencoding, utf8 recomendet -\RequirePackage{fontenc} % outputencoding, T1 recomendet -\RequirePackage{lmodern} % font -\RequirePackage{graphicx} % required for importing images -\RequirePackage{babel} % required for german names -\RequirePackage{amsmath} % a lot of nice Math -\if@german\RequirePackage{ziffer}\fi % german dezimal numbers - -% typesetting indexes upright or standart +%% typesetting indexes upright or standart \def\subinrm#1{\sb{\mathrm{#1}}} {\catcode`\_=13 \global\let_=\subinrm} \mathcode`_="8000 -\newcommand\upsubscripts{\catcode`\_=12 } % the toggle for upright subscripts -\newcommand\normalsubscripts{\catcode`\_=8 } % the toggle for italic subscripts -\upsubscripts % setting upright as default - -% keep compatible -\providecommand{\renewcaptionname}[3]{} +\newcommand\upsubscripts{\catcode`\_=12 } +\newcommand\normalsubscripts{\catcode`\_=8 } +\upsubscripts -% load config at beginning of document +%% load config at beginning of document \AtBeginDocument{ - \makeatletter - \@ifpackageloaded{subfigure}{ - \newcommand{\subfigureautorefname}{\figureautorefname} - } - \InputIfFileExists{config.tex}{ - \ClassInfo{\myClassName}{config.tex was found. Using it...} - }{ - \ClassInfo{\myClassName}{no config.tex!! I hope you configured it yourself.} - } - % provide some usefull commands: - \providecommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}} % Makro for vertical lines around absolute values - \makeatother + \makeatletter + \@ifpackageloaded{biblatex}{ + \renewcommand*{\mkbibacro}[1]{\MakeUppercase{#1}} + }{} + \@ifpackageloaded{subfigure}{ + \newcommand{\subfigureautorefname}{\figureautorefname} + }{} + \InputIfFileExists{config.tex}{ + \ClassInfo{\myClassName}{config.tex was found. Using it...} + }{ + \ClassInfo{\myClassName}{no config.tex!! I hope you configered it yourself.} + } + %% provide some usefull commands: + \providecommand{\abs}[1]{\ensuremath{\left\vert#1\right\vert}} + \makeatother } +\endinput +%% +%% End of file `HsH-standalone.cls'. diff --git a/src/config.tex b/src/config.tex index 799f808911816d95679276795d0cc064a7596890..f877076a075773beb9adaa3d05a884d668317a80 100644 --- a/src/config.tex +++ b/src/config.tex @@ -1,90 +1,88 @@ -\if@german - \renewcommand{\abstractname}{Abstract} % Abstract - \renewcaptionname{ngerman}{\figurename}{Abb.} %Figure - \renewcaptionname{ngerman}{\tablename}{Tab.} %Table -\else - \renewcaptionname{english}{\figurename}{Fig.} %Figure - \renewcaptionname{english}{\tablename}{Tab.} %Table -\fi - -\ifx\KOMAScriptVersion\undefined\else % check if KOMA is used - \g@addto@macro\@floatboxreset\centering % center all floats - \setcapwidth[c]{0.8\textwidth} % center all captions - %\setcapwidth[l]{0.8\textwidth} % leftalign all captions -\fi +%% Meta Data for the PDF file +\@ifpackageloaded{hyperref}{ + \hypersetup{ + pdfinfo={ + Title={\@title}, + Author={\@author}, + Subject={\@subject}, + Keywords={\@keywords} + } + } +} +%% configs for optional packages: \@ifpackageloaded{biblatex}{ - \ExecuteBibliographyOptions{ - bibwarn=true, - url=true, - isbn=false, - } -}{}% + \ExecuteBibliographyOptions{ + bibwarn=true, + url=true, + isbn=false, + } +}{} \@ifpackageloaded{siunitx}{ - \if@german % if german - \sisetup{output-decimal-marker={,}} % use comma as dezimal - \fi - \sisetup{ - tight-spacing=true, - per-mode=symbol, - scientific-notation=engineering, - % exponent-to-prefix, % use this instead of sci-notatio - round-mode = places, % round numbers - round-precision = 3, % to 3 places - } -}{}% + \if@german + \sisetup{output-decimal-marker={,}} % use comma as dezimal + \fi + \sisetup{ + tight-spacing=true, + per-mode=symbol, + scientific-notation=engineering, + %exponent-to-prefix, % use this instead of sci-notatio + round-mode = places, % round numbers + round-precision = 3, % to 3 places + } +}{} \@ifpackageloaded{listings}{ - \lstset{ - commentstyle=\color{gray}, - keywordstyle=\color{red}, - stringstyle=\color{blue}, - showstringspaces=false, - basicstyle=\ttfamily, - tabsize=4, - literate={Ö}{{\"O}}1{Ä}{{\"A}}1{Ü}{{\"U}}1{ß}{{\ss}}1{ü}{{\"u}}1{ä}{{\"a}}1{ö}{{\"o}}1, - escapeinside={(*@}{@*)}, - } -}{}% + \lstset{ + commentstyle=\color{gray}, + keywordstyle=\color{red}, + stringstyle=\color{blue}, + showstringspaces=false, + basicstyle=\ttfamily, + tabsize=4, + literate={Ö}{{\"O}}1{Ä}{{\"A}}1{Ü}{{\"U}}1{ß}{{\ss}}1{ü}{{\"u}}1{ä}{{\"a}}1{ö}{{\"o}}1, + escapeinside={(*@}{@*)}, + } +}{} \@ifpackageloaded{enumitem}{ - \newlist{checklist}{itemize}{2} - \setlist[checklist]{label=$\square$} -}{}% + \newlist{checklist}{itemize}{2} + \setlist[checklist]{label=$\square$} +}{} \@ifpackageloaded{csvsimple}{ - \csvstyle{every csv}{separator=semicolon} -}{}% + \csvstyle{every csv}{separator=semicolon} % global seperator for csv files +}{} \@ifpackageloaded{circuitikz}{ - \ctikzset{ - font=\footnotesize, - bipole annotation style/.style={font=\tiny ,inner sep=1pt}, - } -}{}% + \ctikzset{ + font=\footnotesize, + bipole annotation style/.style={font=\tiny ,inner sep=1pt}, + } +}{} \@ifpackageloaded{pgfplots}{ - \usepgfplotslibrary{fillbetween} % mark areas under or between graphs - \usetikzlibrary{patterns} % for using pattern in plots - \if@german - \pgfplotsset{/pgf/number format/use comma} - \fi - \pgfplotsset{ - compat=1.16, - /pgf/number format/read comma as period, - every tick label/.append style={font=\tiny}, - every axis legend/.append style={font=\footnotesize}, - MyPlots/.style = { % Style für alle Plots - width=.6\textwidth, - grid=major, % Gitter für haupt Ticks - grid style={dashed,gray!50}, % Hintergrund Gitter - legend pos=outer north east, % Position der Legende - FM1/.style = {blue, thick, mark=x, mark size=1.5,samples=100}, % Format 1 - FM2/.style = {orange, thick, mark=*, mark size=1,samples=100}, % Format 2 - FM3/.style = {green, thick, mark=square*, mark size=1,samples=100}, % Format 3 - FM4/.style = {red, thick, mark=diamond*, mark size=1,samples=100}, % Format 4 - FM5/.style = {pink, thick, mark=triangel*, mark size=1,samples=100},% Format 5 - errBars/.style = {error bars/.cd, y dir=both, y explicit, % ermöglicht Fehlerbalken - error mark options={mark size=1pt,rotate=90}}, - } - } -}{}% + \usepgfplotslibrary{fillbetween} % mark areas under or between graphs + \usetikzlibrary{patterns} % for using pattern in plots + \if@german + \pgfplotsset{/pgf/number format/use comma} + \fi + \pgfplotsset{ + compat=1.16, + /pgf/number format/read comma as period, + every tick label/.append style={font=\tiny}, + every axis legend/.append style={font=\footnotesize}, + MyPlots/.style = { % Style for all plots + width=.6\textwidth, + grid=major, + grid style={dashed,gray!50}, + legend pos=outer north east, + FM1/.style = {blue, thick, mark=x, mark size=1.5,samples=100}, % Format 1 + FM2/.style = {orange, thick, mark=*, mark size=1,samples=100}, % Format 2 + FM3/.style = {green, thick, mark=square*, mark size=1,samples=100}, % Format 3 + FM4/.style = {red, thick, mark=diamond*, mark size=1,samples=100}, % Format 4 + FM5/.style = {pink, thick, mark=triangel*, mark size=1,samples=100},% Format 5 + errBars/.style = {error bars/.cd, y dir=both, y explicit, % ermöglicht Fehlerbalken + error mark options={mark size=1pt,rotate=90}}, + } + } +}{} \@ifpackageloaded{pgfplotstable}{ - \pgfplotstableset{ - col sep=semicolon, % global seperator for csv files - } -}{}% + \pgfplotstableset{ + col sep=semicolon, % global seperator for csv files + } +}{} diff --git a/src/personal.tex b/src/personal.tex index 12f3756e3d50345926891cf320f0b813f41674eb..961cf82c01f30e761548d50f88143ea0210526e8 100644 --- a/src/personal.tex +++ b/src/personal.tex @@ -13,3 +13,4 @@ \subtitle{Subtitle} \date{\today} \professor{Professor} +\keywords{keyword}