diff --git a/.gitignore b/.gitignore
index 65c9800f4..c6cd73934 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,7 @@ revdep
cache
_site
_web
+*.log
+*.aux
+*_cache/
+*_files/
diff --git a/README.md b/README.md
index f82cea7c6..2067acd7a 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ install.packages("rjtools",,
c("https://rforge.net","https://cloud.R-project.org"))
```
-The to create the site use
+Then to create the site use
```
rmarkdown::render_site()
diff --git a/RJwrapper.log b/RJwrapper.log
deleted file mode 100644
index 5fb5360d2..000000000
--- a/RJwrapper.log
+++ /dev/null
@@ -1,54 +0,0 @@
-This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021) (preloaded format=pdflatex 2021.8.9) 10 AUG 2021 00:21
-entering extended mode
- restricted \write18 enabled.
- %&-line parsing enabled.
-**_news/RJ-2021-1-editorial/RJwrapper.tex
-(./_news/RJ-2021-1-editorial/RJwrapper.tex
-LaTeX2e <2021-06-01> patch level 1
-L3 programming layer <2021-07-12> (/home/mitchell/.TinyTeX/texmf-dist/tex/latex
-/base/report.cls
-Document Class: report 2021/02/12 v1.4n Standard LaTeX document class
-(/home/mitchell/.TinyTeX/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2021/02/12 v1.4n Standard LaTeX file (size option)
-)
-\c@part=\count182
-\c@chapter=\count183
-\c@section=\count184
-\c@subsection=\count185
-\c@subsubsection=\count186
-\c@paragraph=\count187
-\c@subparagraph=\count188
-\c@figure=\count189
-\c@table=\count190
-\abovecaptionskip=\skip47
-\belowcaptionskip=\skip48
-\bibindent=\dimen138
-) (/home/mitchell/.TinyTeX/texmf-dist/tex/latex/base/inputenc.sty
-Package: inputenc 2021/02/14 v1.3d Input encoding file
-\inpenc@prehook=\toks16
-\inpenc@posthook=\toks17
-) (/home/mitchell/.TinyTeX/texmf-dist/tex/latex/base/fontenc.sty
-Package: fontenc 2021/04/29 v2.0v Standard LaTeX package
-)
-
-! LaTeX Error: File `RJournal.sty' not found.
-
-Type X to quit or This article remembers our friend and colleague Fritz Leisch (1968–2024) who sadly died earlier this year. Many of the readers of The R Journal will know Fritz as a member of the R Core Team and for many of his contributions to the R community. For us, the co-authors of this article, he was an important companion on our journey with the R project and other scientific endeavours over the years. In the following, we provide a brief synopsis of his career, present his key contributions to the R project and to the scientific community more generally, acknowledge his academic service, and highlight his teaching and mentoring achievements. This article remembers our friend and colleague Fritz Leisch (1968–2024) who sadly died earlier this year. Many of the readers of The R Journal will know Fritz as a member of the R Core Team and for many of his contributions to the R community. For us, the co-authors of this article, he was an important companion on our journey with the R project and other scientific endeavours over the years. In the following, we provide a brief synopsis of his career, present his key contributions to the R project and to the scientific community more generally, acknowledge his academic service, and highlight his teaching and mentoring achievements.Remembering Friedrich “Fritz” Leisch
-
Friedrich Leisch (see Figure 1) was born 1968 in Vienna (Austria) and died -after serious illness in 2024 in Vienna. Everyone called him Fritz.
-Starting in 1987, Fritz studied Applied Mathematics at Technische -Universität Wien (TU Wien), earning his master’s degree (Dipl.-Ing.) in -1993. Subsequently, he joined the Department of Statistics and -Probability Theory at TU Wien as an assistant professor which he -continued to be, with short intermissions, until 2006. During this time -he also defended his doctoral thesis in Applied Mathematics (Dr.techn.) -in 1999 and earned his habilitation (venia docendi) in Statistics in -2005.
-In 1995, he visited the Knowledge-Based Engineering Systems Group at the -University of South-Australia in Adelaide on a Kurt Gödel scholarship -for postgraduate studies. From 1997 to 2004 he was a member of the SFB -project “Adaptive Information Systems and Modeling in Economics and -Management Science”, coordinated at Wirtschaftsuniversität Wien (WU -Wien). From 2002 to 2003 he was assistant professor at the Department of -Statistics and Decision Support Systems, Universität Wien.
-In 2006 Fritz moved to Munich, Germany, to become a professor for -computational statistics at the Department of Statistics, -Ludwig-Maximilians-Universität München (LMU), see -Figure 2. He -returned to Vienna in 2011 to join the BOKU University as head of the -Institute of Statistics, see Figure 3.
-Friedrich Leisch (see Figure 1) was born 1968 in Vienna (Austria) and +died after serious illness in 2024 in Vienna. Everyone called him Fritz.
++Figure 1: Fritz Leisch at his inaugural lecture at BOKU in 2011. Source: BOKU. +
+Starting in 1987, Fritz studied Applied Mathematics at Technische Universität Wien (TU Wien), +earning his master’s degree (Dipl.-Ing.) in 1993. Subsequently, he joined the +Department of Statistics and Probability Theory at TU Wien as an +assistant professor which he continued to be, with short intermissions, until 2006. +During this time he also defended his doctoral thesis in Applied Mathematics (Dr.techn.) +in 1999 and earned his habilitation (venia docendi) in Statistics in 2005.
+In 1995, he visited the Knowledge-Based Engineering Systems Group at the University of +South-Australia in Adelaide on a Kurt Gödel scholarship for postgraduate +studies. From 1997 to 2004 he was a member of the SFB project +“Adaptive Information Systems and Modeling in Economics and Management Science”, coordinated +at Wirtschaftsuniversität Wien (WU Wien). From 2002 to 2003 he was assistant professor +at the Department of Statistics and Decision Support Systems, Universität Wien.
+In 2006 Fritz moved to Munich, Germany, to become a professor for computational +statistics at the Department of Statistics, Ludwig-Maximilians-Universität München (LMU), see Figure 2. +He returned to Vienna in 2011 to join the BOKU University as head of the Institute of Statistics, see Figure 3.
++Figure 2: Computational statistics group at LMU in 2007 (left to right): Sebastian Kaiser, Adrian Duffner, Manuel Eugster, Fritz Leisch. Source: Carolin Strobl. +
++Figure 3: Institute of Statistics at BOKU in 2022 (left to right, back to front): Johannes Laimighofer, Nur Banu Özcelik, Ursula Laa, Fritz Leisch, Bernhard Spangl, Gregor Laaha, Matthias Medl. Robert Wiedermann, Lena Ortega Menjivar, Theresa Scharl, Melati Avedis. Source: BOKU. +
+Fritz’ scientific contributions span an impressive range including -theoretical and methodological work (especially in the field of -clustering and finite mixture models) over software (mostly related to -the R programming language) to applied work and cooperations (notably in +theoretical and methodological work (especially in the field of clustering +and finite mixture models) over software (mostly related to the R +programming language) to applied work and cooperations (notably in marketing, biotechnology, and genomics, among many others). In the following sections we try to highlight his key contributions and scientific legacy.
During his stay in Australia, Fritz had learned about the existence of -R. Back in Austria, he and Kurt started to explore this potentially good -news more systematically. They soon stopped further work on a statistics -toolbox they had developed for Octave (Eaton et al. 2024), and switched -to R for their applied work, finding lots of room for further -improvement, and thus sending polite emails with patches and more -suggestions to Ross Ihaka and Robert Gentleman. Clearly these were +R. Back in Austria, he and Kurt started to explore this potentially +good news more systematically. They soon stopped further work on a +statistics toolbox they had developed for Octave (Eaton et al. 2024), +and switched to R for their applied work, finding lots of room for +further improvement, and thus sending polite emails with patches and +more suggestions to Ross Ihaka and Robert Gentleman. Clearly these were acceptable in quality but too high in quantity, and it did not take very long that Ross and Robert gave Fritz and Kurt write access to the R sources (initially in CVS, then moved to SVN), and in 1997, they both @@ -1846,159 +2715,144 @@
+Figure 4: Screenshot of the landing page of the CRAN master site at TU Wien on 1998-01-10, as last modified by Fritz on 1997-12-09. Source: Internet Archive. +
+The first SVN commit by Fritz is from 1997-10-02, the last from
2013-10-04. Overall, there are 651 commits by Fritz, mostly from the
early years of R Core, and related to the R package management and CRAN
-mirror system, and the addition of the Sweave
system (see
-Section 2.3 for more details).
Sweave
system
+(see Section 2.3 for more details).
With establishing CRAN in Vienna at TU Wien, Fritz and Kurt laid the -foundation for a special relationship between Vienna and R that they -characterized as a story of “love and marriage” (Hornik and Leisch -2002). In the decade after the creation of CRAN a number of seminal -R-related meetings took place in Vienna, co-organized by Fritz as well -as several of the co-authors of this paper.
-The first workshop on “Distributed Statistical Computing” (DSC) took -place from March 19-23, 1999, at TU Wien. The main motivations were -bringing together the R Core Team for its first face-to-face meeting, -discussing the roadmap for the release of R 1.0.0, as well as exploring -potential synergies with other environments for statistical computing. -There were around 30 participants and about 20 presentations, many of -which were relatively short, leaving ample time for discussions (see -Figure 5).
-- - - +
With establishing CRAN in Vienna at TU Wien, Fritz and Kurt +laid the foundation for a special relationship between Vienna and R that they +characterized as a story of “love and marriage” (Hornik and Leisch 2002). In the decade +after the creation of CRAN a number of seminal R-related meetings took place in Vienna, +co-organized by Fritz as well as several of the co-authors of this paper.
+The first workshop on “Distributed Statistical Computing” (DSC) took place from +March 19-23, 1999, at TU Wien. The main motivations were bringing together the R Core Team +for its first face-to-face meeting, discussing the roadmap for the release of R 1.0.0, +as well as exploring potential synergies with other environments for statistical computing. +There were around 30 participants and about 20 presentations, many of which were +relatively short, leaving ample time for discussions (see Figure 5).
++Figure 5: Discussions at DSC 1999 (top to bottom, left to right): Thomas Lumley, Fritz Leisch, Luke Tierney. Peter Dalgaard, Ross Ihaka, Paul Murrell. Brian Ripley, Martin Mächler, Robert Gentleman, Kurt Hornik. Source: Douglas Bates (DSC 1999 homepage).
-Two more DSC workshops were organized at TU Wien in 2001 and 2003. While -meetings focusing on R development issues (with the R Core Team and -everyone else interested) were still an important part of these -conferences, they also saw an increasing number of regular conference +
Two more DSC workshops were organized at TU Wien +in 2001 and 2003. While meetings focusing on R development issues (with the +R Core Team and everyone else interested) were still an important part of +these conferences, they also saw an increasing number of regular conference presentations on R packages and their different fields of application (e.g., establishing infrastructure for spatial data). In 2001 there were -around 60 participants and about 30 presentations, most with -corresponding papers in the online proceedings (Hornik and Leisch 2001). -In 2003 this increased to more than 150 participants and about 60 -presentations, again with the majority in the online proceedings -(Hornik, Leisch, and Zeileis 2003).
-The high demand for a platform, where R users from different fields -could exchange ideas, prompted the creation of a new conference series -called useR!. The first two installments again took place in Vienna in -2004 at TU Wien and in 2006 at WU Wien. Torsten Hothorn, David Meyer, -and Achim Zeileis took the lead in the organization with support and -advice from Fritz and Kurt in the background. An important contribution -from the R Core Team at the useR! conferences were keynote lectures -highlighting important developments, e.g., a keynote given by Fritz at -useR! 2004 on S4 classes and methods. Both conferences continued the -success of the earlier DSC workshops with the number of participants -rising to more than 200 in 2004 and close to 350 in 2006. Similarly, the -number of presentations grew to about 100 in 2004 and more than 150 in -2006.
-In addition to the efforts initiated by Fritz and Kurt, another key -factor to the success of these meetings was the city of Vienna with its -culture, cafes, wine and beer pubs, etc. (see Hornik and Leisch 2002 and -also Figure 6).
-The high demand for a platform, where R users from different fields could +exchange ideas, prompted the creation of a new conference series called +useR!. The first two installments again took place in Vienna in 2004 +at TU Wien and in 2006 at WU Wien. +Torsten Hothorn, David Meyer, and Achim Zeileis took the lead in the +organization with support and advice from Fritz and Kurt in the background. +An important contribution from the R Core Team at the useR! conferences +were keynote lectures highlighting important developments, e.g., a keynote +given by Fritz at useR! 2004 on S4 classes and methods. Both conferences +continued the success of the earlier DSC workshops with the number of +participants rising to more than 200 in 2004 and close to 350 in 2006. +Similarly, the number of presentations grew to about 100 in 2004 and more +than 150 in 2006.
+In addition to the efforts initiated by Fritz and Kurt, another key factor +to the success of these meetings was the city of Vienna with its culture, +cafes, wine and beer pubs, etc. (see Hornik and Leisch 2002 and also +Figure 6).
++Figure 6: Conference dinner at useR! 2006 (left to right): Fritz Leisch, Torsten Hothorn, Tim Hesterberg. Source: Carolin Strobl (useR! 2006 homepage). +
+With Sweave
(Leisch 2002), Fritz pioneered what we now can understand
-as the technical foundation of reproducible research. Sweave
was the
-main inspiration for knitr
-(Xie 2015) which in turn led to
-rmarkdown (Xie, Allaire,
-and Grolemund 2018) and
-quarto (Scheidegger et al.
-2024). All these systems are used today to generate countless scientific
-articles, package vignettes, webpages, books, blogs, and much more in a
-dynamic and reproducible way.
Of course, Fritz was not the first one going in this direction. The
-concept of “literate programming” had been introduced by Knuth (1984),
-allowing to combine the source code for software and the corresponding
-documentation in the same file. The concepts of “tangling”, that is,
-extracting the code for compilation, and “weaving”, the process of
-generating a nicely looking document containing code next to prosa and
-formulae, have their roots in the WEB
and CWEB
systems (Knuth and
-Levy 1993). As these packages were specific to code in Pascal (WEB
)
-and C (CWEB
), respectively, and documentation in LaTeX, Ramsey (1994)
-introduced his noweb
system as a literate programming tool that is
-agnostic to the programming language used and also supports HTML in
-addition to LaTeX and a few other backends for documentation. The
-noweb
syntax for code chunks is:
With Sweave
(Leisch 2002), Fritz pioneered what we now can understand as
+the technical foundation of reproducible research. Sweave
was the main
+inspiration for knitr (Xie 2015) which in turn led to
+rmarkdown (Xie et al. 2018) and quarto
+(Scheidegger et al. 2024). All these systems are used today to
+generate countless scientific articles, package vignettes, webpages, books, blogs,
+and much more in a dynamic and reproducible way.
Of course, Fritz was not the first one going in this direction. The concept
+of “literate programming” had been introduced by Knuth (1984), allowing to
+combine the source code for software and the corresponding documentation
+in the same file. The concepts of “tangling”, that is, extracting the code
+for compilation, and “weaving”, the process of generating a nicely looking
+document containing code next to prosa and formulae, have their roots in the
+WEB
and CWEB
systems (Knuth and Levy 1993). As these packages were specific
+to code in Pascal (WEB
) and C (CWEB
), respectively, and documentation in
+LaTeX, Ramsey (1994) introduced his noweb
system as a literate programming
+tool that is agnostic to the programming language used and also supports HTML
+in addition to LaTeX and a few other backends for documentation. The noweb
+syntax for code chunks is:
<<code>>=
1 + 2
@
-This will look familiar to users of Sweave
. From this history, the
-naming decisions for the software and its file format can be understood:
-Sweave
is the function that weaves code in S (or R - both languages
-still existed side by side at the time) with its output and
-documentation. And Rnw
stands for files mixing R code with noweb
-syntax.
Starting in the mid-1990s to the early 2000s, interests shifted from
-just “literate programming” to “literate data analysis” (Leisch 2002;
-Leisch and Rossini 2003) as a core ingredient for reproducible research
-(Buckheit and Donoho 1995). The seminal new idea was to have dynamic
-documents so outputs of code such as figures and tables could be
-updated automatically when the underlying data changed, which was
-pioneered by the late Günter Sawitzki in his Voyager
system (Sawitzki
-1996).
Fritz amalgamated all of this into Sweave
which was the first time
-that the power of dynamic reporting became easily available in a
-widely-used programming language for statistics in combination with the
-standard textprocessing system LaTeX. This turned out to be a “killer
-feature” of R at the time and the basis for further work towards
-reproducible research (Hothorn and Leisch 2011; Stodden, Leisch, and
-Peng 2014).
Sweave
was also the basis for R package vignettes (Leisch 2003) as an
-addition to the previously available technical manual pages. The first R
-package vignette published on CRAN in May 2002 was in the
-strucchange package,
-providing methods for testing, monitoring, and dating structural
-changes. The vignette was the Sweave
adaptation of an introduction to
-the package that had been co-authored by Fritz and published a couple of
-months earlier in the Journal of Statistical Software (Zeileis et al.
-2002). See Figure 7 for how Fritz used it to illustrate the idea of
-package vignettes in Leisch (2003) and that the R code from vignettes
-can be easily extracted (also interactively), explored, and re-run.
This will look familiar to users of Sweave
. From this history, the naming
+decisions for the software and its file format can be understood: Sweave
+is the function that weaves code in S (or R - both languages still existed
+side by side at the time) with its output and documentation. And Rnw
stands for files
+mixing R code with noweb
syntax.
Starting in the mid-1990s to the early 2000s, interests shifted from just
+“literate programming” to “literate data analysis” (Leisch 2002; Leisch and Rossini 2003)
+as a core ingredient for reproducible research (Buckheit and Donoho 1995).
+The seminal new idea was to have dynamic documents so outputs of code
+such as figures and tables could be updated automatically when the underlying
+data changed, which was pioneered by the late Günter Sawitzki in his
+Voyager
system (Sawitzki 1996).
Fritz amalgamated all of this into Sweave
which was the first time that the
+power of dynamic reporting became easily available in a widely-used programming
+language for statistics in combination with the standard textprocessing system
+LaTeX. This turned out to be a “killer feature” of R at the time and the basis
+for further work towards reproducible research (Hothorn and Leisch 2011; Stodden et al. 2014).
Sweave
was also the basis for R package vignettes (Leisch 2003) as an
+addition to the previously available technical manual pages.
+The first R package vignette published on CRAN in May 2002 was in the
+strucchange package, providing methods for testing, monitoring,
+and dating structural changes. The vignette was the Sweave
adaptation
+of an introduction to the package that had been co-authored by Fritz and
+published a couple of months earlier in the Journal of Statistical Software
+(Zeileis et al. 2002). See Figure 7 for how
+Fritz used it to illustrate the idea of package vignettes in Leisch (2003)
+and that the R code from vignettes can be easily extracted (also interactively),
+explored, and re-run.
+Figure 7: Screenshot of the strucchange package vignette, shown in a PDF viewer (right), along with the vExplorer from Bioconductor for interactive code execution (top left) with output in the active R graphics window (bottom left). Source: Leisch (2003, Figure 2). +
+Fritz’ theoretical and methodological work focused in particular on clustering and finite mixture models. Centroid-based partitioning @@ -2007,23 +2861,22 @@
For many years, Fritz and Kurt actively participated in the Biological Psychiatry working group at Medizinische Universität Wien. The first -paper co-authored by Fritz dates from 2000 (Bailer et al. 2000), the -last from 2023 (Solmi et al. 2023). The joint research was mostly -focused on linking genetic traits to psychiatric disorders and treatment -success. This prompted many enhancements in the classical test +paper co-authored by Fritz dates from 2000 +(Bailer et al. 2000), the last from 2023 +(Solmi et al. 2023). The joint research was mostly +focused on linking genetic traits to psychiatric disorders and +treatment success. This prompted many enhancements in the classical test infrastructure in base R - in surprising ways to some reviewers, who could not believe that Fisher’s test really worked for tables with more than two rows or columns. It also established a strong need for @@ -2034,204 +2887,191 @@
Fritz also intensively collaborated with Sara Dolnicar to advance data analytic methods for data-driven market segmentation analysis. They received the Charles R. Goeldner Article of Excellence Award for their -work on extracting stable Winter tourist segments in Austria with bagged -clustering (Dolnicar and Leisch 2003). They focused on the evaluation of -data structure and the selection of suitable segments based on segment -stability as a key criterion (Dolnicar and Leisch 2010, 2017). Finally, -this joint work resulted in Dolnicar, Grün, and Leisch (2018) which -provides practical guidance for users of market segmentation solutions -and for data analysts with respect to the technical and statistical -aspects of market segmentation analysis.
-As head of the Institute of Statistics, Fritz was involved in various -interdisciplinary research projects covering almost the whole range of -core areas of research at BOKU. He was key researcher at the Austrian -Centre of Industrial Biotechnology (acib) (Scharl, Voglhuber, and Leisch -2009; Melcher et al. 2017) and faculty member of the doctoral schools on -agricultural genomics and bioprocess engineering. Among others he -contributed to the fields of zoology (Cech et al. 2022), forestry, -transportation and tourism (Taczanowska et al. 2023) as well as -chemistry, genomics and wildlife biology (Steiner, Leisch, and -Hackländer 2014).
+work on extracting stable Winter tourist segments in Austria with +bagged clustering (Dolnicar and Leisch 2003). They focused on the +evaluation of data structure and the selection of suitable segments +based on segment stability as a key criterion (Dolnicar and Leisch 2010, 2017). Finally, this joint work resulted in +Dolnicar et al. (2018) which provides practical guidance for +users of market segmentation solutions and for data analysts with +respect to the technical and statistical aspects of market +segmentation analysis. +As head of the Institute of Statistics, Fritz was involved +in various interdisciplinary research projects covering almost the whole +range of core areas of research at BOKU. He was key researcher at the +Austrian Centre of Industrial Biotechnology (acib) +(Scharl et al. 2009; Melcher et al. 2017) and +faculty member of the doctoral schools on agricultural genomics and +bioprocess engineering. Among others he contributed to the fields of +zoology (Cech et al. 2022), forestry, transportation and tourism +(Taczanowska et al. 2023) as well as chemistry, genomics and wildlife +biology (Steiner et al. 2014).
In addition to the services for the various conferences and proceedings -already described above, he served the scientific community in various -ways. In January 2001, he co-created R News which evolved into The R -Journal eight years later. For the journal Computational Statistics -he was an associate editor from 2005 to 2006 before he became -editor-in-chief from 2007 to 2011 (see Symanzik, Mori, and Vieu 2024 for -more details). Other notable contributions include being editor for the -Journal of Statistical Software, core member of the Bioconductor -project for statistical software in bioinformatics, and first secretary -general of the R Foundation for Statistical Computing when it was -formed in 2002.
+already described above, he served the scientific community in various ways. +In January 2001, he co-created R News which evolved into +The R Journal eight years later. For the journal Computational Statistics +he was an associate editor from 2005 to 2006 before he became editor-in-chief +from 2007 to 2011 (see Symanzik et al. 2024 for more details). +Other notable contributions include being +editor for the Journal of Statistical Software, core member of the +Bioconductor project for statistical software in bioinformatics, and +first secretary general of the R Foundation for Statistical Computing when +it was formed in 2002.Fritz taught generations of students at bachelor, master, and PhD level -and introduced hundreds of useRs to proper R development in his -“Introduction to R Programming” short course. At TU Wien, LMU, and BOKU, -he taught courses in applied statistics, statistical computing and -computational statistics. He had the ability to explain even difficult -content in a simple way and to inspire students with statistics and -programming with R. He co-founded the “Munich R Courses” lecture series -and was part of a group aiming to initiate a formal PhD program in -statistics at LMU.
-Fritz supervised Bettina Grün, Theresa Scharl, Sebastian Kaiser, Manuel -Eugster, Christina Yassouridis, Rainer Dangl, Weksi Budiaji, Muhammad -Atif and Simona Jokubauskaite as his PhD students. Based on his -research, Fritz often discussed the state of and the need for -reproducible research and taught his many students how to avoid the many -small and innocent errors that have a tendency to pile up and invalidate -reported statistical results, with potentially devastating consequences, -as we all know.
+Fritz taught generations of students at bachelor, master, and PhD level and +introduced hundreds of useRs to proper R development in his “Introduction to +R Programming” short course. At TU Wien, LMU, and BOKU, he taught courses in applied +statistics, statistical computing and computational statistics. He had the +ability to explain even difficult content in a simple way and to inspire students +with statistics and programming with R. He +co-founded the “Munich R Courses” lecture series and was part of a group +aiming to initiate a formal PhD program in statistics at LMU.
+Fritz supervised +Bettina Grün, Theresa Scharl, +Sebastian Kaiser, Manuel Eugster, +Christina Yassouridis, Rainer Dangl, +Weksi Budiaji, Muhammad Atif and +Simona Jokubauskaite as his PhD students. +Based on his research, Fritz often discussed the state of and the need for reproducible +research and taught his many students how to avoid the many small and +innocent errors that have a tendency to pile up and invalidate reported +statistical results, with potentially devastating consequences, as we all know.
Fritz loved cooking, music, motorbike riding, playing cards with his -friends, skiing and hiking. A late afternoon call to his office asking -him to go along for a beer in Munich’s English Garden almost never went -unanswered, positively. Back in Vienna at BOKU, colleagues got to know -Fritz as a very structured, thoughtful, calm person who involved -everyone, listened to everyone and always endeavored to balance -interests and ensure fairness. He strengthened cooperation and cohesion -with his leadership style. Fritz was a friendly, always modest person -who was free of airs and graces or vanity, despite or perhaps because of -his great scientific successes. The R Core Team and the R community at -large miss a contributor, collaborator, teacher, colleague, and friend.
-
knitr, rmarkdown, quarto, strucchange, flexclust, flexmix
+Cluster, Econometrics, Environmetrics, Finance, Psychometrics, ReproducibleResearch, TimeSeries
+Bailer, Ursula, Friedrich Leisch, Kurt Meszaros, Elisabeth Lenzinger, -Ulrike Willinger, Rainer Strobl, Christian Gebhardt, et al. 2000. -“Genome Scan for Susceptibility Loci for Schizophrenia.” -Neuropsychobiology 42 (4): 175–82. -https://doi.org/10.1159/000026690.
-Buckheit, Jonathan B., and David L. Donoho. 1995. “WaveLab and -Reproducible Research.” In Wavelets in Statistics, edited by A. -Antoniadis and G. Oppenheim, 55–82. Lecture Notes in Statistics. New -York: Springer-Verlag. https://doi.org/10.1007/978-1-4612-2544-7_5.
-Cech, Ramona M, Suzanne Jovanovic, Susan Kegley, Koen Hertoge, Friedrich -Leisch, and Johann G Zaller. 2022. “Reducing Overall Herbicide Use May -Reduce Risks to Humans but Increase Toxic Loads to Honeybees, Earthworms -and Birds.” Environmental Sciences Europe 34 (1): 44. -https://doi.org/10.1186/s12302-022-00622-2.
-Dolnicar, Sara, Bettina Grün, and Friedrich Leisch. 2018. Market -Segmentation Analysis: Understanding It, Doing It, and Making It -Useful. Management for Professionals. Springer-Verlag. -https://doi.org/10.1007/978-981-10-8818-6.
-Dolnicar, Sara, and Friedrich Leisch. 2003. “Winter Tourist Segments in -Austria: Identifying Stable Vacation Styles Using Bagged Clustering -Techniques.” Journal of Travel Research 41 (3): 281–92. -https://doi.org/10.1177/0047287502239037.
-———. 2010. “Evaluation of Structure and Reproducibility of Cluster -Solutions Using the Bootstrap.” Marketing Letters 21 (1): 83–101. -https://doi.org/10.1007/s11002-009-9083-4.
-———. 2017. “Using Segment Level Stability to Select Target -Segments in Data-Driven Market Segmentation Studies.” Marketing -Letters 28 (3): 423–36. https://doi.org/10.1007/s11002-017-9423-8.
-Eaton, John W., David Bateman, Søren Hauberg, and Rik Wehbring. 2024. -GNU Octave Version 9.2.0 Manual: A High-Level Interactive Language for -Numerical Computations. -https://www.gnu.org/software/octave/doc/v9.2.0/.
-Frick, Hannah, Carolin Strobl, Friedrich Leisch, and Achim Zeileis. -2012. “Flexible Rasch Mixture Models with Package psychomix.” Journal -of Statistical Software 48 (7): 1–25. -https://doi.org/10.18637/jss.v048.i07.
-Grün, Bettina, and Friedrich Leisch. 2008. “FlexMix Version 2: Finite -Mixtures with Concomitant Variables and Varying and Constant -Parameters.” Journal of Statistical Software 28 (4): 1–35. -https://doi.org/10.18637/jss.v028.i04.
-Hornik, Kurt. 2012. “The Comprehensive R Archive Network.” Wiley -Interdisciplinary Reviews: Computational Statistics 4 (4): 394–98. -https://doi.org/10.1002/wics.1212.
-Hornik, Kurt, and Friedrich Leisch, eds. 2001. Proceedings of the 2nd -International Workshop on Distributed Statistical Computing, Vienna, -Austria. https://www.R-project.org/conferences/DSC-2001/Proceedings/.
-———. 2002. “Vienna and R: Love, Marriage and the Future.” In -Festschrift 50 Jahre Österreichische Statistische Gesellschaft, edited -by Rudolf Dutter, 61–70. Österreichische Statistische Gesellschaft.
-Hornik, Kurt, Friedrich Leisch, and Achim Zeileis, eds. 2003. -Proceedings of the 3rd International Workshop on Distributed -Statistical Computing, Vienna, Austria. -https://www.R-project.org/conferences/DSC-2003/Proceedings/.
-Hothorn, Torsten, and Friedrich Leisch. 2011. “Case Studies in -Reproducibility.” Briefings in Bioinformatics 12 (3): 288–300. -https://doi.org/10.1093/bib/bbq084.
-Knuth, Donald E. 1984. “Literate Programming.” The Computer Journal 27 -(2): 97–111. https://doi.org/10.1093/comjnl/27.2.97.
-Knuth, Donald E., and Silvio Levy. 1993. The CWEB System of Structured -Documentation. Reading: Addison-Wesley.
-Leisch, Friedrich. 2002. “Sweave: Dynamic Generation of Statistical -Reports Using Literate Data Analysis.” In COMPSTAT 2002 – Proceedings -in Computational Statistics, edited by Wolfgang Härdle and Bernd Rönz, -575–80. Heidelberg: Physica Verlag. -https://doi.org/10.1007/978-3-642-57489-4_89.
-———. 2003. “Sweave, Part II: Package Vignettes.” R News 3 (2): -21–24. https://CRAN.R-project.org/doc/Rnews/.
-———. 2004. “FlexMix: A General Framework for Finite Mixture Models -and Latent Class Regression in R.” Journal of Statistical Software 11 -(8): 1–18. https://doi.org/10.18637/jss.v011.i08.
-———. 2006. “A Toolbox for k-Centroids Cluster Analysis.” -Computational Statistics and Data Analysis 51 (2): 526–44. -https://doi.org/10.1016/j.csda.2005.10.006.
-Leisch, Friedrich, and Anthony J. Rossini. 2003. “Reproducible -Statistical Research.” Chance 16 (2): 46–50. -https://doi.org/10.1080/09332480.2003.10554848.
-Melcher, Michael, Theresa Scharl, Markus Luchner, Gerald Striedner, and -Friedrich Leisch. 2017. “Boosted Structured Additive Regression for -Escherichia Coli Fed-Batch Fermentation Modeling.” Biotechnology and -Bioengineering 114 (2): 321–34. https://doi.org/10.1002/bit.26073.
-Ramsey, Norman. 1994. “Literate Programming Simplified.” IEEE Software -11 (5): 97–105. https://doi.org/10.1109/52.311070.
-Sawitzki, Günther. 1996. “Extensible Statistical Software: On a Voyage -to Oberon.” Journal of Computational and Graphical Statistics 5 (3): -263–83. https://doi.org/10.1080/10618600.1996.10474711.
-Scharl, Theresa, Ingo Voglhuber, and Friedrich Leisch. 2009. -“Exploratory and Inferential Analysis of Gene Cluster Neighborhood -Graphs.” BMC Bioinformatics 10 (1): 288. -https://doi.org/10.1186/1471-2105-10-288.
-Scheidegger, Carlos, Charles Teague, Christophe Dervieux, J. J. Allaire, -and Yihui Xie. 2024. “Quarto: An Open-Source Scientific and Technical -Publishing System.” https://quarto.org/.
-Solmi, Marco, Trevor Thompson, Andrés Estradé, Agorastos Agorastos, -Joaquim Radua, Samuele Cortese, Elena Dragioti, et al. 2023. “Validation -of the Collaborative Outcomes Study on Health and Functioning During -Infection Times (COH-FIT) Questionnaire for Adults.” Journal of -Affective Disorders 326: 249–61. -https://doi.org/10.1016/j.jad.2022.12.022.
-Steiner, Wolfgang, Friedrich Leisch, and Klaus Hackländer. 2014. “A -Review on the Temporal Pattern of Deer-Vehicle Accidents: Impact of -Seasonal, Diurnal and Lunar Effects in Cervids.” Accident Analysis & -Prevention 66: 168–81. https://doi.org/10.1016/j.aap.2014.01.020.
-Stodden, Victoria, Friedrich Leisch, and Roger D. Peng. 2014. -Implementing Reproducible Research. Boca Raton: Chapman & Hall/CRC.
-Symanzik, Jürgen, Yuichi Mori, and Philippe Vieu. 2024. “A Memorial for -the Late Professor Friedrich Leisch.” Computational Statistics 39.
-Taczanowska, Karolina, Barbara Latosinska, Christiane Brandenburg, -Friedrich Leisch, Christina Czachs, and Andreas Muhar. 2023. “Lobbying -in Social Media as a New Source of Survey Bias.” Journal of Outdoor -Recreation and Tourism 44 (A): 100689. -https://doi.org/10.1016/j.jort.2023.100689.
-Xie, Yihui. 2015. Dynamic Documents with R and knitr. 2nd ed. Boca -Raton: Chapman & Hall/CRC. https://doi.org/10.1201/9781315382487.
-Xie, Yihui, J. J. Allaire, and Garrett Grolemund. 2018. R Markdown: The -Definitive Guide. Boca Raton: Chapman & Hall/CRC. -https://doi.org/10.1201/9781138359444.
-Zeileis, Achim, Friedrich Leisch, Kurt Hornik, and Christian Kleiber. -2002. “strucchange: An R Package for Testing for Structural Change in -Linear Regression Models.” Journal of Statistical Software 7 (2): -1–38. https://doi.org/10.18637/jss.v007.i02.
- +Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
+Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
-Grün, et al., "Remembering Friedrich "Fritz" Leisch", The R Journal, 2024+
Grün, et al., "Remembering Friedrich "Fritz" Leisch", The R Journal, 2025
BibTeX citation
@article{RJ-2024-001, author = {Grün, Bettina and Hornik, Kurt and Hothorn, Torsten and Scharl, Theresa and Zeileis, Achim}, - title = {Remembering Friedrich "Fritz" Leisch}, + title = {Remembering Friedrich "Fritz" Leisch}, journal = {The R Journal}, - year = {2024}, + year = {2025}, note = {https://doi.org/10.32614/RJ-2024-001}, doi = {10.32614/RJ-2024-001}, volume = {16}, issue = {1}, issn = {2073-4859}, - pages = {1} + pages = {5-14} }
>=
1 + 2
@
-```
+\end{verbatim}
-This will look familiar to users of `Sweave`. From this history, the naming
-decisions for the software and its file format can be understood: `Sweave`
+This will look familiar to users of \texttt{Sweave}. From this history, the naming
+decisions for the software and its file format can be understood: \texttt{Sweave}
is the function that weaves code in S (or R - both languages still existed
-side by side at the time) with its output and documentation. And `Rnw` stands for files
-mixing R code with `noweb` syntax.
+side by side at the time) with its output and documentation. And \texttt{Rnw} stands for files
+mixing R code with \texttt{noweb} syntax.
Starting in the mid-1990s to the early 2000s, interests shifted from just
-"literate programming" to "literate data analysis" [@Leisch:2002; @Leisch+Rossini:2003]
-as a core ingredient for reproducible research [@Buckheit+Donoho:1995].
-The seminal new idea was to have dynamic documents so _outputs_ of code
+``literate programming'' to ``literate data analysis'' \citep{Leisch:2002, Leisch+Rossini:2003}
+as a core ingredient for reproducible research \citep{Buckheit+Donoho:1995}.
+The seminal new idea was to have dynamic documents so \emph{outputs} of code
such as figures and tables could be updated automatically when the underlying
data changed, which was pioneered by the late Günter Sawitzki in his
-`Voyager` system [@Sawitzki:1996].
+\texttt{Voyager} system \citep{Sawitzki:1996}.
-Fritz amalgamated all of this into `Sweave` which was the first time that the
+Fritz amalgamated all of this into \texttt{Sweave} which was the first time that the
power of dynamic reporting became easily available in a widely-used programming
language for statistics in combination with the standard textprocessing system
-LaTeX. This turned out to be a "killer feature" of R at the time and the basis
-for further work towards reproducible research [@Hothorn+Leisch_2011; @Stodden:2014].
+LaTeX. This turned out to be a ``killer feature'' of R at the time and the basis
+for further work towards reproducible research \citep{Hothorn+Leisch_2011, Stodden:2014}.
-`Sweave` was also the basis for R package vignettes [@Leisch:2003] as an
+\texttt{Sweave} was also the basis for R package vignettes \citep{Leisch:2003} as an
addition to the previously available technical manual pages.
The first R package vignette published on CRAN in May 2002 was in the
\CRANpkg{strucchange} package, providing methods for testing, monitoring,
-and dating structural changes. The vignette was the `Sweave` adaptation
+and dating structural changes. The vignette was the \texttt{Sweave} adaptation
of an introduction to the package that had been co-authored by Fritz and
-published a couple of months earlier in the _Journal of Statistical Software_
-[@Zeileis+Leisch+Hornik:2002]. See Figure \@ref(fig:sweave) for how
-Fritz used it to illustrate the idea of package vignettes in @Leisch:2003
+published a couple of months earlier in the \emph{Journal of Statistical Software}
+\citep{Zeileis+Leisch+Hornik:2002}. See Figure~\ref{fig:sweave} for how
+Fritz used it to illustrate the idea of package vignettes in \citet{Leisch:2003}
and that the R code from vignettes can be easily extracted (also interactively),
explored, and re-run.
\begin{figure}[t!]
-{\centering \includegraphics[width=1\linewidth]{fritz_files/figure-latex/sweave-1}
+{\centering \includegraphics[width=1\linewidth]{figures/img-sweave}
}
-\caption{Screenshot of the strucchange package vignette, shown in a PDF viewer (right), along with the vExplorer from Bioconductor for interactive code execution (top left) with output in the active R graphics window (bottom left). Source: Leisch (2003, Figure 2).}(\#fig:sweave)
+\caption{Screenshot of the strucchange package vignette, shown in a PDF viewer (right), along with the vExplorer from Bioconductor for interactive code execution (top left) with output in the active R graphics window (bottom left). Source: Leisch (2003, Figure 2).}\label{fig:sweave}
\end{figure}
-
-## Clustering & mixture models
+\subsection{Clustering \& mixture models}\label{clustering-mixture-models}
Fritz' theoretical and methodological work focused in particular on
clustering and finite mixture models. Centroid-based partitioning
@@ -310,23 +269,22 @@
framework, each of the steps is adapted in a modular way depending on
the specific setup, e.g., the distance and centroid determining method
or the component distribution used. Fritz exploited this for the
-implementation of the packages \CRANpkg{flexclust} [@Leisch:2006] and
-\CRANpkg{flexmix} [@Leisch:2004; @Gruen+Leisch:2008], contributing to
+implementation of the packages \CRANpkg{flexclust} \citep{Leisch:2006} and
+\CRANpkg{flexmix} \citep{Leisch:2004, Gruen+Leisch:2008}, contributing to
the clustering tools available for R (see the CRAN Task View
\ctv{Cluster}). Both packages provide general infrastructure for
(model-based) clustering and enable rapid prototyping and the simple
extension to new variants taking into account complicated data
-structures or challenging model specifications [see, for example,
-\pkg{psychomix}, @Frick+Strobl+Leisch:2012].
-
+structures or challenging model specifications \citep[see, for example,
+\pkg{psychomix},][]{Frick+Strobl+Leisch:2012}.
-## Applied work
+\subsection{Applied work}\label{applied-work}
For many years, Fritz and Kurt actively participated in the Biological
Psychiatry working group at Medizinische Universität Wien. The first
paper co-authored by Fritz dates from 2000
-[@Bailer+Leisch+Meszaros:2000], the last from 2023
-[@Solmi+Thompson:2023]. The joint research was mostly
+\citep{Bailer+Leisch+Meszaros:2000}, the last from 2023
+\citep{Solmi+Thompson:2023}. The joint research was mostly
focused on linking genetic traits to psychiatric disorders and
treatment success. This prompted many enhancements in the classical test
infrastructure in base R - in surprising ways to some reviewers, who
@@ -335,63 +293,59 @@
conveniently reporting the results of the statistical analyses to the
medical doctors in the group that went beyond providing annotated
transcripts, which Fritz eventually managed to satisfy by inventing the
-`Sweave` system (see Section [2.3](#sec:sweave-reproducibility)).
+\texttt{Sweave} system (see Section~\hyperref[sec:sweave-reproducibility]{2.3}).
Fritz also intensively collaborated with Sara Dolnicar to advance data
analytic methods for data-driven market segmentation analysis. They
received the Charles R. Goeldner Article of Excellence Award for their
work on extracting stable Winter tourist segments in Austria with
-bagged clustering [@Dolnicar+Leisch:2003]. They focused on the
+bagged clustering \citep{Dolnicar+Leisch:2003}. They focused on the
evaluation of data structure and the selection of suitable segments
-based on segment stability as a key criterion [@Dolnicar+Leisch:2010;
-@Dolnicar+Leisch:2017]. Finally, this joint work resulted in
-@Dolnicar+Gruen+Leisch:2018 which provides practical guidance for
+based on segment stability as a key criterion \citep{Dolnicar+Leisch:2010, Dolnicar+Leisch:2017}. Finally, this joint work resulted in
+\citet{Dolnicar+Gruen+Leisch:2018} which provides practical guidance for
users of market segmentation solutions and for data analysts with
respect to the technical and statistical aspects of market
segmentation analysis.
-As head of the Institute of Statistics, Fritz was involved
-in various interdisciplinary research projects covering almost the whole
-range of core areas of research at BOKU. He was key researcher at the
+As head of the Institute of Statistics, Fritz was involved
+in various interdisciplinary research projects covering almost the whole
+range of core areas of research at BOKU. He was key researcher at the
Austrian Centre of Industrial Biotechnology (acib)
-[@Scharl+Voglhuber+Leisch:2009; @Melcher+Scharl+Leisch:2017] and
-faculty member of the doctoral schools on agricultural genomics and
-bioprocess engineering. Among others he contributed to the fields of
-zoology [@Cech:2022], forestry, transportation and tourism
-[@Taczanowska:2023] as well as chemistry, genomics and wildlife
-biology [@Steiner:2014].
-
+\citep{Scharl+Voglhuber+Leisch:2009, Melcher+Scharl+Leisch:2017} and
+faculty member of the doctoral schools on agricultural genomics and
+bioprocess engineering. Among others he contributed to the fields of
+zoology \citep{Cech:2022}, forestry, transportation and tourism
+\citep{Taczanowska:2023} as well as chemistry, genomics and wildlife
+biology \citep{Steiner:2014}.
-# Academic service
+\section{Academic service}\label{academic-service}
In addition to the services for the various conferences and proceedings
already described above, he served the scientific community in various ways.
-In January 2001, he co-created _R News_ which evolved into
-_The R Journal_ eight years later. For the journal _Computational Statistics_
+In January 2001, he co-created \emph{R News} which evolved into
+\emph{The R Journal} eight years later. For the journal \emph{Computational Statistics}
he was an associate editor from 2005 to 2006 before he became editor-in-chief
-from 2007 to 2011 [see @Symanzik+Mori+Vieu:2024 for more details].
-Other notable contributions include being
-editor for the _Journal of Statistical Software_, core member of the
-_Bioconductor_ project for statistical software in bioinformatics, and
-first secretary general of the _R Foundation for Statistical Computing_ when
-it was formed in 2002.
+from 2007 to 2011 \citep[see][ for more details]{Symanzik+Mori+Vieu:2024}.
+Other notable contributions include being
+editor for the \emph{Journal of Statistical Software}, core member of the
+\emph{Bioconductor} project for statistical software in bioinformatics, and
+first secretary general of the \emph{R Foundation for Statistical Computing} when
+it was formed in 2002.
-
-
-# Teaching & mentoring
+\section{Teaching \& mentoring}\label{teaching-mentoring}
Fritz taught generations of students at bachelor, master, and PhD level and
-introduced hundreds of useRs to proper R development in his "Introduction to
-R Programming" short course. At TU Wien, LMU, and BOKU, he taught courses in applied
-statistics, statistical computing and computational statistics. He had the
-ability to explain even difficult content in a simple way and to inspire students
+introduced hundreds of useRs to proper R development in his ``Introduction to
+R Programming'' short course. At TU Wien, LMU, and BOKU, he taught courses in applied
+statistics, statistical computing and computational statistics. He had the
+ability to explain even difficult content in a simple way and to inspire students
with statistics and programming with R. He
-co-founded the "Munich R Courses" lecture series and was part of a group
-aiming to initiate a formal PhD program in statistics at LMU.
+co-founded the ``Munich R Courses'' lecture series and was part of a group
+aiming to initiate a formal PhD program in statistics at LMU.
Fritz supervised
-Bettina Grün, Theresa Scharl,
-Sebastian Kaiser, Manuel Eugster,
+Bettina Grün, Theresa Scharl,
+Sebastian Kaiser, Manuel Eugster,
Christina Yassouridis, Rainer Dangl,
Weksi Budiaji, Muhammad Atif and
Simona Jokubauskaite as his PhD students.
@@ -400,19 +354,68 @@
innocent errors that have a tendency to pile up and invalidate reported
statistical results, with potentially devastating consequences, as we all know.
-# Odds & ends
+\section{Odds \& ends}\label{odds-ends}
Fritz loved cooking, music, motorbike riding, playing cards with his
friends, skiing and hiking. A late afternoon call to his office
asking him to go along for a beer in Munich's English Garden almost never went
-unanswered, positively. Back in Vienna at BOKU, colleagues got to know Fritz as a very
-structured, thoughtful, calm person who involved everyone, listened to
+unanswered, positively. Back in Vienna at BOKU, colleagues got to know Fritz as a very
+structured, thoughtful, calm person who involved everyone, listened to
everyone and always endeavored to balance interests and ensure fairness.
-He strengthened cooperation and cohesion with his leadership style.
-Fritz was a friendly, always modest person who was free of airs and graces or
+He strengthened cooperation and cohesion with his leadership style.
+Fritz was a friendly, always modest person who was free of airs and graces or
vanity, despite or perhaps because of his great scientific successes.
The R Core Team and the R community at large miss a contributor,
collaborator, teacher, colleague, and friend.
-# References
+\bibliography{fritz.bib}
+
+\address{%
+Bettina Grün\\
+WU Wirtschaftsuniversität Wien\\%
+Austria\\
+%
+%
+\textit{ORCiD: \href{https://orcid.org/0000-0001-7265-4773}{0000-0001-7265-4773}}\\%
+\href{mailto:Bettina.Gruen@wu.ac.at}{\nolinkurl{Bettina.Gruen@wu.ac.at}}%
+}
+
+\address{%
+Kurt Hornik\\
+WU Wirtschaftsuniversität Wien\\%
+Austria\\
+%
+%
+\textit{ORCiD: \href{https://orcid.org/0000-0003-4198-9911}{0000-0003-4198-9911}}\\%
+\href{mailto:Kurt.Hornik@R-project.org}{\nolinkurl{Kurt.Hornik@R-project.org}}%
+}
+\address{%
+Torsten Hothorn\\
+Universität Zürich\\%
+Switzerland\\
+%
+%
+\textit{ORCiD: \href{https://orcid.org/0000-0001-8301-0471}{0000-0001-8301-0471}}\\%
+\href{mailto:Torsten.Hothorn@R-project.org}{\nolinkurl{Torsten.Hothorn@R-project.org}}%
+}
+
+\address{%
+Theresa Scharl\\
+BOKU University\\%
+Austria\\
+%
+%
+\textit{ORCiD: \href{https://orcid.org/0000-0001-8850-3312}{0000-0001-8850-3312}}\\%
+\href{mailto:Theresa.Scharl@boku.ac.at}{\nolinkurl{Theresa.Scharl@boku.ac.at}}%
+}
+
+\address{%
+Achim Zeileis\\
+Universität Innsbruck\\%
+Austria\\
+%
+\url{https://www.zeileis.org/}\\%
+\textit{ORCiD: \href{https://orcid.org/0000-0003-0918-3766}{0000-0003-0918-3766}}\\%
+\href{mailto:Achim.Zeileis@R-project.org}{\nolinkurl{Achim.Zeileis@R-project.org}}%
+}
diff --git a/_articles/RJ-2024-001/RJ-2024-001_files/anchor-4.2.2/anchor.min.js b/_articles/RJ-2024-001/RJ-2024-001_files/anchor-4.2.2/anchor.min.js
deleted file mode 100644
index 26908ec13..000000000
--- a/_articles/RJ-2024-001/RJ-2024-001_files/anchor-4.2.2/anchor.min.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
-//
-// AnchorJS - v4.2.2 - 2019-11-14
-// https://www.bryanbraun.com/anchorjs/
-// Copyright (c) 2019 Bryan Braun; Licensed MIT
-//
-// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
-!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),0===(e=p(A=A||"h2, h3, h4, h5, h6")).length)return this;for(!function(){if(null!==document.head.querySelector("style.anchorjs"))return;var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A);e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
-// @license-end
\ No newline at end of file
diff --git a/_articles/RJ-2024-001/RJ-2024-001_files/bowser-1.9.3/bowser.min.js b/_articles/RJ-2024-001/RJ-2024-001_files/bowser-1.9.3/bowser.min.js
deleted file mode 100644
index 5866337b8..000000000
--- a/_articles/RJ-2024-001/RJ-2024-001_files/bowser-1.9.3/bowser.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * Bowser - a browser detector
- * https://github.com/ded/bowser
- * MIT License | (c) Dustin Diaz 2015
- */
-!function(e,t,n){typeof module!="undefined"&&module.exports?module.exports=n():typeof define=="function"&&define.amd?define(t,n):e[t]=n()}(this,"bowser",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||""}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||""}function N(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),s=/like android/i.test(t),o=!s&&/android/i.test(t),u=/nexus\s*[0-6]\s*/i.test(t),a=!u&&/nexus\s*[0-9]+/i.test(t),f=/CrOS/.test(t),l=/silk/i.test(t),c=/sailfish/i.test(t),h=/tizen/i.test(t),p=/(web|hpw)os/i.test(t),d=/windows phone/i.test(t),v=/SamsungBrowser/i.test(t),m=!d&&/windows/i.test(t),g=!i&&!l&&/macintosh/i.test(t),y=!o&&!c&&!h&&!p&&/linux/i.test(t),b=r(/edg([ea]|ios)\/(\d+(\.\d+)?)/i),w=n(/version\/(\d+(\.\d+)?)/i),E=/tablet/i.test(t)&&!/tablet pc/i.test(t),S=!E&&/[^-]mobi/i.test(t),x=/xbox/i.test(t),T;/opera/i.test(t)?T={name:"Opera",opera:e,version:w||n(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr\/|opios/i.test(t)?T={name:"Opera",opera:e,version:n(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||w}:/SamsungBrowser/i.test(t)?T={name:"Samsung Internet for Android",samsungBrowser:e,version:w||n(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/coast/i.test(t)?T={name:"Opera Coast",coast:e,version:w||n(/(?:coast)[\s\/](\d+(\.\d+)?)/i)}:/yabrowser/i.test(t)?T={name:"Yandex Browser",yandexbrowser:e,version:w||n(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(t)?T={name:"UC Browser",ucbrowser:e,version:n(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/mxios/i.test(t)?T={name:"Maxthon",maxthon:e,version:n(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)}:/epiphany/i.test(t)?T={name:"Epiphany",epiphany:e,version:n(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)}:/puffin/i.test(t)?T={name:"Puffin",puffin:e,version:n(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)}:/sleipnir/i.test(t)?T={name:"Sleipnir",sleipnir:e,version:n(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)}:/k-meleon/i.test(t)?T={name:"K-Meleon",kMeleon:e,version:n(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)}:d?(T={name:"Windows Phone",osname:"Windows Phone",windowsphone:e},b?(T.msedge=e,T.version=b):(T.msie=e,T.version=n(/iemobile\/(\d+(\.\d+)?)/i))):/msie|trident/i.test(t)?T={name:"Internet Explorer",msie:e,version:n(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:f?T={name:"Chrome",osname:"Chrome OS",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?T={name:"Microsoft Edge",msedge:e,version:b}:/vivaldi/i.test(t)?T={name:"Vivaldi",vivaldi:e,version:n(/vivaldi\/(\d+(\.\d+)?)/i)||w}:c?T={name:"Sailfish",osname:"Sailfish OS",sailfish:e,version:n(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(t)?T={name:"SeaMonkey",seamonkey:e,version:n(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(T={name:"Firefox",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(t)&&(T.firefoxos=e,T.osname="Firefox OS")):l?T={name:"Amazon Silk",silk:e,version:n(/silk\/(\d+(\.\d+)?)/i)}:/phantom/i.test(t)?T={name:"PhantomJS",phantom:e,version:n(/phantomjs\/(\d+(\.\d+)?)/i)}:/slimerjs/i.test(t)?T={name:"SlimerJS",slimer:e,version:n(/slimerjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(t)||/rim\stablet/i.test(t)?T={name:"BlackBerry",osname:"BlackBerry OS",blackberry:e,version:w||n(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:p?(T={name:"WebOS",osname:"WebOS",webos:e,version:w||n(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(t)&&(T.touchpad=e)):/bada/i.test(t)?T={name:"Bada",osname:"Bada",bada:e,version:n(/dolfin\/(\d+(\.\d+)?)/i)}:h?T={name:"Tizen",osname:"Tizen",tizen:e,version:n(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||w}:/qupzilla/i.test(t)?T={name:"QupZilla",qupzilla:e,version:n(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||w}:/chromium/i.test(t)?T={name:"Chromium",chromium:e,version:n(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||w}:/chrome|crios|crmo/i.test(t)?T={name:"Chrome",chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:o?T={name:"Android",version:w}:/safari|applewebkit/i.test(t)?(T={name:"Safari",safari:e},w&&(T.version=w)):i?(T={name:i=="iphone"?"iPhone":i=="ipad"?"iPad":"iPod"},w&&(T.version=w)):/googlebot/i.test(t)?T={name:"Googlebot",googlebot:e,version:n(/googlebot\/(\d+(\.\d+))/i)||w}:T={name:n(/^(.*)\/(.*) /),version:r(/^(.*)\/(.*) /)},!T.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\/537\.36/i.test(t)?(T.name=T.name||"Blink",T.blink=e):(T.name=T.name||"Webkit",T.webkit=e),!T.version&&w&&(T.version=w)):!T.opera&&/gecko\//i.test(t)&&(T.name=T.name||"Gecko",T.gecko=e,T.version=T.version||n(/gecko\/(\d+(\.\d+)?)/i)),!T.windowsphone&&(o||T.silk)?(T.android=e,T.osname="Android"):!T.windowsphone&&i?(T[i]=e,T.ios=e,T.osname="iOS"):g?(T.mac=e,T.osname="macOS"):x?(T.xbox=e,T.osname="Xbox"):m?(T.windows=e,T.osname="Windows"):y&&(T.linux=e,T.osname="Linux");var C="";T.windows?C=N(n(/Windows ((NT|XP)( \d\d?.\d)?)/i)):T.windowsphone?C=n(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):T.mac?(C=n(/Mac OS X (\d+([_\.\s]\d+)*)/i),C=C.replace(/[_\s]/g,".")):i?(C=n(/os (\d+([_\s]\d+)*) like mac os x/i),C=C.replace(/[_\s]/g,".")):o?C=n(/android[ \/-](\d+(\.\d+)*)/i):T.webos?C=n(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):T.blackberry?C=n(/rim\stablet\sos\s(\d+(\.\d+)*)/i):T.bada?C=n(/bada\/(\d+(\.\d+)*)/i):T.tizen&&(C=n(/tizen[\/\s](\d+(\.\d+)*)/i)),C&&(T.osversion=C);var k=!T.windows&&C.split(".")[0];if(E||a||i=="ipad"||o&&(k==3||k>=4&&!S)||T.silk)T.tablet=e;else if(S||i=="iphone"||i=="ipod"||o||u||T.blackberry||T.webos||T.bada)T.mobile=e;return T.msedge||T.msie&&T.version>=10||T.yandexbrowser&&T.version>=15||T.vivaldi&&T.version>=1||T.chrome&&T.version>=20||T.samsungBrowser&&T.version>=4||T.firefox&&T.version>=20||T.safari&&T.version>=6||T.opera&&T.version>=10||T.ios&&T.osversion&&T.osversion.split(".")[0]>=6||T.blackberry&&T.version>=10.1||T.chromium&&T.version>=20?T.a=e:T.msie&&T.version<10||T.chrome&&T.version<20||T.firefox&&T.version<20||T.safari&&T.version<6||T.opera&&T.version<10||T.ios&&T.osversion&&T.osversion.split(".")[0]<6||T.chromium&&T.version<20?T.c=e:T.x=e,T}function r(e){return e.split(".").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r=="string"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=""+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!="string")throw new Error("Browser version in the minVersion map should be a string: "+a+": "+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!="undefined"?navigator.userAgent||"":"");return n.test=function(e){for(var t=0;tnew Qn(e)),e.katex=t.katex,e.password=t.password}function t(e=document){const t=new Set,n=e.querySelectorAll('d-cite');for(const i of n){const e=i.getAttribute('key').split(',');for(const n of e)t.add(n)}return[...t]}function n(e,t,n,i){if(null==e.author)return'';var a=e.author.split(' and ');let d=a.map((e)=>{if(e=e.trim(),e.match(/\{.+\}/)){var n=/\{([^}]+)\}/,i=n.exec(e);return i[1]}if(-1!=e.indexOf(','))var a=e.split(',')[0].trim(),d=e.split(',')[1];else var a=e.split(' ').slice(-1)[0].trim(),d=e.split(' ').slice(0,-1).join(' ');var r='';return void 0!=d&&(r=d.trim().split(' ').map((e)=>e.trim()[0]),r=r.join('.')+'.'),t.replace('${F}',d).replace('${L}',a).replace('${I}',r)});if(1[${i||'link'}]`}return''}function d(e,t){return'doi'in e?`${t?'
':''} DOI: ${e.doi}`:''}function r(e){return''+e.title+' '}function o(e){if(e){var t=r(e);return t+=a(e)+'
',e.author&&(t+=n(e,'${L}, ${I}',', ',' and '),(e.year||e.date)&&(t+=', ')),t+=e.year||e.date?(e.year||e.date)+'. ':'. ',t+=i(e),t+=d(e),t}return'?'}function l(e){if(e){var t='';t+=''+e.title+'',t+=a(e),t+='
';var r=n(e,'${I} ${L}',', ')+'.',o=i(e).trim()+' '+e.year+'. '+d(e,!0);return t+=(r+o).length'+o,t}return'?'}function s(e){for(let t of e.authors){const e=!!t.affiliation,n=!!t.affiliations;if(e)if(n)console.warn(`Author ${t.author} has both old-style ("affiliation" & "affiliationURL") and new style ("affiliations") affiliation information!`);else{let e={name:t.affiliation};t.affiliationURL&&(e.url=t.affiliationURL),t.affiliations=[e]}}return console.log(e),e}function c(e){const t=e.querySelector('script');if(t){const e=t.getAttribute('type');if('json'==e.split('/')[1]){const e=t.textContent,n=JSON.parse(e);return s(n)}console.error('Distill only supports JSON frontmatter tags anymore; no more YAML.')}else console.error('You added a frontmatter tag but did not provide a script tag with front matter data in it. Please take a look at our templates.');return{}}function u(){return-1!==['interactive','complete'].indexOf(document.readyState)}function p(e){const t='distill-prerendered-styles',n=e.getElementById(t);if(!n){const n=e.createElement('style');n.id=t,n.type='text/css';const i=e.createTextNode(bi);n.appendChild(i);const a=e.head.querySelector('script');e.head.insertBefore(n,a)}}function g(e,t){console.info('Runlevel 0: Polyfill required: '+e.name);const n=document.createElement('script');n.src=e.url,n.async=!1,t&&(n.onload=function(){t(e)}),n.onerror=function(){new Error('Runlevel 0: Polyfills failed to load script '+e.name)},document.head.appendChild(n)}function f(e,t){return t={exports:{}},e(t,t.exports),t.exports}function h(e){return e.replace(/[\t\n ]+/g,' ').replace(/{\\["^`.'acu~Hvs]( )?([a-zA-Z])}/g,(e,t,n)=>n).replace(/{\\([a-zA-Z])}/g,(e,t)=>t)}function b(e){const t=new Map,n=_i.toJSON(e);for(const i of n){for(const[e,t]of Object.entries(i.entryTags))i.entryTags[e.toLowerCase()]=h(t);i.entryTags.type=i.entryType,t.set(i.citationKey,i.entryTags)}return t}function m(e){return`@article{${e.slug},
- author = {${e.bibtexAuthors}},
- title = {${e.title}},
- journal = {${e.journal.title}},
- year = {${e.publishedYear}},
- note = {${e.url}},
- doi = {${e.doi}}
-}`}function y(e){return`
-
-
- d-toc {
- contain: layout style;
- display: block;
- }
-
- d-toc ul {
- padding-left: 0;
- }
-
- d-toc ul > ul {
- padding-left: 24px;
- }
-
- d-toc a {
- border-bottom: none;
- text-decoration: none;
- }
-
-
-
- Table of contents
- `;for(const i of t){const e='D-TITLE'==i.parentElement.tagName,t=i.getAttribute('no-toc');if(e||t)continue;const a=i.textContent,d='#'+i.getAttribute('id');let r='- '+a+'
';'H3'==i.tagName?r=''+r+'
':r+='
',n+=r}n+='
',e.innerHTML=n}function v(e){return function(t,n){return Xi(e(t),n)}}function w(e,t,n){var i=(t-e)/Rn(0,n),a=Fn(jn(i)/Nn),d=i/In(10,a);return 0<=a?(d>=Gi?10:d>=ea?5:d>=ta?2:1)*In(10,a):-In(10,-a)/(d>=Gi?10:d>=ea?5:d>=ta?2:1)}function S(e,t,n){var i=Un(t-e)/Rn(0,n),a=In(10,Fn(jn(i)/Nn)),d=i/a;return d>=Gi?a*=10:d>=ea?a*=5:d>=ta&&(a*=2),t>8|240&t>>4,15&t>>4|240&t,(15&t)<<4|15&t,1)):(t=ca.exec(e))?O(parseInt(t[1],16)):(t=ua.exec(e))?new j(t[1],t[2],t[3],1):(t=pa.exec(e))?new j(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=ga.exec(e))?U(t[1],t[2],t[3],t[4]):(t=fa.exec(e))?U(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=ha.exec(e))?R(t[1],t[2]/100,t[3]/100,1):(t=ba.exec(e))?R(t[1],t[2]/100,t[3]/100,t[4]):ma.hasOwnProperty(e)?O(ma[e]):'transparent'===e?new j(NaN,NaN,NaN,0):null}function O(e){return new j(255&e>>16,255&e>>8,255&e,1)}function U(e,t,n,i){return 0>=i&&(e=t=n=NaN),new j(e,t,n,i)}function I(e){return(e instanceof L||(e=M(e)),!e)?new j:(e=e.rgb(),new j(e.r,e.g,e.b,e.opacity))}function N(e,t,n,i){return 1===arguments.length?I(e):new j(e,t,n,null==i?1:i)}function j(e,t,n,i){this.r=+e,this.g=+t,this.b=+n,this.opacity=+i}function R(e,t,n,i){return 0>=i?e=t=n=NaN:0>=n||1<=n?e=t=NaN:0>=t&&(e=NaN),new F(e,t,n,i)}function q(e){if(e instanceof F)return new F(e.h,e.s,e.l,e.opacity);if(e instanceof L||(e=M(e)),!e)return new F;if(e instanceof F)return e;e=e.rgb();var t=e.r/255,n=e.g/255,i=e.b/255,a=Hn(t,n,i),d=Rn(t,n,i),r=NaN,c=d-a,s=(d+a)/2;return c?(r=t===d?(n-i)/c+6*(ns?d+a:2-d-a,r*=60):c=0s?0:r,new F(r,c,s,e.opacity)}function F(e,t,n,i){this.h=+e,this.s=+t,this.l=+n,this.opacity=+i}function P(e,t,n){return 255*(60>e?t+(n-t)*e/60:180>e?n:240>e?t+(n-t)*(240-e)/60:t)}function H(e){if(e instanceof Y)return new Y(e.l,e.a,e.b,e.opacity);if(e instanceof X){var t=e.h*ya;return new Y(e.l,Mn(t)*e.c,Dn(t)*e.c,e.opacity)}e instanceof j||(e=I(e));var n=$(e.r),i=$(e.g),a=$(e.b),d=W((0.4124564*n+0.3575761*i+0.1804375*a)/Kn),r=W((0.2126729*n+0.7151522*i+0.072175*a)/Xn),o=W((0.0193339*n+0.119192*i+0.9503041*a)/Yn);return new Y(116*r-16,500*(d-r),200*(r-o),e.opacity)}function Y(e,t,n,i){this.l=+e,this.a=+t,this.b=+n,this.opacity=+i}function W(e){return e>Sa?In(e,1/3):e/wa+Zn}function V(e){return e>va?e*e*e:wa*(e-Zn)}function K(e){return 255*(0.0031308>=e?12.92*e:1.055*In(e,1/2.4)-0.055)}function $(e){return 0.04045>=(e/=255)?e/12.92:In((e+0.055)/1.055,2.4)}function z(e){if(e instanceof X)return new X(e.h,e.c,e.l,e.opacity);e instanceof Y||(e=H(e));var t=En(e.b,e.a)*xa;return new X(0>t?t+360:t,An(e.a*e.a+e.b*e.b),e.l,e.opacity)}function X(e,t,n,i){this.h=+e,this.c=+t,this.l=+n,this.opacity=+i}function J(e){if(e instanceof Z)return new Z(e.h,e.s,e.l,e.opacity);e instanceof j||(e=I(e));var t=e.r/255,n=e.g/255,i=e.b/255,a=(_a*i+E*t-Ta*n)/(_a+E-Ta),d=i-a,r=(D*(n-a)-B*d)/C,o=An(r*r+d*d)/(D*a*(1-a)),l=o?En(r,d)*xa-120:NaN;return new Z(0>l?l+360:l,o,a,e.opacity)}function Q(e,t,n,i){return 1===arguments.length?J(e):new Z(e,t,n,null==i?1:i)}function Z(e,t,n,i){this.h=+e,this.s=+t,this.l=+n,this.opacity=+i}function G(e,n){return function(i){return e+i*n}}function ee(e,n,i){return e=In(e,i),n=In(n,i)-e,i=1/i,function(a){return In(e+a*n,i)}}function te(e){return 1==(e=+e)?ne:function(t,n){return n-t?ee(t,n,e):La(isNaN(t)?n:t)}}function ne(e,t){var n=t-e;return n?G(e,n):La(isNaN(e)?t:e)}function ie(e){return function(){return e}}function ae(e){return function(n){return e(n)+''}}function de(e){return function t(n){function i(i,t){var a=e((i=Q(i)).h,(t=Q(t)).h),d=ne(i.s,t.s),r=ne(i.l,t.l),o=ne(i.opacity,t.opacity);return function(e){return i.h=a(e),i.s=d(e),i.l=r(In(e,n)),i.opacity=o(e),i+''}}return n=+n,i.gamma=t,i}(1)}function oe(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Pa(t)}function le(e){return function(t,n){var i=e(t=+t,n=+n);return function(e){return e<=t?0:e>=n?1:i(e)}}}function se(e){return function(n,i){var d=e(n=+n,i=+i);return function(e){return 0>=e?n:1<=e?i:d(e)}}}function ce(e,t,n,i){var a=e[0],d=e[1],r=t[0],o=t[1];return d',a=t[3]||'-',d=t[4]||'',r=!!t[5],o=t[6]&&+t[6],l=!!t[7],s=t[8]&&+t[8].slice(1),c=t[9]||'';'n'===c?(l=!0,c='g'):!$a[c]&&(c=''),(r||'0'===n&&'='===i)&&(r=!0,n='0',i='='),this.fill=n,this.align=i,this.sign=a,this.symbol=d,this.zero=r,this.width=o,this.comma=l,this.precision=s,this.type=c}function be(e){var t=e.domain;return e.ticks=function(e){var n=t();return na(n[0],n[n.length-1],null==e?10:e)},e.tickFormat=function(e,n){return ad(t(),e,n)},e.nice=function(n){null==n&&(n=10);var i,a=t(),d=0,r=a.length-1,o=a[d],l=a[r];return li&&(o=qn(o*i)/i,l=Fn(l*i)/i,i=w(o,l,n)),0i&&(a[d]=qn(o*i)/i,a[r]=Fn(l*i)/i,t(a)),e},e}function me(){var e=ge(oe,Ma);return e.copy=function(){return pe(e,me())},be(e)}function ye(e,t,n,i){function a(t){return e(t=new Date(+t)),t}return a.floor=a,a.ceil=function(n){return e(n=new Date(n-1)),t(n,1),e(n),n},a.round=function(e){var t=a(e),n=a.ceil(e);return e-t=t)for(;e(t),!n(t);)t.setTime(t-1)},function(e,i){if(e>=e)if(0>i)for(;0>=++i;)for(;t(e,-1),!n(e););else for(;0<=--i;)for(;t(e,1),!n(e););})},n&&(a.count=function(t,i){return dd.setTime(+t),rd.setTime(+i),e(dd),e(rd),Fn(n(dd,rd))},a.every=function(e){return e=Fn(e),isFinite(e)&&0e.y){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function we(e){if(0<=e.y&&100>e.y){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function Se(e){return{y:e,m:0,d:1,H:0,M:0,S:0,L:0}}function Ce(e){function t(e,t){return function(a){var d,r,o,l=[],s=-1,i=0,c=e.length;for(a instanceof Date||(a=new Date(+a));++s=n)return-1;if(r=t.charCodeAt(l++),37===r){if(r=t.charAt(l++),o=C[r in Hd?t.charAt(l++):r],!o||0>(d=o(e,a,d)))return-1;}else if(r!=a.charCodeAt(d++))return-1}return d}var r=e.dateTime,o=e.date,l=e.time,i=e.periods,s=e.days,c=e.shortDays,u=e.months,p=e.shortMonths,g=Le(i),f=Ae(i),h=Le(s),b=Ae(s),m=Le(c),y=Ae(c),x=Le(u),k=Ae(u),v=Le(p),w=Ae(p),d={a:function(e){return c[e.getDay()]},A:function(e){return s[e.getDay()]},b:function(e){return p[e.getMonth()]},B:function(e){return u[e.getMonth()]},c:null,d:Ye,e:Ye,H:Be,I:We,j:Ve,L:Ke,m:$e,M:Xe,p:function(e){return i[+(12<=e.getHours())]},S:Je,U:Qe,w:Ze,W:Ge,x:null,X:null,y:et,Y:tt,Z:nt,"%":mt},S={a:function(e){return c[e.getUTCDay()]},A:function(e){return s[e.getUTCDay()]},b:function(e){return p[e.getUTCMonth()]},B:function(e){return u[e.getUTCMonth()]},c:null,d:it,e:it,H:at,I:dt,j:rt,L:ot,m:lt,M:st,p:function(e){return i[+(12<=e.getUTCHours())]},S:ct,U:ut,w:pt,W:gt,x:null,X:null,y:ft,Y:ht,Z:bt,"%":mt},C={a:function(e,t,a){var i=m.exec(t.slice(a));return i?(e.w=y[i[0].toLowerCase()],a+i[0].length):-1},A:function(e,t,a){var i=h.exec(t.slice(a));return i?(e.w=b[i[0].toLowerCase()],a+i[0].length):-1},b:function(e,t,a){var i=v.exec(t.slice(a));return i?(e.m=w[i[0].toLowerCase()],a+i[0].length):-1},B:function(e,t,a){var i=x.exec(t.slice(a));return i?(e.m=k[i[0].toLowerCase()],a+i[0].length):-1},c:function(e,t,n){return a(e,r,t,n)},d:je,e:je,H:qe,I:qe,j:Re,L:He,m:Ne,M:Fe,p:function(e,t,a){var i=g.exec(t.slice(a));return i?(e.p=f[i[0].toLowerCase()],a+i[0].length):-1},S:Pe,U:De,w:Ee,W:Me,x:function(e,t,n){return a(e,o,t,n)},X:function(e,t,n){return a(e,l,t,n)},y:Ue,Y:Oe,Z:Ie,"%":ze};return d.x=t(o,d),d.X=t(l,d),d.c=t(r,d),S.x=t(o,S),S.X=t(l,S),S.c=t(r,S),{format:function(e){var n=t(e+='',d);return n.toString=function(){return e},n},parse:function(e){var t=n(e+='',ve);return t.toString=function(){return e},t},utcFormat:function(e){var n=t(e+='',S);return n.toString=function(){return e},n},utcParse:function(e){var t=n(e,we);return t.toString=function(){return e},t}}}function Te(e,t,n){var i=0>e?'-':'',a=(i?-e:e)+'',d=a.length;return i+(dt?1:e>=t?0:NaN}function qt(e){return function(){this.removeAttribute(e)}}function Ft(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Pt(e,t){return function(){this.setAttribute(e,t)}}function Ht(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function zt(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function Yt(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function Bt(e){return function(){this.style.removeProperty(e)}}function Wt(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Vt(e,t,n){return function(){var i=t.apply(this,arguments);null==i?this.style.removeProperty(e):this.style.setProperty(e,i,n)}}function Kt(e,t){return e.style.getPropertyValue(t)||vr(e).getComputedStyle(e,null).getPropertyValue(t)}function $t(e){return function(){delete this[e]}}function Xt(e,t){return function(){this[e]=t}}function Jt(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function Qt(e){return e.trim().split(/^|\s+/)}function Zt(e){return e.classList||new Gt(e)}function Gt(e){this._node=e,this._names=Qt(e.getAttribute('class')||'')}function en(e,t){for(var a=Zt(e),d=-1,i=t.length;++dUpdates and Corrections
-`}function x(e,t,n=document){if(0
`,e.githubCompareUpdatesUrl&&(t+=`View all changes to this article since it was first published.`),t+=` - If you see mistakes or want to suggest changes, please create an issue on GitHub.
- `);const n=e.journal;return'undefined'!=typeof n&&'Distill'===n.title&&(t+=` -Diagrams and text are licensed under Creative Commons Attribution CC-BY 4.0 with the source available on GitHub, unless noted otherwise. The figures that have been reused from other sources don’t fall under this license and can be recognized by a note in their caption: “Figure from …”.
- `),'undefined'!=typeof e.publishedDate&&(t+=` -For attribution in academic contexts, please cite this work as
-${e.concatenatedAuthors}, "${e.title}", Distill, ${e.publishedYear}.-
BibTeX citation
-${m(e)}- `),t}var An=Math.sqrt,En=Math.atan2,Dn=Math.sin,Mn=Math.cos,On=Math.PI,Un=Math.abs,In=Math.pow,Nn=Math.LN10,jn=Math.log,Rn=Math.max,qn=Math.ceil,Fn=Math.floor,Pn=Math.round,Hn=Math.min;const zn=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],Bn=['Jan.','Feb.','March','April','May','June','July','Aug.','Sept.','Oct.','Nov.','Dec.'],Wn=(e)=>10>e?'0'+e:e,Vn=function(e){const t=zn[e.getDay()].substring(0,3),n=Wn(e.getDate()),i=Bn[e.getMonth()].substring(0,3),a=e.getFullYear().toString(),d=e.getUTCHours().toString(),r=e.getUTCMinutes().toString(),o=e.getUTCSeconds().toString();return`${t}, ${n} ${i} ${a} ${d}:${r}:${o} Z`},$n=function(e){const t=Array.from(e).reduce((e,[t,n])=>Object.assign(e,{[t]:n}),{});return t},Jn=function(e){const t=new Map;for(var n in e)e.hasOwnProperty(n)&&t.set(n,e[n]);return t};class Qn{constructor(e){this.name=e.author,this.personalURL=e.authorURL,this.affiliation=e.affiliation,this.affiliationURL=e.affiliationURL,this.affiliations=e.affiliations||[]}get firstName(){const e=this.name.split(' ');return e.slice(0,e.length-1).join(' ')}get lastName(){const e=this.name.split(' ');return e[e.length-1]}}class Gn{constructor(){this.title='unnamed article',this.description='',this.authors=[],this.bibliography=new Map,this.bibliographyParsed=!1,this.citations=[],this.citationsCollected=!1,this.journal={},this.katex={},this.publishedDate=void 0}set url(e){this._url=e}get url(){if(this._url)return this._url;return this.distillPath&&this.journal.url?this.journal.url+'/'+this.distillPath:this.journal.url?this.journal.url:void 0}get githubUrl(){return this.githubPath?'https://github.com/'+this.githubPath:void 0}set previewURL(e){this._previewURL=e}get previewURL(){return this._previewURL?this._previewURL:this.url+'/thumbnail.jpg'}get publishedDateRFC(){return Vn(this.publishedDate)}get updatedDateRFC(){return Vn(this.updatedDate)}get publishedYear(){return this.publishedDate.getFullYear()}get publishedMonth(){return Bn[this.publishedDate.getMonth()]}get publishedDay(){return this.publishedDate.getDate()}get publishedMonthPadded(){return Wn(this.publishedDate.getMonth()+1)}get publishedDayPadded(){return Wn(this.publishedDate.getDate())}get publishedISODateOnly(){return this.publishedDate.toISOString().split('T')[0]}get volume(){const e=this.publishedYear-2015;if(1>e)throw new Error('Invalid publish date detected during computing volume');return e}get issue(){return this.publishedDate.getMonth()+1}get concatenatedAuthors(){if(2
tag. We found the following text: '+t);const n=document.createElement('span');n.innerHTML=e.nodeValue,e.parentNode.insertBefore(n,e),e.parentNode.removeChild(e)}}}}).observe(this,{childList:!0})}}var Ti='undefined'==typeof window?'undefined'==typeof global?'undefined'==typeof self?{}:self:global:window,_i=f(function(e,t){(function(e){function t(){this.months=['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'],this.notKey=[',','{','}',' ','='],this.pos=0,this.input='',this.entries=[],this.currentEntry='',this.setInput=function(e){this.input=e},this.getEntries=function(){return this.entries},this.isWhitespace=function(e){return' '==e||'\r'==e||'\t'==e||'\n'==e},this.match=function(e,t){if((void 0==t||null==t)&&(t=!0),this.skipWhitespace(t),this.input.substring(this.pos,this.pos+e.length)==e)this.pos+=e.length;else throw'Token mismatch, expected '+e+', found '+this.input.substring(this.pos);this.skipWhitespace(t)},this.tryMatch=function(e,t){return(void 0==t||null==t)&&(t=!0),this.skipWhitespace(t),this.input.substring(this.pos,this.pos+e.length)==e},this.matchAt=function(){for(;this.input.length>this.pos&&'@'!=this.input[this.pos];)this.pos++;return!('@'!=this.input[this.pos])},this.skipWhitespace=function(e){for(;this.isWhitespace(this.input[this.pos]);)this.pos++;if('%'==this.input[this.pos]&&!0==e){for(;'\n'!=this.input[this.pos];)this.pos++;this.skipWhitespace(e)}},this.value_braces=function(){var e=0;this.match('{',!1);for(var t=this.pos,n=!1;;){if(!n)if('}'==this.input[this.pos]){if(0 =k&&(++x,i=k);if(d[x]instanceof n||d[T-1].greedy)continue;w=T-x,y=e.slice(i,k),v.index-=i}if(v){g&&(h=v[1].length);var S=v.index+h,v=v[0].slice(h),C=S+v.length,_=y.slice(0,S),L=y.slice(C),A=[x,w];_&&A.push(_);var E=new n(o,u?a.tokenize(v,u):v,b,v,f);A.push(E),L&&A.push(L),Array.prototype.splice.apply(d,A)}}}}}return d},hooks:{all:{},add:function(e,t){var n=a.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=a.hooks.all[e];if(n&&n.length)for(var d,r=0;d=n[r++];)d(t)}}},i=a.Token=function(e,t,n,i,a){this.type=e,this.content=t,this.alias=n,this.length=0|(i||'').length,this.greedy=!!a};if(i.stringify=function(e,t,n){if('string'==typeof e)return e;if('Array'===a.util.type(e))return e.map(function(n){return i.stringify(n,t,e)}).join('');var d={type:e.type,content:i.stringify(e.content,t,n),tag:'span',classes:['token',e.type],attributes:{},language:t,parent:n};if('comment'==d.type&&(d.attributes.spellcheck='true'),e.alias){var r='Array'===a.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(d.classes,r)}a.hooks.run('wrap',d);var l=Object.keys(d.attributes).map(function(e){return e+'="'+(d.attributes[e]||'').replace(/"/g,'"')+'"'}).join(' ');return'<'+d.tag+' class="'+d.classes.join(' ')+'"'+(l?' '+l:'')+'>'+d.content+''+d.tag+'>'},!t.document)return t.addEventListener?(t.addEventListener('message',function(e){var n=JSON.parse(e.data),i=n.language,d=n.code,r=n.immediateClose;t.postMessage(a.highlight(d,a.languages[i],i)),r&&t.close()},!1),t.Prism):t.Prism;var d=document.currentScript||[].slice.call(document.getElementsByTagName('script')).pop();return d&&(a.filename=d.src,document.addEventListener&&!d.hasAttribute('data-manual')&&('loading'===document.readyState?document.addEventListener('DOMContentLoaded',a.highlightAll):window.requestAnimationFrame?window.requestAnimationFrame(a.highlightAll):window.setTimeout(a.highlightAll,16))),t.Prism}();e.exports&&(e.exports=n),'undefined'!=typeof Ti&&(Ti.Prism=n),n.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/?[\da-z]{1,8};/i},n.hooks.add('wrap',function(e){'entity'===e.type&&(e.attributes.title=e.content.replace(/&/,'&'))}),n.languages.xml=n.languages.markup,n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},n.languages.css.atrule.inside.rest=n.util.clone(n.languages.css),n.languages.markup&&(n.languages.insertBefore('markup','tag',{style:{pattern:/(
-
-
- ${e.map(l).map((e)=>`
`)}}const Mi=`
-d-citation-list {
- contain: layout style;
-}
-
-d-citation-list .references {
- grid-column: text;
-}
-
-d-citation-list .references .title {
- font-weight: 500;
-}
-`;class Oi extends HTMLElement{static get is(){return'd-citation-list'}connectedCallback(){this.hasAttribute('distill-prerendered')||(this.style.display='none')}set citations(e){x(this,e)}}var Ui=f(function(e){var t='undefined'==typeof window?'undefined'!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{}:window,n=function(){var e=/\blang(?:uage)?-(\w+)\b/i,n=0,a=t.Prism={util:{encode:function(e){return e instanceof i?new i(e.type,a.util.encode(e.content),e.alias):'Array'===a.util.type(e)?e.map(a.util.encode):e.replace(/&/g,'&').replace(/e.length)break tokenloop;if(!(y instanceof n)){c.lastIndex=0;var v=c.exec(y),w=1;if(!v&&f&&x!=d.length-1){if(c.lastIndex=i,v=c.exec(e),!v)break;for(var S=v.index+(g?v[1].length:0),C=v.index+v[0].length,T=x,k=i,p=d.length;T
-
-`);class Ni extends ei(Ii(HTMLElement)){renderContent(){if(this.languageName=this.getAttribute('language'),!this.languageName)return void console.warn('You need to provide a language attribute to your
Footnotes
-
-`,!1);class Fi extends qi(HTMLElement){connectedCallback(){super.connectedCallback(),this.list=this.root.querySelector('ol'),this.root.style.display='none'}set footnotes(e){if(this.list.innerHTML='',e.length){this.root.style.display='';for(const t of e){const e=document.createElement('li');e.id=t.id+'-listing',e.innerHTML=t.innerHTML;const n=document.createElement('a');n.setAttribute('class','footnote-backlink'),n.textContent='[\u21A9]',n.href='#'+t.id,e.appendChild(n),this.list.appendChild(e)}}else this.root.style.display='none'}}const Pi=ti('d-hover-box',`
-
-
-
':''} DOI: ${e.doi}`:''}function r(e){return''+e.title+' '}function o(e){if(e){var t=r(e);return t+=a(e)+'
',e.author&&(t+=n(e,'${L}, ${I}',', ',' and '),(e.year||e.date)&&(t+=', ')),t+=e.year||e.date?(e.year||e.date)+'. ':'. ',t+=i(e),t+=d(e),t}return'?'}function l(e){if(e){var t='';t+=''+e.title+'',t+=a(e),t+='
';var r=n(e,'${I} ${L}',', ')+'.',o=i(e).trim()+' '+e.year+'. '+d(e,!0);return t+=(r+o).lengthTable of contents
- `;for(const i of t){const e='D-TITLE'==i.parentElement.tagName,t=i.getAttribute('no-toc');if(e||t)continue;const a=i.textContent,d='#'+i.getAttribute('id');let r='
',e.innerHTML=n}function v(e){return function(t,n){return Xi(e(t),n)}}function w(e,t,n){var i=(t-e)/Rn(0,n),a=Fn(jn(i)/Nn),d=i/In(10,a);return 0<=a?(d>=Gi?10:d>=ea?5:d>=ta?2:1)*In(10,a):-In(10,-a)/(d>=Gi?10:d>=ea?5:d>=ta?2:1)}function S(e,t,n){var i=Un(t-e)/Rn(0,n),a=In(10,Fn(jn(i)/Nn)),d=i/a;return d>=Gi?a*=10:d>=ea?a*=5:d>=ta&&(a*=2),t'+r+'
':r+='
',n+=r}n+='s?0:r,new F(r,c,s,e.opacity)}function F(e,t,n,i){this.h=+e,this.s=+t,this.l=+n,this.opacity=+i}function P(e,t,n){return 255*(60>e?t+(n-t)*e/60:180>e?n:240>e?t+(n-t)*(240-e)/60:t)}function H(e){if(e instanceof Y)return new Y(e.l,e.a,e.b,e.opacity);if(e instanceof X){var t=e.h*ya;return new Y(e.l,Mn(t)*e.c,Dn(t)*e.c,e.opacity)}e instanceof j||(e=I(e));var n=$(e.r),i=$(e.g),a=$(e.b),d=W((0.4124564*n+0.3575761*i+0.1804375*a)/Kn),r=W((0.2126729*n+0.7151522*i+0.072175*a)/Xn),o=W((0.0193339*n+0.119192*i+0.9503041*a)/Yn);return new Y(116*r-16,500*(d-r),200*(r-o),e.opacity)}function Y(e,t,n,i){this.l=+e,this.a=+t,this.b=+n,this.opacity=+i}function W(e){return e>Sa?In(e,1/3):e/wa+Zn}function V(e){return e>va?e*e*e:wa*(e-Zn)}function K(e){return 255*(0.0031308>=e?12.92*e:1.055*In(e,1/2.4)-0.055)}function $(e){return 0.04045>=(e/=255)?e/12.92:In((e+0.055)/1.055,2.4)}function z(e){if(e instanceof X)return new X(e.h,e.c,e.l,e.opacity);e instanceof Y||(e=H(e));var t=En(e.b,e.a)*xa;return new X(0>t?t+360:t,An(e.a*e.a+e.b*e.b),e.l,e.opacity)}function X(e,t,n,i){this.h=+e,this.c=+t,this.l=+n,this.opacity=+i}function J(e){if(e instanceof Z)return new Z(e.h,e.s,e.l,e.opacity);e instanceof j||(e=I(e));var t=e.r/255,n=e.g/255,i=e.b/255,a=(_a*i+E*t-Ta*n)/(_a+E-Ta),d=i-a,r=(D*(n-a)-B*d)/C,o=An(r*r+d*d)/(D*a*(1-a)),l=o?En(r,d)*xa-120:NaN;return new Z(0>l?l+360:l,o,a,e.opacity)}function Q(e,t,n,i){return 1===arguments.length?J(e):new Z(e,t,n,null==i?1:i)}function Z(e,t,n,i){this.h=+e,this.s=+t,this.l=+n,this.opacity=+i}function G(e,n){return function(i){return e+i*n}}function ee(e,n,i){return e=In(e,i),n=In(n,i)-e,i=1/i,function(a){return In(e+a*n,i)}}function te(e){return 1==(e=+e)?ne:function(t,n){return n-t?ee(t,n,e):La(isNaN(t)?n:t)}}function ne(e,t){var n=t-e;return n?G(e,n):La(isNaN(e)?t:e)}function ie(e){return function(){return e}}function ae(e){return function(n){return e(n)+''}}function de(e){return function t(n){function i(i,t){var a=e((i=Q(i)).h,(t=Q(t)).h),d=ne(i.s,t.s),r=ne(i.l,t.l),o=ne(i.opacity,t.opacity);return function(e){return i.h=a(e),i.s=d(e),i.l=r(In(e,n)),i.opacity=o(e),i+''}}return n=+n,i.gamma=t,i}(1)}function oe(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:Pa(t)}function le(e){return function(t,n){var i=e(t=+t,n=+n);return function(e){return e<=t?0:e>=n?1:i(e)}}}function se(e){return function(n,i){var d=e(n=+n,i=+i);return function(e){return 0>=e?n:1<=e?i:d(e)}}}function ce(e,t,n,i){var a=e[0],d=e[1],r=t[0],o=t[1];return d',a=t[3]||'-',d=t[4]||'',r=!!t[5],o=t[6]&&+t[6],l=!!t[7],s=t[8]&&+t[8].slice(1),c=t[9]||'';'n'===c?(l=!0,c='g'):!$a[c]&&(c=''),(r||'0'===n&&'='===i)&&(r=!0,n='0',i='='),this.fill=n,this.align=i,this.sign=a,this.symbol=d,this.zero=r,this.width=o,this.comma=l,this.precision=s,this.type=c}function be(e){var t=e.domain;return e.ticks=function(e){var n=t();return na(n[0],n[n.length-1],null==e?10:e)},e.tickFormat=function(e,n){return ad(t(),e,n)},e.nice=function(n){null==n&&(n=10);var i,a=t(),d=0,r=a.length-1,o=a[d],l=a[r];return l
`,e.githubCompareUpdatesUrl&&(t+=`View all changes to this article since it was first published.`),t+=` - If you see mistakes or want to suggest changes, please create an issue on GitHub.
- `);const n=e.journal;return'undefined'!=typeof n&&'Distill'===n.title&&(t+=` -Diagrams and text are licensed under Creative Commons Attribution CC-BY 4.0 with the source available on GitHub, unless noted otherwise. The figures that have been reused from other sources don’t fall under this license and can be recognized by a note in their caption: “Figure from …”.
- `),'undefined'!=typeof e.publishedDate&&(t+=` -For attribution in academic contexts, please cite this work as
-${e.concatenatedAuthors}, "${e.title}", Distill, ${e.publishedYear}.-
BibTeX citation
-${m(e)}- `),t}var An=Math.sqrt,En=Math.atan2,Dn=Math.sin,Mn=Math.cos,On=Math.PI,Un=Math.abs,In=Math.pow,Nn=Math.LN10,jn=Math.log,Rn=Math.max,qn=Math.ceil,Fn=Math.floor,Pn=Math.round,Hn=Math.min;const zn=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],Bn=['Jan.','Feb.','March','April','May','June','July','Aug.','Sept.','Oct.','Nov.','Dec.'],Wn=(e)=>10>e?'0'+e:e,Vn=function(e){const t=zn[e.getDay()].substring(0,3),n=Wn(e.getDate()),i=Bn[e.getMonth()].substring(0,3),a=e.getFullYear().toString(),d=e.getUTCHours().toString(),r=e.getUTCMinutes().toString(),o=e.getUTCSeconds().toString();return`${t}, ${n} ${i} ${a} ${d}:${r}:${o} Z`},$n=function(e){const t=Array.from(e).reduce((e,[t,n])=>Object.assign(e,{[t]:n}),{});return t},Jn=function(e){const t=new Map;for(var n in e)e.hasOwnProperty(n)&&t.set(n,e[n]);return t};class Qn{constructor(e){this.name=e.author,this.personalURL=e.authorURL,this.affiliation=e.affiliation,this.affiliationURL=e.affiliationURL,this.affiliations=e.affiliations||[]}get firstName(){const e=this.name.split(' ');return e.slice(0,e.length-1).join(' ')}get lastName(){const e=this.name.split(' ');return e[e.length-1]}}class Gn{constructor(){this.title='unnamed article',this.description='',this.authors=[],this.bibliography=new Map,this.bibliographyParsed=!1,this.citations=[],this.citationsCollected=!1,this.journal={},this.katex={},this.publishedDate=void 0}set url(e){this._url=e}get url(){if(this._url)return this._url;return this.distillPath&&this.journal.url?this.journal.url+'/'+this.distillPath:this.journal.url?this.journal.url:void 0}get githubUrl(){return this.githubPath?'https://github.com/'+this.githubPath:void 0}set previewURL(e){this._previewURL=e}get previewURL(){return this._previewURL?this._previewURL:this.url+'/thumbnail.jpg'}get publishedDateRFC(){return Vn(this.publishedDate)}get updatedDateRFC(){return Vn(this.updatedDate)}get publishedYear(){return this.publishedDate.getFullYear()}get publishedMonth(){return Bn[this.publishedDate.getMonth()]}get publishedDay(){return this.publishedDate.getDate()}get publishedMonthPadded(){return Wn(this.publishedDate.getMonth()+1)}get publishedDayPadded(){return Wn(this.publishedDate.getDate())}get publishedISODateOnly(){return this.publishedDate.toISOString().split('T')[0]}get volume(){const e=this.publishedYear-2015;if(1>e)throw new Error('Invalid publish date detected during computing volume');return e}get issue(){return this.publishedDate.getMonth()+1}get concatenatedAuthors(){if(2
tag. We found the following text: '+t);const n=document.createElement('span');n.innerHTML=e.nodeValue,e.parentNode.insertBefore(n,e),e.parentNode.removeChild(e)}}}}).observe(this,{childList:!0})}}var Ti='undefined'==typeof window?'undefined'==typeof global?'undefined'==typeof self?{}:self:global:window,_i=f(function(e,t){(function(e){function t(){this.months=['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'],this.notKey=[',','{','}',' ','='],this.pos=0,this.input='',this.entries=[],this.currentEntry='',this.setInput=function(e){this.input=e},this.getEntries=function(){return this.entries},this.isWhitespace=function(e){return' '==e||'\r'==e||'\t'==e||'\n'==e},this.match=function(e,t){if((void 0==t||null==t)&&(t=!0),this.skipWhitespace(t),this.input.substring(this.pos,this.pos+e.length)==e)this.pos+=e.length;else throw'Token mismatch, expected '+e+', found '+this.input.substring(this.pos);this.skipWhitespace(t)},this.tryMatch=function(e,t){return(void 0==t||null==t)&&(t=!0),this.skipWhitespace(t),this.input.substring(this.pos,this.pos+e.length)==e},this.matchAt=function(){for(;this.input.length>this.pos&&'@'!=this.input[this.pos];)this.pos++;return!('@'!=this.input[this.pos])},this.skipWhitespace=function(e){for(;this.isWhitespace(this.input[this.pos]);)this.pos++;if('%'==this.input[this.pos]&&!0==e){for(;'\n'!=this.input[this.pos];)this.pos++;this.skipWhitespace(e)}},this.value_braces=function(){var e=0;this.match('{',!1);for(var t=this.pos,n=!1;;){if(!n)if('}'==this.input[this.pos]){if(0 =k&&(++x,i=k);if(d[x]instanceof n||d[T-1].greedy)continue;w=T-x,y=e.slice(i,k),v.index-=i}if(v){g&&(h=v[1].length);var S=v.index+h,v=v[0].slice(h),C=S+v.length,_=y.slice(0,S),L=y.slice(C),A=[x,w];_&&A.push(_);var E=new n(o,u?a.tokenize(v,u):v,b,v,f);A.push(E),L&&A.push(L),Array.prototype.splice.apply(d,A)}}}}}return d},hooks:{all:{},add:function(e,t){var n=a.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=a.hooks.all[e];if(n&&n.length)for(var d,r=0;d=n[r++];)d(t)}}},i=a.Token=function(e,t,n,i,a){this.type=e,this.content=t,this.alias=n,this.length=0|(i||'').length,this.greedy=!!a};if(i.stringify=function(e,t,n){if('string'==typeof e)return e;if('Array'===a.util.type(e))return e.map(function(n){return i.stringify(n,t,e)}).join('');var d={type:e.type,content:i.stringify(e.content,t,n),tag:'span',classes:['token',e.type],attributes:{},language:t,parent:n};if('comment'==d.type&&(d.attributes.spellcheck='true'),e.alias){var r='Array'===a.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(d.classes,r)}a.hooks.run('wrap',d);var l=Object.keys(d.attributes).map(function(e){return e+'="'+(d.attributes[e]||'').replace(/"/g,'"')+'"'}).join(' ');return'<'+d.tag+' class="'+d.classes.join(' ')+'"'+(l?' '+l:'')+'>'+d.content+''+d.tag+'>'},!t.document)return t.addEventListener?(t.addEventListener('message',function(e){var n=JSON.parse(e.data),i=n.language,d=n.code,r=n.immediateClose;t.postMessage(a.highlight(d,a.languages[i],i)),r&&t.close()},!1),t.Prism):t.Prism;var d=document.currentScript||[].slice.call(document.getElementsByTagName('script')).pop();return d&&(a.filename=d.src,document.addEventListener&&!d.hasAttribute('data-manual')&&('loading'===document.readyState?document.addEventListener('DOMContentLoaded',a.highlightAll):window.requestAnimationFrame?window.requestAnimationFrame(a.highlightAll):window.setTimeout(a.highlightAll,16))),t.Prism}();e.exports&&(e.exports=n),'undefined'!=typeof Ti&&(Ti.Prism=n),n.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/?[\da-z]{1,8};/i},n.hooks.add('wrap',function(e){'entity'===e.type&&(e.attributes.title=e.content.replace(/&/,'&'))}),n.languages.xml=n.languages.markup,n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},n.languages.css.atrule.inside.rest=n.util.clone(n.languages.css),n.languages.markup&&(n.languages.insertBefore('markup','tag',{style:{pattern:/(
-
-
- ${e.map(l).map((e)=>`
`)}}const Mi=`
-d-citation-list {
- contain: layout style;
-}
-
-d-citation-list .references {
- grid-column: text;
-}
-
-d-citation-list .references .title {
- font-weight: 500;
-}
-`;class Oi extends HTMLElement{static get is(){return'd-citation-list'}connectedCallback(){this.hasAttribute('distill-prerendered')||(this.style.display='none')}set citations(e){x(this,e)}}var Ui=f(function(e){var t='undefined'==typeof window?'undefined'!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{}:window,n=function(){var e=/\blang(?:uage)?-(\w+)\b/i,n=0,a=t.Prism={util:{encode:function(e){return e instanceof i?new i(e.type,a.util.encode(e.content),e.alias):'Array'===a.util.type(e)?e.map(a.util.encode):e.replace(/&/g,'&').replace(/e.length)break tokenloop;if(!(y instanceof n)){c.lastIndex=0;var v=c.exec(y),w=1;if(!v&&f&&x!=d.length-1){if(c.lastIndex=i,v=c.exec(e),!v)break;for(var S=v.index+(g?v[1].length:0),C=v.index+v[0].length,T=x,k=i,p=d.length;T
-
-`);class Ni extends ei(Ii(HTMLElement)){renderContent(){if(this.languageName=this.getAttribute('language'),!this.languageName)return void console.warn('You need to provide a language attribute to your
Footnotes
-
-`,!1);class Fi extends qi(HTMLElement){connectedCallback(){super.connectedCallback(),this.list=this.root.querySelector('ol'),this.root.style.display='none'}set footnotes(e){if(this.list.innerHTML='',e.length){this.root.style.display='';for(const t of e){const e=document.createElement('li');e.id=t.id+'-listing',e.innerHTML=t.innerHTML;const n=document.createElement('a');n.setAttribute('class','footnote-backlink'),n.textContent='[\u21A9]',n.href='#'+t.id,e.appendChild(n),this.list.appendChild(e)}}else this.root.style.display='none'}}const Pi=ti('d-hover-box',`
-
-
-