diff --git a/packages/preview/accelerated-jacow/0.14.1/LICENSE b/packages/preview/accelerated-jacow/0.14.1/LICENSE
new file mode 100644
index 0000000000..53d1f3d018
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/LICENSE
@@ -0,0 +1,675 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
+
diff --git a/packages/preview/accelerated-jacow/0.14.1/README.md b/packages/preview/accelerated-jacow/0.14.1/README.md
new file mode 100644
index 0000000000..a2a6812063
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/README.md
@@ -0,0 +1,93 @@
+# Accelerated JACoW template for typst
+
+[](https://github.com/eltos/accelerated-jacow)
+[](https://typst.app/universe/package/accelerated-jacow)
+
+
+Paper template for conference proceedings in accelerator physics.
+
+Based on the JACoW guide for preparation of papers
+available at https://jacow.org/.
+
+## Usage
+
+### Typst web app
+In the [typst web app](https://typst.app/app?template=accelerated-jacow) select "start from template" and search for the accelerated-jacow template.
+Alternatively, use the "create project" button at the top of the package's [typst universe page](https://typst.app/universe/package/accelerated-jacow).
+
+### Local installation
+Run these commands inside your terminal:
+```sh
+typst init @preview/accelerated-jacow
+cd accelerated-jacow
+typst watch paper.typ
+```
+
+If you don't yet have the *TeX Gyre Termes* font family, you can install it with `sudo apt install tex-gyre`.
+
+
+
+### API documentation
+
+```typ
+ #import "@preview/accelerated-jacow:0.14.1": jacow, jacow-table
+```
+
+To apply the template, use the `jacow` function with a show rule (see [template/paper.typ](template/paper.typ#L14-L45) for a comprehensive example):
+```typ
+#show: jacow.with(
+ title: [ Paper title ],
+ authors: (),
+ affiliations: (:),
+ funding: "Work supported by ...",
+ abstract: [ #lorem(20) ],
+)
+```
+It expects the following parameters:
+- `title` (content): The paper title
+- `authors` (list): The list of authors.
+ Each author is specified as a dict with the following keys:
+ - `name` (str) or `names` (list of str): The name of the author, or a list of author names with the same affiliations(s). It is possible to insert a newline "\n" characters at the beginning of the name to manually adjust the layout if required.
+ - `at` (str or list): The affiliation of the author(s), or a list of affiliations with the first one being the primary affiliation.
+ The affiliation is specified as string corresponding to a key in the affiliations dictionary (see below).
+ Primary affiliations may alternatively be specified directly in their full form ("Affiliation, City, Country").
+ - `email` (str, optional): The email address for the corresponding author(s)
+- `affiliations` (dict): Dictionary mapping affiliation keys as used with `at` in the author list to their full form (str or content, e.g. "Affiliation, City, Country").
+ It is possible to insert newline characters to manually adjust the layout if required.
+- `group-by-affiliation` (bool, optional): By default (true), the author list is grouped by affiliation. Set this to false to print all authors alphabetically with superscripts indicating their respective affiliation(s).
+- `on-behalf-of` (str or content or none): Name of the collaboration. If set, inserts a note "on behalf of ..." below the author list.
+- `funding` (str, optional): The funding note
+- `pubmatter` (dict, optional): Pubmatter object with `title`, `author`, `affiliations` and/or `abstract` if not passed explicitly, e.g. `pubmatter.load(yaml("frontmatter.yml"))`
+- `abstract` (content): The abstract
+- `draft-note` (content, optional): A draft note (such as "Version 1") to be displayed in the top right corner
+- `page-limit` (int, optional): Generate a warning if the paper (excluding references) exceeds the page limit
+- `show-line-numbers` (bool, optional): Switch to enable line numbers
+- `show-grid` (bool, optional): Switch to enable a measurement grid for debugging purposes
+- `paper-size`: (str, optional): The paper size. One of "a4", "letter" or "jacow" (default), the latter being the intersection of the two former ones.
+
+In accordance with the JACoW style guide, the author list is automatically grouped by affiliation and sorted alphabetically, with the corresponding author preceding other authors.
+
+
+The `jacow-table` function is a smart wrapper around typst's table that applies the typical jacow style (boldface header and horizontal lines):
+```typ
+#figure(
+ jacow-table("", header: top, // top, left, top+left or none
+ [Table], [Content], [...],
+ ),
+ placement: auto, // top, bottom or auto
+ caption: [...]
+)
+```
+where
+- `` (str) is the column specification, a string where each character represents a column (`a` for auto aligned, `c` for center aligned, `l` for left aligned, `r` for right aligned)
+- `header` (alignment, optional) is the header position (top and/or left)
+- other arguments and cell contents are passed to the [table](https://typst.app/docs/reference/model/table) function
+
+See [template/paper.typ](template/paper.typ) for a usage example.
+
+
+## Licence
+
+Files inside the template folder are licensed under MIT-0. You can use them without restrictions.
+The citation style (CSL) file is based on the IEEE style and licensed under the [CC BY SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) compatible [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html) license.
+All other files are licensed under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html).
diff --git a/packages/preview/accelerated-jacow/0.14.1/jacow.csl b/packages/preview/accelerated-jacow/0.14.1/jacow.csl
new file mode 100644
index 0000000000..8e97d5b81e
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/jacow.csl
@@ -0,0 +1,506 @@
+
+
diff --git a/packages/preview/accelerated-jacow/0.14.1/jacow.typ b/packages/preview/accelerated-jacow/0.14.1/jacow.typ
new file mode 100644
index 0000000000..0201680bb1
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/jacow.typ
@@ -0,0 +1,698 @@
+/*
+ * Typst template for papers to be published with JACoW
+ *
+ * Based on the JACoW guide for preparation of papers.
+ * See https://jacow.org/ for more information.
+ * Requires Typst version 0.12 for compiling
+ *
+ * This document is licensed under the GNU General Public License 3
+ * https://www.gnu.org/licenses/gpl-3.0.html
+ * Copyright (c) 2024 Philipp Niedermayer (github.com/eltos)
+ */
+
+#let jacow(
+ /// The paper title
+ /// -> content | str | none
+ title: none,
+ /// The list of authors
+ /// where each author is a dictionary with keys `name` or `names`, `at` and optionally also `email`
+ /// -> array
+ authors: (),
+ /// The list of affiliations
+ /// mapping the keys used in the authors list as `at` to the affiliation name
+ /// -> dictionary
+ affiliations: (:),
+ /// Switch to chagne between author list grouped by affiliation (default) or using superscripts to indicate affiliations
+ /// -> bool
+ group-by-affiliation: true,
+ /// Optional name of collaboration the author is writing the paper on behalf of
+ /// -> none | str | content
+ on-behalf-of: none,
+ /// The paper abstract
+ /// -> content | str | none
+ abstract: none,
+ /// Optional pubmatter object
+ /// with `title`, `author`, `affiliations` and/or `abstract` if not passed explicitly
+ /// -> dictionary
+ pubmatter: none,
+ /// Optional funding note
+ /// -> none | str
+ funding: none,
+ /// The paper size
+ /// -> "jacow" | "a4" | "letter"
+ paper-size: "jacow",
+ /// The heading used for the abstract
+ /// -> str | content
+ abstract-title: "Abstract",
+ /// The heading used for the references
+ /// -> str | content
+ bibliography-title: "References",
+ /// Optional page limit to show a warning when the paper length exceeds the limit
+ /// -> none | int
+ page-limit: none,
+ /// Optional note to show on the paper, e.g. to indicate a draft revision number
+ /// -> none | str | content
+ draft-note: none,
+ /// Switch to show line numbers
+ /// -> bool
+ show-line-numbers: false,
+ /// Switch to show gridlines and column margins
+ /// -> bool
+ show-grid: false,
+ /// The paper content
+ /// -> content
+ body,
+) = {
+ // Pubmatter support
+ if pubmatter != none {
+ if title == none {
+ title = pubmatter.title
+ }
+ if authors.len() == 0 {
+ authors = pubmatter.authors.map(a => {
+ a.insert("at", a.affiliations.map(a => a.id))
+ a
+ })
+ }
+ if affiliations.len() == 0 {
+ affiliations = pubmatter.affiliations.map(a => (a.id, a.name)).to-dict()
+ }
+ if abstract == none {
+ abstract-title = pubmatter.abstracts.at(0).title
+ abstract = pubmatter.abstracts.at(0).content
+ }
+ }
+
+
+ // sanitize author list
+ if type(authors) == dictionary { authors = (authors,) } // single author case
+ let i = 0
+ while i < authors.len() {
+ let a = authors.at(i)
+ if "names" in a {
+ for name in a.remove("names") {
+ authors.insert(i, (name: name, ..a))
+ i += 1
+ }
+ }
+ i += 1
+ }
+ authors = authors.map(a => {
+ if "by" in a.keys() { a.insert("name", a.remove("by")) }
+ if "at" in a.keys() { a.insert("affiliation", a.remove("at")) }
+ if type(a.affiliation) == str {
+ // ensure affiliation is an array
+ a.insert("affiliation", (a.remove("affiliation"),))
+ }
+ if "name" in a.keys() {
+ if a.name.starts-with("\n") { a.insert("prebreak", true) }
+ a.insert("name", a.name.trim())
+ }
+ a
+ })
+ authors = authors.filter(a => "name" in a.keys())
+
+ // sort authors: corresponding first, then alphabetic by last name
+ authors = authors.sorted(key: a => (
+ if "email" in a { " " } + a.name.split(" ").last()
+ ))
+
+
+ /// Helper for custom footnote symbols
+ let titlenotenumbering(i) = {
+ if i < 6 { ("*", "#", "§", "¶", "‡").at(i - 1) } else { (i - 4) * "*" }
+ }
+
+ /// Remove white space at begin and end
+ let strip-white-space(content) = {
+ if (content.has("children")) {
+ let clean = content.children
+ for i in (0, -1) {
+ while (
+ clean.len() > 0 and repr(clean.at(i).func()) in ("space", "parbreak")
+ ) {
+ _ = clean.remove(i)
+ }
+ }
+ clean.join()
+ } else {
+ content
+ }
+ }
+
+ /// Check if content ends with string
+ let ends-with(content, end) = {
+ if (content.has("children")) {
+ return ends-with(content.children.filter(c => c.has("text")).last(), end)
+ } else if (content.has("text")) {
+ return content.text.clusters().at(-1).ends-with(end)
+ } else {
+ return false
+ }
+ }
+
+ /// Capitalize all characters in the text, e.g. "THIS IS AN ALLCAPS HEADING"
+ let allcaps = upper
+
+ /// Capitalize major words, e.g. "This is a Word-Caps Heading"
+ /// Heuristic until we have https://github.com/typst/typst/issues/1707
+ let wordcaps(body, is-segment: false) = {
+ if body.has("text") {
+ let txt = body.text //lower(body.text)
+ let words = ()
+ if (not is-segment) { words += txt.matches(regex("^()(\\w+)")) } // first word
+ words += txt.matches(regex("([.:;?!]\s+)(\\w+)")) // words after punctuation
+ words += txt.matches(regex("()(\\w{4,})")) // words with 4+ letters
+ for m in words {
+ let (pre, word) = m.captures
+ let (w, ord) = (word.clusters().at(0), word.clusters().slice(1).join())
+ txt = txt.slice(0, m.start) + pre + upper(w) + ord + txt.slice(m.end)
+ }
+ txt
+ } else if body.has("children") {
+ body.children.map(it => wordcaps(it, is-segment: true)).join()
+ } else {
+ body
+ }
+ }
+
+
+ // metadata
+
+ set document(title: title, author: authors.map(author => author.name))
+
+
+ // layout
+
+ let paper = (
+ if lower(paper-size) == "a4" {
+ (width: 21cm, height: 29.7cm)
+ } else if lower(paper-size) in ("us", "letter", "us-letter") {
+ (width: 8.5in, height: 11in)
+ } else if lower(paper-size) in ("jacow", "test") {
+ (width: 21cm, height: 11in)
+ } else {
+ panic("Unsupported paper-size, use 'a4', 'us-letter' or 'jacow'!")
+ }
+ )
+
+ // jacow margins slightly increased as per editor request
+ let left-margin = 20mm
+ let column-width = 82.5mm
+ let column-gutter = 5mm
+ let bottom-margin = 0.75in + 0.1in
+ let column-height = 9.5in - 0.1in
+
+ set page(
+ width: paper.width,
+ height: if lower(paper-size) == "test" { auto } else { paper.height },
+ margin: (
+ left: left-margin,
+ right: paper.width - left-margin - 2 * column-width - column-gutter + 0.4mm,
+ top: paper.height - bottom-margin - column-height + 0.005in,
+ bottom: bottom-margin + 0.03in,
+ ),
+ columns: 2,
+ )
+
+ set columns(gutter: column-gutter + 0.4mm)
+
+
+ set text(
+ font: "TeX Gyre Termes",
+ size: 10pt,
+ )
+
+ set par(
+ spacing: 0.65em,
+ leading: 0.5em,
+ ..if sys.version >= version(0, 14) {
+ (
+ justification-limits: (
+ spacing: (min: 70%, max: 130%),
+ tracking: (min: -0.01em, max: 0.02em),
+ ),
+ )
+ },
+ )
+
+
+ // draft utilities
+
+ set page(
+ header: grid(columns: (2fr, 3fr), align: (left, right))[
+ // Page limit warning with note in header
+ // until we have https://github.com/typst/typst/issues/1322
+ #set text(fill: red, size: 13pt, weight: "bold")
+ #context if (
+ page-limit != none and query().at(0).location().page() > page-limit
+ ) [
+ Limit of #page-limit pages exceeded
+ ]
+ ][
+ // Draft note
+ #set text(fill: red)
+ #draft-note
+ ],
+ ..if show-grid {
+ (
+ background: [
+ #let at = (x: 0pt, y: 0pt, c) => place(bottom + left, move(
+ dx: x,
+ dy: -y,
+ c,
+ ))
+ // grid
+ #context for i in range(-1, 28) {
+ let style = (length: 100%, stroke: silver)
+ at(x: left-margin + i * 1cm, line(angle: 90deg, ..style))
+ at(y: bottom-margin + i * 0.5in, line(..style))
+ set text(fill: gray.darken(50%))
+ at(x: left-margin + i * 1cm, y: bottom-margin - 0.5in, if i == 1 [1 cm] else if i >= 0 [#i])
+ at(x: left-margin - 1cm, y: bottom-margin + i * 0.5in, if i == 1 [½ in] else if i >= 0 {
+ str(i / 2).replace(".5", "½")
+ })
+ }
+ // page and column borders
+ #at(rect(width: 21cm, height: 29.7cm)) // DIN A4
+ #at(rect(width: 8.5in, height: 11in)) // US letter
+ #at(x: left-margin, y: bottom-margin, rect(
+ width: column-width,
+ height: column-height,
+ stroke: green,
+ ))
+ #at(
+ x: left-margin + column-width + column-gutter,
+ y: bottom-margin,
+ rect(width: column-width, height: column-height, stroke: green),
+ )
+ ],
+ )
+ },
+ )
+
+ set par.line(..if show-line-numbers {
+ (numbering: it => text(fill: gray)[#it])
+ })
+
+
+ // Note: footnotes not working in parent scoped placement with two column mode.
+ // See https://github.com/typst/typst/issues/1337#issuecomment-1565376701
+ // As a workaround, we handle footnotes in the title area manually.
+ // An alternative is to not use place and use "show: columns.with(2, gutter: 0.2in)" after the title area instead of "page(columns: 2)",
+ // but then footnotes span the full page and not just the left column.
+ //let titlefootnote(text) = { footnote(numbering: titlenotenumbering, text) }
+ let footnotes = state("titlefootnotes", (:))
+ footnotes.update(footnotes => (:)) // For multiple papers in a single file
+ let titlefootnote(text) = {
+ footnotes.update(footnotes => {
+ footnotes.insert(titlenotenumbering(footnotes.len() + 1), text)
+ footnotes
+ })
+ h(0pt, weak: true)
+ context { super(footnotes.get().keys().at(-1)) }
+ }
+
+ show footnote.entry: set align(left)
+ show footnote.entry: set par(hanging-indent: 0.57em)
+ set footnote.entry(
+ indent: 0em,
+ separator: [
+ #set align(left)
+ #line(length: 40%, stroke: 0.5pt)
+ ],
+ )
+
+
+ place(
+ top + center,
+ scope: "parent",
+ float: true,
+ {
+ set align(center)
+ set par(justify: false)
+ set text(hyphenate: false)
+
+ /*
+ * Title
+ */
+
+
+ v(0.75pt)
+ if (sys.version < version(0, 14)) {
+ text(size: 14pt, weight: "bold", [
+ #allcaps(title)
+ #if funding != none { titlefootnote(funding) }
+ ])
+ v(8pt)
+ } else {
+ show std.title: set text(size: 14pt, weight: "bold")
+ show std.title: set block(below: 17pt)
+ std.title({
+ allcaps(title)
+ if funding != none { titlefootnote(funding) }
+ })
+ }
+
+
+ /*
+ * Author list
+ */
+
+ let keep-together(content) = {
+ if type(content) == str and "\n" in content {
+ // allow manual linebreaks
+ show " ": sym.space.nobreak
+ show "-": sym.hyph.nobreak
+ content
+ } else {
+ set box(
+ fill: green.lighten(50%),
+ stroke: green.lighten(50%),
+ ) if show-grid
+ box(content)
+ }
+ }
+
+ let author-entry(author, numbers: none) = {
+ if author.at("prebreak", default: false) { linebreak() }
+ keep-together({
+ author.name
+ if "email" in author { titlefootnote(author.email) }
+ if numbers != none {
+ super(typographic: false, numbers.sorted().map(str).join(","))
+ }
+ })
+ }
+
+ let affiliation-entry(id, number: none, prefix: none) = {
+ let a = affiliations.at(
+ // allow passing prim. aff. directly, but only if it's a proper one
+ id,
+ ..if "," in id { (default: id) },
+ )
+ if type(a) == str {
+ if number != none or prefix != none {
+ // trim whitespaces
+ a = a.trim()
+ } else {
+ // but allow newlines at start for manual linebreak control
+ a = a.trim(" ").trim(at: end)
+ }
+ }
+ keep-together({
+ if number != none { super(typographic: false, str(number)) }
+ if prefix != none { prefix }
+ a
+ })
+ }
+
+ text(size: 12pt, {
+ if group-by-affiliation {
+ // Grouped by Affiliation
+ // **********************
+
+ let primary-affiliations = authors.map(a => a.affiliation.first()).dedup()
+ let also-at = authors
+ .sorted(key: a => primary-affiliations.position(i => (
+ i == a.affiliation.first()
+ )))
+ .map(a => a.affiliation.slice(1))
+ .flatten()
+ .dedup()
+ also-at = also-at.zip(range(1, 1 + also-at.len())).to-dict()
+
+ // author list with primary affiliation
+ for aff in primary-affiliations {
+ let author-content = authors
+ .filter(a => a.affiliation.first() == aff)
+ .map(a => author-entry(
+ a,
+ numbers: a.affiliation.slice(1).map(i => also-at.at(i)),
+ ))
+ .join(", ")
+
+ let affiliation-content = affiliation-entry(aff)
+
+ // print author and primary affiliation entries on same or separate lines
+ layout(it => {
+ let combined-entry = author-content + ", " + affiliation-content
+ if (
+ measure(author-content, width: it.width).height == measure(combined-entry, width: it.width).height
+ ) {
+ combined-entry + "\n"
+ } else {
+ author-content + affiliation-content + "\n" // No comma here!
+ }
+ })
+ }
+
+ // secondary affiliations
+ for (a, i) in also-at {
+ affiliation-entry(a, number: i, prefix: "also at ")
+ linebreak()
+ }
+ } else {
+ // Grouped by Author
+ // *****************
+
+ let at = authors.map(a => a.affiliation).flatten().dedup()
+ at = at.zip(range(1, 1 + at.len())).to-dict()
+ if at.len() == 1 { at = (at.keys().first(): "") }
+
+ // author list
+ authors
+ .map(
+ a => author-entry(a, numbers: a.affiliation.map(i => at.at(i))),
+ )
+ .join(", ")
+ linebreak()
+
+ // affiliations
+ for (a, i) in at {
+ affiliation-entry(a, number: i)
+ linebreak()
+ }
+ }
+
+ if on-behalf-of != none {
+ "on behalf of " + on-behalf-of
+ }
+ })
+ v(1pt)
+ },
+ )
+
+
+ context {
+ for (symbol, text) in footnotes.get() {
+ place(footnote(
+ numbering: it => "",
+ { super(symbol) + sym.space.med + text },
+ ))
+ }
+ }
+
+
+ /*
+ * Contents
+ */
+
+ // paragraph
+ set align(left)
+ set par(
+ first-line-indent: 1em,
+ justify: true,
+ )
+ //show: columns.with(2, gutter: 0.2in)
+
+
+ // SECTION HEADINGS
+ show heading.where(level: 1): it => {
+ set align(center)
+ set text(size: 12pt, weight: "bold", style: "normal", hyphenate: false)
+ block(
+ below: 2pt,
+ sticky: true,
+ allcaps(it.body),
+ )
+ h(1em)
+ }
+
+ // Subsection Headings
+ show heading.where(level: 2): it => {
+ set align(left)
+ set text(size: 12pt, weight: "regular", style: "italic", hyphenate: false)
+ block(
+ below: 2pt,
+ sticky: true,
+ wordcaps(it.body),
+ )
+ h(1em)
+ }
+
+ // Third-Level Headings
+ show heading.where(level: 3): it => {
+ v(6pt)
+ text(size: 10pt, weight: "bold", style: "normal", wordcaps(it.body))
+ h(0.5em)
+ }
+
+ // lists
+ show list: set list(indent: 1em)
+
+ // figures
+ //set figure(placement: auto) // default to floating figures
+ show figure.where(placement: none): it => {
+ // add a little spacing for inline figures and tables
+ v(0.5em)
+ it
+ v(0.5em)
+ }
+ show figure.caption: it => {
+ set par(first-line-indent: 0em)
+ layout(size => context {
+ let body = strip-white-space(it.body) // removes trailing whitespace
+ if (it.kind == table) {
+ // table captions take the form of a heading (word caps)
+ body = wordcaps(body)
+ } else {
+ // figure captions must end with a period
+ if (not ends-with(body, ".")) { body += "." }
+ }
+ let caption = [#it.supplement #it.counter.display()#it.separator#body]
+ align(
+ // center for single-line, left for multi-line captions
+ if measure(caption).width < size.width { center } else { left },
+ block(width: size.width, caption),
+ )
+ })
+ }
+ show "Figure": set text(hyphenate: false)
+
+ // tables
+ show figure.where(
+ kind: table,
+ ): set figure.caption(position: top)
+
+ // equations
+ set math.equation(numbering: "(1)")
+ show math.equation: it => {
+ if it.block and not it.has("label") and it.numbering != none [
+ #counter(math.equation).update(v => v - 1)
+ #math.equation(it.body, block: true, numbering: none)
+ ] else {
+ it
+ }
+ }
+
+ // references
+ set ref(supplement: it => {
+ if it.func() == figure and it.kind == image {
+ "Fig."
+ } else if it.func() == math.equation {
+ "Eq."
+ } else {
+ it.supplement
+ }
+ })
+
+ // bibliography
+ set bibliography(title: none, style: "jacow.csl")
+ show bibliography: it => {
+ // marker to check for page limit
+ [#block(height: 0pt, above: 0pt, below: 0pt)]
+
+ heading(bibliography-title)
+ set text(9pt)
+ set par(spacing: 9pt)
+ show grid.cell.where(x: 0): set align(right)
+
+ show regex("\b(https?://\S+|10(\.\d+)+/\S+)"): it => {
+ let is-doi = it.text.starts-with("10")
+ let it = if is-doi [doi:#it] else { it }
+ let link = text(
+ font: "DejaVu Sans Mono",
+ size: 7.2pt,
+ hyphenate: false,
+ it,
+ )
+
+ if is-doi {
+ set text(fill: cmyk(73%, 37%, 0%, 22%))
+ // Avoid breaking DOI: Put in same line if it fits, otherwise force into new line
+ let link-on-new-line = state("link-on-new-line", false)
+ box(width: 1fr, layout(it => {
+ let fits-in-same-line = measure(link).width < it.width
+ link-on-new-line.update(it => not fits-in-same-line)
+ if fits-in-same-line { link }
+ }))
+ context if link-on-new-line.get() {
+ linebreak()
+ link
+ }
+ } else {
+ // URL
+ link
+ if it.text.ends-with("/") [.]
+ }
+ }
+ // JACoW demands URLs not to be clickable, only DOIs
+ // This could be done with the following show rule, however we will not do so,
+ // becaue modern PDF readers will recognize the https:// and make it clickable anyways,
+ // but most of them will fail to do it properly when the link text spanns multiple lines.
+ // So this effectively just breaks the link for the user, not remove it. We can do better!
+ //show link: it => {if (it.body.text.match(regex("http.*")) == none) {it} else {it.body.text}}
+ it
+ }
+
+
+ // abstract
+ if abstract != none [
+ == #abstract-title
+ #abstract
+ ]
+
+
+ // content
+ body
+}
+
+
+
+/// Table in jacow style
+///
+/// - spec (str): Column alignment specification string such as "ccr"
+/// - header (alignment, none): header location (top and/or bottom) or none
+/// - contents: table contents
+/// -> table
+#let jacow-table(spec, header: top, ..contents) = {
+ spec = spec.codepoints()
+ if header == none { header = alignment.center }
+ let args = (
+ columns: spec.len(),
+ align: spec.map(i => (a: auto, c: center, l: left, r: right).at(i)),
+ stroke: (x, y) => {
+ if y == 0 {
+ (top: 0.08em, bottom: if header.y == top { 0.05em })
+ } else if y > 1 { (top: 0em, bottom: 0.08em) }
+ },
+ )
+ for (key, value) in contents.named() {
+ args.insert(key, value)
+ }
+
+ show table.cell.where(y: 0): it => if header.y == top { strong(it) } else {
+ it
+ }
+ show table.cell.where(x: 0): it => if header.x == left { strong(it) } else {
+ it
+ }
+
+ table(
+ ..args,
+ ..contents.pos(),
+ )
+}
+
+
diff --git a/packages/preview/accelerated-jacow/0.14.1/template/paper.typ b/packages/preview/accelerated-jacow/0.14.1/template/paper.typ
new file mode 100644
index 0000000000..b0fa1a92f1
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/template/paper.typ
@@ -0,0 +1,274 @@
+/*
+ * Paper template for JACoW conference proceedings
+ *
+ * Based on the JACoW guide for preparation of papers.
+ * See https://jacow.org/ for more information.
+ *
+ * This file is part of the accelerated-jacow template.
+ * Typst universe: https://typst.app/universe/package/accelerated-jacow
+ * GitHub repository: https://github.com/eltos/accelerated-jacow
+ */
+
+#import "@preview/accelerated-jacow:0.14.1": jacow, jacow-table
+
+#show: jacow.with(
+ // Paper title
+ title: [
+ Accelerated JAC#lower[o]W paper template\
+ for conference proceedings
+ ],
+
+ // Author list
+ authors: (
+ (name: "C. Author", at: "uni", email: "mail@example.com"),
+ (name: "P. Coauthor", at: ("uni", "third")),
+ (name: "J. Cockcroft", at: ("INP", "third")),
+ (name: "C. D. Anderson", at: "INP"),
+ (names: ("N. Bohr", "A. Einstein", "M. Curie", "E. Lawrence"), at: "INP"),
+ //(names: ("A. Group", "O. F. People"), at: "Single Use Primary Affiliation, Shortcut Way"),
+ ),
+ affiliations: (
+ uni: "Town University, City, Country",
+ INP: "Insitute of Nobel Physics, Stockhold, Sweden",
+ third: [The Third Institute, City, Country],
+ ),
+ //on-behalf-of: "the XXX collaboration",
+ //group-by-affiliation: false,
+ funding: "Work supported by ...",
+
+ // Paper abstract
+ abstract: [
+ This document demonstrates the usage of the accelerated-jacow paper template to compose papers for JACoW conference proceedings.
+ ],
+
+ // Writing utilities
+ //draft-note: [*Draft 1* \u{2503} #datetime.today().display()],
+ //page-limit: 3,
+ //show-line-numbers: true,
+ //show-grid: true,
+)
+
+
+// Other useful packages, see below for usage examples
+#import "@preview/unify:0.8.1": num, numrange, qty, qtyrange, unit
+#import "@preview/glossy:0.7.0": init-glossary
+#import "@preview/lilaq:0.6.0" as lq
+#import "@preview/physica:0.9.8": *
+
+
+
+= Introduction
+
+Typst @typst // a citation to the respective entry in "references.bib" (see below)
+is a great, modern and blazingly fast typesetting system focussed on scientific papers.
+Being markup based, it supports *strong* _emphasis_ of text, #underline[underlining], `monospace` font, smart "quotes" and much more.
+Equations can be typeset inline like $beta_"x" (s)$, and in display mode:
+
+$
+ curl E & = - pdv(B, t) \
+ integral.cont_(partial A) E dd(s) & = - integral.double_A pdv(B, t) dd(A)
+$
+
+By adding a label
+
+$
+ e^("i"pi) + 1 = 0
+$
+
+they can be referenced as in @eq:mycustomlabel. // a reference to a labelled equation
+The same works for @fig:writer and @table:xydata too.
+Remember to use the long form at the beginning of a sentence:
+@fig:writer[Figure].
+@eq:mycustomlabel[Equation].
+Done.
+
+
+= Template features
+
+The accelerated-jacow template is based on the JACoW paper preparation guide @jacowguide @jacow.org. // citations
+It takes care of proper page size, margins and spacing, generates the front matter with properly formatted title, author list, footnotes and abstract using the show-rule at the top of this document and formats headings, tables, references and more.
+
+Headings are automatically transformed to all-caps and word-caps case respectively.
+Should you require custom control on upper/lower case, this can be forced not only in the title (see above), but also in headings like so:
+
+#let nacl = [#upper[N]#lower[a]#upper[C]#lower[l]]
+
+
+== Subsection heading: #nacl, #upper[N]#lower[a]Cl, $"NaCl"$, $isotope("He", a: 4, z: 2)$
+
+=== A third level heading
+// <-- no blank line here!
+Third-level headings are also supported, but mind that you must not leave a blank line after a third-level heading to get the desired run-in heading!
+
+
+== Figures and tables
+
+Floating figures can be added and their placement can be controlled easily like shown here with @fig:writer.
+
+#figure(
+ image("writer.svg"),
+ placement: bottom, // `top`, `bottom` or `auto` for floating placement or `none` for inline placement
+ caption: [Scientific writing (AI artwork).],
+)
+
+For JACoW style tables, the `jacow-table` function is provided.
+It takes the column alignment as first argument (here `lcrl` means left, center, right, left), followed by the table contents.
+The optional `header` argument allows to adjust the appearance of the JACoW table style as shown in @table:specs.
+
+#figure(
+ // @typstyle off
+ jacow-table("lcrl",
+ [No.], [$x$ / mm], [$y$], [Note],
+ [1], [0.32], qty(70, "cm"), [Small],
+ [2], [2.5], qty(3, "dm"), [Medium],
+ [3], [18], qty(1.5, "m"), [*Large*],
+ ),
+ //placement: none, // `top`, `bottom` or `auto` for floating placement or `none` for inline placement
+ caption: [Dimensions],
+)
+
+
+#figure(
+ // @typstyle off
+ jacow-table("lccc", header: top+left, // top, left or none
+ [], [Gen A], [Gen B], [Gen C],
+ [Frequency], table.cell(qty(1234567.89, "Hz"), colspan: 3, align: center),
+ [Voltage], qty(1, "kV"), qty(3, "kV"), qty(3, "kV"),
+ [Cells], [3], [5], [9],
+ [Quality], [100], [500], num(1000),
+ ),
+ //placement: none, // `top`, `bottom` or `auto` for floating placement or `none` for inline placement
+ caption: [
+ Imaginary specifications of a device for the three generations A, B and C
+ ],
+)
+
+
+
+Finally, it is easy to create column spanning figures as shown in @fig:rect.
+These support top, bottom or automatic placement as well.
+
+#figure(
+ box(fill: silver, width: 100%, height: 2cm),
+ scope: "parent", // two column-figure
+ placement: top, // `top`, `bottom` or `auto` for floating placement or `none` for inline placement
+ caption: [A column spanning figure. #lorem(41)],
+)
+
+
+
+
+
+
+= Packages
+
+The Typst ecosystem features a broad range of community driven packages to make writing papers with Typst even more convenient.
+These can be found by exploring the Typst Universe at https://typst.app/universe.
+
+// See the import section near the top of this document
+
+
+== Physical quantities
+
+The *unify* package helps typesetting numbers and scientific quantities.
+Examples include quantities like
+#qty(1.2, "um") with reduced spacing between the number and unit
+and features like digit grouping in $q=#num(0.12345678)$.
+Uncertain quantities like $f_"rev"=qty("325.2+-0.1", "kHz")$
+as well as tolerances such as $h=qty("8.3+0.1-0.2 e-2", "mm")$ are supported.
+
+Plain units can be written as
+#unit("tesla meter") or #unit("T m") (not Tm or T m which are something different).
+More examples: #qty(3, "keV"), #qty(4, "GeV"), $qty("100", "kW")$, #qty(7, "um").
+//
+For details refer to the package documentation at https://typst.app/universe/package/unify.
+
+
+
+
+== Plots
+
+With the *lilaq* package, plots can be create directly in the document, so you can skip the additional plotting step in your workflow while ensuring that all plot elements are properly sized.
+@fig:lilaq[Figure] gives an example and the full documentation is available at https://lilaq.org.
+
+// general plot styling options
+#show lq.selector(lq.diagram): set text(.9em)
+#show: lq.set-tick(outset: 3pt, inset: 0pt)
+#show: lq.set-diagram(
+ xaxis: (mirror: (ticks: false)),
+ yaxis: (mirror: (ticks: false)),
+)
+
+#figure(
+ lq.diagram(
+ // plot a sine function
+ let x = lq.linspace(0, 10),
+ let y = x.map(x => calc.cos(x)),
+ lq.plot(x, y, mark: none, label: [$cos(x)$]),
+
+ // plot some data (practically you can load data from a file using `json` etc.)
+ lq.plot(
+ (1, 2, 3, 7, 9),
+ (-1, 1.8, 0.7, -0.3, 1),
+ yerr: 0.3,
+ mark: "o",
+ stroke: (dash: "dashed"),
+ label: [Data],
+ ),
+
+ // adjust plot layout
+ height: 3cm,
+ xlabel: [Angle ~ $x$ / rad],
+ xlim: (0, 10),
+ ylabel: [$y$ / m],
+ ylim: (-1.5, 2.5),
+ ),
+ placement: auto, // `top`, `bottom` or `auto` for floating placement or `none` for inline placement
+ caption: [A plot create with the Lilaq package directly inside the typst source code],
+)
+
+
+
+
+== Abbreviations
+
+// Abbreviation definitions
+#show: init-glossary.with((
+ JACoW: "Joint Accelerator Conferences Website",
+ RF: "radio frequency",
+))
+
+The *glossy* package helps managing abbreviations,
+automatically using the long form on first use of @JACoW
+and the short form on subsequent uses of @JACoW.
+But it can do much more:
+@RF:a:cap device shows how capitalization is applied on sentence start, and in addition the article (a/an) is managed automatically, since it differs between the first and subsequent use of @RF:a device.
+In addition, explicit forms are supported as in @RF:long, @RF:short and @RF:both,
+and plural forms can be accessed like in @RF:pl.
+For more details, refer to https://typst.app/universe/package/glossy.
+
+
+
+
+= Citations
+Reference formatting uses standard bib files.
+The bib snippets can conveniently be copied by selecting the format type "BibTex" when using the JACoW reference search tool at https://refs.jacow.org/.
+Examples are given below @typst @jacowguide @jacow.org @example-journal-article @example-report @example-book @example-book-chapter @example-thesis @example-jacow-unpublished.
+
+
+
+
+#bibliography("references.bib")
+
+
+
+// Workaround until balanced columns are available
+// See https://github.com/typst/typst/issues/466
+#place(
+ bottom,
+ scope: "parent",
+ float: true,
+ clearance: 70pt, // TODO: increase clearance for manual column balancing
+ [],
+)
+
diff --git a/packages/preview/accelerated-jacow/0.14.1/template/references.bib b/packages/preview/accelerated-jacow/0.14.1/template/references.bib
new file mode 100644
index 0000000000..954448108b
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/template/references.bib
@@ -0,0 +1,86 @@
+
+% Journal article
+@article{example-journal-article,
+ author = {A. Alpha and B. Beta and C. Gamma and D. Delta and E. Eta and F. Zeta},
+ title = {New techniques in accelerators},
+ journal = {Nucl. Instrum. Methods Phys. Res. A},
+ volume = {12},
+ number = {34},
+ pages = {56-78},
+ date = {2009},
+ doi = {10.1016/1234-5678-9},
+}
+
+% Paper in JACoW Proceedings
+@inproceedings{jacowguide,
+ author = {A. N. Author and H. Coauthor and P. Contributor},
+ title = {Preparation of Papers for {JACoW} Conferences},
+ booktitle = {Proc. IPAC'00},
+ venue = {City, Country, Month 0000},
+ pages = {000--999},
+ doi = {10.18429/JACoW-XXXX},
+}
+
+% Report
+@techreport{example-report,
+ author = {Z. C. Omega},
+ title = {Title of report},
+ address = {CERN, Geneva, Switzerland},
+ number = {NR-123-XYZ},
+ date = {1999-01},
+ url = {https://cds.cern.ch/record/00000}
+}
+
+% Website
+@online{jacow.org,
+ title = {Joint Accelerator Conferences Website (JACoW)},
+
+ url = {https://jacow.org/}
+}
+
+% Software
+@software{typst,
+ author = {Mädje, Laurenz and Haug, Martin and {The Typst Project Developers}},
+ license = {Apache-2.0},
+ title = {{Typst}},
+ url = {https://github.com/typst/typst}
+}
+
+% Book
+@book{example-book,
+ author = {A. Writer},
+ title = {Title of Book},
+ address = {Cambridge, MA, USA},
+ publisher = {MIT Press},
+ year = {2000},
+}
+
+% Book chapter
+@inbook{example-book-chapter,
+ author = {A. Writer},
+ title = {Title of chapter in the book},
+ booktitle = {Title of Book},
+ editor = {E. Orial},
+ address = {New York, NY, USA},
+ publisher = {Wiley},
+ year = {2000},
+ pages = {100-200},
+}
+
+% Thesis
+@thesis{example-thesis,
+ author = {A. Student},
+ title = {Title of thesis},
+ type = {Ph.D. thesis},
+ school = {Phys. Dept., Karlsruher Institut für Technologie},
+ address = {Karlsruhe, Germany},
+ year = {2014},
+}
+
+% Paper at same conference
+@unpublished{example-jacow-unpublished,
+ author = {A. N. Author and B. Coauthor},
+ title = {A talk at the same conference},
+ note = {presented at IPAC’00, City, Country, Jan. 2000, paper ABC123, this conference},
+}
+
diff --git a/packages/preview/accelerated-jacow/0.14.1/template/writer.svg b/packages/preview/accelerated-jacow/0.14.1/template/writer.svg
new file mode 100644
index 0000000000..66f8baf338
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/template/writer.svg
@@ -0,0 +1,184 @@
+
+
+
\ No newline at end of file
diff --git a/packages/preview/accelerated-jacow/0.14.1/thumbnail.webp b/packages/preview/accelerated-jacow/0.14.1/thumbnail.webp
new file mode 100644
index 0000000000..ad96f54877
Binary files /dev/null and b/packages/preview/accelerated-jacow/0.14.1/thumbnail.webp differ
diff --git a/packages/preview/accelerated-jacow/0.14.1/typst.toml b/packages/preview/accelerated-jacow/0.14.1/typst.toml
new file mode 100644
index 0000000000..d132b1ab95
--- /dev/null
+++ b/packages/preview/accelerated-jacow/0.14.1/typst.toml
@@ -0,0 +1,24 @@
+[package]
+name = "accelerated-jacow"
+version = "0.14.1"
+entrypoint = "jacow.typ"
+description = "Paper template for conference proceedings in accelerator physics"
+authors = [ "Philipp Niedermayer <@eltos>" ]
+license = "GPL-3.0-only AND MIT-0"
+repository = "https://github.com/eltos/accelerated-jacow/"
+keywords = [
+ "conference",
+ "proceedings",
+ "paper",
+ "accelerator",
+ "physics",
+ "jacow",
+ "ipac"
+]
+categories = [ "paper" ]
+disciplines = [ "physics", "engineering" ]
+
+[template]
+path = "template"
+entrypoint = "paper.typ"
+thumbnail = "thumbnail.webp"