diff --git a/packages/preview/usenix/0.0.1/LICENSE b/packages/preview/usenix/0.0.1/LICENSE new file mode 100644 index 0000000000..30bf94db29 --- /dev/null +++ b/packages/preview/usenix/0.0.1/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Junliang Hu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/usenix/0.0.1/README.md b/packages/preview/usenix/0.0.1/README.md new file mode 100644 index 0000000000..02febb0925 --- /dev/null +++ b/packages/preview/usenix/0.0.1/README.md @@ -0,0 +1,126 @@ +# usenix + +This template is intended for submitting papers to USENIX conferences, include OSDI, NSDI, FAST, ATC, etc. + +## Usage + +You can use this template in the Typst web app by clicking "Start from template" on the dashboard and searching for `usenix`. + +Alternatively, you can use the CLI to kick this project off using the command + +``` +typst init @preview/usenix +``` + + + +Typst will create a new directory with all the files needed to get you started. + +## Configuration + +This template exports the `ieee` function with the following named arguments: +- `title`: The paper's title as content +- `authors`: An array of author dictionaries. Each of the author dictionaries must have a `name`, and a `mark`. +- `affiliations`: An array of affiliation dictionaries. Each of the affliation dictionaries must have a `name`, and a `mark`. +- `review`: A boolean flag indicating whether we should hide content marked with `` to facilitate the anoymouse review process. +- `print`: A boolean flag indicating whether we should put links in a box for easier reading on screen. + +The function also accepts a single, positional argument for the body of the paper. + +The template will initialize your package with a sample call to the `usenix` function in a show rule. If you want to change an existing project to use this template, you can add a show rule like this at the top of your file: + +```typ +#import "@preview/usenix:0.0.1": usenix + +#let cuhk = image("logo-cuhk.svg", height: 0.6em) +#let typst = [#sym.dagger] + +#show usenix.with( + title: [ + A Typesetting System to Untangle the Scientific Writing Process + ], + authors: ( + (name: "Junliang Hu", email: "jlhu@cse.cuhk.edu.hk", mark: cuhk), + (name: "Martin Haug", email: "haug@typst.app", mark: typst), + (name: "Laurenz Mädje", email: "maedje@typst.app", mark: typst), + ), + affiliations: ( + (name: "The Chinese University of Hong Kong", mark: cuhk), + (name: "Typst GmbH", mark: typst), + ), + review: true, + print: true, +) + += Abstract +The process of scientific writing is often tangled up with the intricacies of typesetting, leading to frustration and wasted time for researchers. In this paper, we introduce Typst, a new typesetting system designed specifically for scientific writing. Typst untangles the typesetting process, allowing researchers to compose papers faster. In a series of experiments we demonstrate that Typst offers several advantages, including faster document creation, simplified syntax, and increased ease-of-use. + + += Introduction +Scientific writing is a crucial part of the research process, allowing researchers to share their findings with the wider scientific community. However, the process of typesetting scientific documents can often be a frustrating and time-consuming affair, particularly when using outdated tools such as LaTeX. Despite being over 30 years old, it remains a popular choice for scientific writing due to its power and flexibility. However, it also comes with a steep learning curve, complex syntax, and long compile times, leading to frustration and despair for many researchers @netwok2020 @netwok2022. + +== Paper overview +In this paper we introduce Typst, a new typesetting system designed to streamline the scientific writing process and provide researchers with a fast, efficient, and easy-to-use alternative to existing systems. Our goal is to shake up the status quo and offer researchers a better way to approach scientific writing. + +By leveraging advanced algorithms and a user-friendly interface, Typst offers several advantages over existing typesetting systems, including faster document creation, simplified syntax, and increased ease-of-use. + +To demonstrate the potential of Typst, we conducted a series of experiments comparing it to other popular typesetting systems, including LaTeX. Our findings suggest that Typst offers several benefits for scientific writing, particularly for novice users who may struggle with the complexities of LaTeX. Additionally, we demonstrate that Typst offers advanced features for experienced users, allowing for greater customization and flexibility in document creation. + +Overall, we believe that Typst represents a significant step forward in the field of scientific writing and typesetting, providing researchers with a valuable tool to streamline their workflow and focus on what really matters: their research. In the following sections, we will introduce Typst in more detail and provide evidence for its superiority over other typesetting systems in a variety of scenarios. + += Methods +#lorem(45) + +$ a + b = gamma $ + +#lorem(80) + +#figure( + placement: none, + circle(radius: 15pt), + caption: [A circle representing the Sun.] +) + +In @fig:sun you can see a common representation of the Sun, which is a star that is located at the center of the solar system. + +#lorem(120) + +#figure( + caption: [The Planets of the Solar System and Their Average Distance from the Sun], + placement: top, + table( + // Table styling is not mandated by the IEEE. Feel free to adjust these + // settings and potentially move them into a set rule. + columns: (6em, auto), + align: (left, right), + inset: (x: 8pt, y: 4pt), + stroke: (x, y) => if y <= 1 { (top: 0.5pt) }, + fill: (x, y) => if y > 0 and calc.rem(y, 2) == 0 { rgb("#efefef") }, + + table.header[Planet][Distance (million km)], + [Mercury], [57.9], + [Venus], [108.2], + [Earth], [149.6], + [Mars], [227.9], + [Jupiter], [778.6], + [Saturn], [1,433.5], + [Uranus], [2,872.5], + [Neptune], [4,495.1], + ) +) + +In @tab:planets, you see the planets of the solar system and their average distance from the Sun. +The distances were calculated with @eq:gamma that we presented in @sec:methods. + +#lorem(240) + +#lorem(240) + +#bibliography("refs.bib", title: "References", style: "association-for-computing-machinery") + +#set heading(numbering: "A.a.a") + += Artifact Appendix +In this section we show how to reproduce our findings. +``` + diff --git a/packages/preview/usenix/0.0.1/template/logo-cuhk.svg b/packages/preview/usenix/0.0.1/template/logo-cuhk.svg new file mode 100644 index 0000000000..e340eb79b0 --- /dev/null +++ b/packages/preview/usenix/0.0.1/template/logo-cuhk.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/preview/usenix/0.0.1/template/main.typ b/packages/preview/usenix/0.0.1/template/main.typ new file mode 100644 index 0000000000..e9f11a5eb3 --- /dev/null +++ b/packages/preview/usenix/0.0.1/template/main.typ @@ -0,0 +1,94 @@ +#import "@preview/usenix:0.0.1": usenix + +#let cuhk = image("logo-cuhk.svg", height: 0.6em) +#let typst = [#sym.dagger] + +#show: usenix.with( + title: [ + A Typesetting System to Untangle the Scientific Writing Process + ], + authors: ( + (name: "Junliang Hu", email: "jlhu@cse.cuhk.edu.hk", mark: cuhk), + (name: "Martin Haug", email: "haug@typst.app", mark: typst), + (name: "Laurenz Mädje", email: "maedje@typst.app", mark: typst), + ), + affiliations: ( + (name: "The Chinese University of Hong Kong", mark: cuhk), + (name: "Typst GmbH", mark: typst), + ), + review: false, + print: true, +) + += Abstract +The process of scientific writing is often tangled up with the intricacies of typesetting, leading to frustration and wasted time for researchers. In this paper, we introduce Typst, a new typesetting system designed specifically for scientific writing. Typst untangles the typesetting process, allowing researchers to compose papers faster. In a series of experiments we demonstrate that Typst offers several advantages, including faster document creation, simplified syntax, and increased ease-of-use. + + += Introduction +Scientific writing is a crucial part of the research process, allowing researchers to share their findings with the wider scientific community. However, the process of typesetting scientific documents can often be a frustrating and time-consuming affair, particularly when using outdated tools such as LaTeX. Despite being over 30 years old, it remains a popular choice for scientific writing due to its power and flexibility. However, it also comes with a steep learning curve, complex syntax, and long compile times, leading to frustration and despair for many researchers @netwok2020 @netwok2022. + +== Paper overview +In this paper we introduce Typst, a new typesetting system designed to streamline the scientific writing process and provide researchers with a fast, efficient, and easy-to-use alternative to existing systems. Our goal is to shake up the status quo and offer researchers a better way to approach scientific writing. + +By leveraging advanced algorithms and a user-friendly interface, Typst offers several advantages over existing typesetting systems, including faster document creation, simplified syntax, and increased ease-of-use. + +To demonstrate the potential of Typst, we conducted a series of experiments comparing it to other popular typesetting systems, including LaTeX. Our findings suggest that Typst offers several benefits for scientific writing, particularly for novice users who may struggle with the complexities of LaTeX. Additionally, we demonstrate that Typst offers advanced features for experienced users, allowing for greater customization and flexibility in document creation. + +Overall, we believe that Typst represents a significant step forward in the field of scientific writing and typesetting, providing researchers with a valuable tool to streamline their workflow and focus on what really matters: their research. In the following sections, we will introduce Typst in more detail and provide evidence for its superiority over other typesetting systems in a variety of scenarios. + += Methods +#set math.equation(numbering: "1.") +#lorem(45) + +$ a + b = gamma $ + +#lorem(80) + +#figure( + placement: none, + circle(radius: 15pt), + caption: [A circle representing the Sun.] +) + +In @fig:sun you can see a common representation of the Sun, which is a star that is located at the center of the solar system. + +#lorem(120) + +#figure( + caption: [The Planets of the Solar System and Their Average Distance from the Sun], + placement: top, + table( + // Table styling is not mandated by the IEEE. Feel free to adjust these + // settings and potentially move them into a set rule. + columns: (6em, auto), + align: (left, right), + inset: (x: 8pt, y: 4pt), + stroke: (x, y) => if y <= 1 { (top: 0.5pt) }, + fill: (x, y) => if y > 0 and calc.rem(y, 2) == 0 { rgb("#efefef") }, + + table.header[Planet][Distance (million km)], + [Mercury], [57.9], + [Venus], [108.2], + [Earth], [149.6], + [Mars], [227.9], + [Jupiter], [778.6], + [Saturn], [1,433.5], + [Uranus], [2,872.5], + [Neptune], [4,495.1], + ) +) + +In @tab:planets, you see the planets of the solar system and their average distance from the Sun. +The distances were calculated with @eq:gamma that we presented in @sec:methods. + +#lorem(240) + +#lorem(240) + +#bibliography("refs.bib", title: "References", style: "association-for-computing-machinery") + +#set heading(numbering: "A.a.a") + += Artifact Appendix +In this section we show how to reproduce our findings. + diff --git a/packages/preview/usenix/0.0.1/template/refs.bib b/packages/preview/usenix/0.0.1/template/refs.bib new file mode 100644 index 0000000000..c862e98720 --- /dev/null +++ b/packages/preview/usenix/0.0.1/template/refs.bib @@ -0,0 +1,19 @@ +@article{netwok2020, + title={At-scale impact of the {Net Wok}: A culinarically holistic investigation of distributed dumplings}, + author={Astley, Rick and Morris, Linda}, + journal={Armenian Journal of Proceedings}, + volume={61}, + pages={192--219}, + year=2020, + publisher={Automatic Publishing Inc.} +} + +@article{netwok2022, + title={{Net Wok}++: Taking distributed dumplings to the cloud}, + author={Morris, Linda and Astley, Rick}, + journal={Armenian Journal of Proceedings}, + volume={65}, + pages={101--118}, + year=2022, + publisher={Automatic Publishing Inc.} +} diff --git a/packages/preview/usenix/0.0.1/thumbnail.webp b/packages/preview/usenix/0.0.1/thumbnail.webp new file mode 100644 index 0000000000..7b06bb0886 Binary files /dev/null and b/packages/preview/usenix/0.0.1/thumbnail.webp differ diff --git a/packages/preview/usenix/0.0.1/typst.toml b/packages/preview/usenix/0.0.1/typst.toml new file mode 100644 index 0000000000..1174e8aa43 --- /dev/null +++ b/packages/preview/usenix/0.0.1/typst.toml @@ -0,0 +1,15 @@ +[package] +name = "usenix" +version = "0.0.1" +entrypoint = "usenix.typ" +authors = ["Junliang Hu "] +license = "MIT" +description = "A USENIX paper template." +repository = "https://github.com/vtta/usenix-typ" +categories = ["paper"] +disciplines = ["computer-science"] + +[template] +path = "template" +entrypoint = "main.typ" +thumbnail = "thumbnail.webp" diff --git a/packages/preview/usenix/0.0.1/usenix.typ b/packages/preview/usenix/0.0.1/usenix.typ new file mode 100644 index 0000000000..47844e3388 --- /dev/null +++ b/packages/preview/usenix/0.0.1/usenix.typ @@ -0,0 +1,154 @@ +// MIT License +// +// Copyright (c) 2023-2024 Junliang HU +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// This file is created according to the official template page and styling guide on OSDI '23: +// - https://www.usenix.org/conferences/author-resources/paper-templates +// - https://www.usenix.org/conference/osdi23/requirements-authors +// #quote[ +// - No longer than 12 single-spaced 8.5" x 11" pages, including figures and tables, plus as many pages as needed for references. +// - Submissions may include as many additional pages as needed for references but _*not*_ for supplementary material in appendices. +// - Use 10-point type on 12-point (single-spaced) leading and Times Roman or a similar font for the body of the paper. +// - All text and figures fit inside a 7" x 9" (178 mm x 229 mm) block centered on the page, using two columns separated by 0.33" (8 mm) of whitespace. All graphs and figures should be readable when printed in black and white. +// - Papers not meeting these criteria will be rejected without review, and no deadline extensions will be granted for reformatting. +// - Pages should be numbered, and figures and tables should be legible in black and white, without requiring magnification. +// - The paper review process is double-blind. Authors must make a good faith effort to anonymize their submissions, and they should not identify themselves either explicitly or by implication (e.g., through the references or acknowledgments). Submissions violating the detailed formatting and anonymization rules will not be considered for review. If you are uncertain about how to anonymize your submission, please contact the program co-chairs, osdi23chairs@usenix.org, well in advance of the submission deadline. +// ] +#import "@preview/wrap-it:0.1.0": wrap-content +#import "@preview/drafting:0.2.0": set-page-properties + +#let author(author) = if type(author) == dictionary { + align(center, wrap-content( + author.mark, + text(size: 12pt, link("mailto:" + author.email, author.name)), + align: top + right, + column-gutter: 0.2em, + )) +} + +#let affiliation(affiliation) = if type(affiliation) == dictionary { + align(center, wrap-content( + affiliation.mark, + text(size: 10pt, style: "italic", affiliation.name), + align: top + left, + column-gutter: 0.2em, + )) +} + +#let usenix( + title: [USENIX OSDI Paper Template], + authors: ( + (name: "Junliang Hu", email: "jlhu@cse.cuhk.edu.hk", mark: []), + ), + affiliations: ( + (name: [The Chinese University of Hong Kong], mark: []), + ), + review: false, + print: false, + body +) = { + set document(author: authors.map(a => a.name), title: title) + set page( + paper: "us-letter", + margin: (x: (8.5in - 7in) / 2, y: (11in - 9in) / 2), + numbering: "1", + columns: 2, + ) + // set columns(gutter: 8mm) + set columns(gutter: 1in / 3) + // The leading has different definitions, but the end result is that each page should fit exactly 54 lines of lorem ipsum. + set-page-properties() + // Font: https://tex.stackexchange.com/questions/540011/font-used-in-acm-template + set text(font: "Libertinus Serif", lang: "en", size: 10pt) + set par(spacing: .55em, leading: .55em, justify: true) + show math.equation: set text(font: "New Computer Modern Math") + show raw: set text(font: "Inconsolata", weight: "medium", size: 9pt) + show bibliography: it => { + colbreak(weak: true) + set text(size: .8em) + it + colbreak(weak: true) + } + // TODO: make cite red and ref green + // see: https://github.com/typst/typst/discussions/2585#discussioncomment-10318563 + + // https://typst-doc-cn.github.io/docs/chinese/ + // set text(font: ("Libertinus Serif", "Noto Sans CJK SC"), lang: "en", size: 10pt) + // show regex("\p{sc=Hani}+"): set text(size: 0.8em) + + // Set heading format + show heading: set text(size: 10pt) + show heading.where(level: 1): set text(size: 12pt) + set heading(numbering: "1.1.1.1") + show heading.where(body: [Abstract]): it => { + set heading(numbering: none) + align(center, block(it.body)) + } + show heading.where(body: [Acknowledgement]): it => { + set heading(numbering: none) + block(it.body) + } + show bibliography: it => { + it + counter(heading).update(0) + } + + // hide any thing tagged with + show : if review { hide } else { (e) => e } + + // Let figure float or sink to the top/bottom edge + show figure: set block(breakable: true) + // Table should have their caption on top + show figure.where(kind: table): set figure.caption(position: top) + + + // Wrap all links in a blue box + show link: it => if not print { + box(stroke: blue, it.body) + } else { it } + + // https://typst.app/docs/reference/layout/columns/ + place(top + center, scope: "parent", float: true, { + // Title row. + align(center, block(text(weight: "bold", 14pt, title))) + + // Author information. + let cols = 6 + pad(x: (cols - calc.rem(authors.len(), cols)) * 24pt, top: 12pt, [ + #grid( + columns: (1fr,) * calc.min(cols, authors.len()), + gutter: 0pt, + ..authors.map(author), + ) + ]) + + // Affiliation information. + pad(x: 60pt, bottom: 12pt, [ + #grid( + columns: (1fr,) * calc.min(4, affiliations.len()), + gutter: 0pt, + ..affiliations.map(affiliation), + ) + ]) + }) + + body +}