update template

This commit is contained in:
2024-08-25 21:35:42 +08:00
parent 6e7e207274
commit 8882726770
15 changed files with 464 additions and 130 deletions
+17
View File
@@ -0,0 +1,17 @@
\relax
\providecommand\babel@aux[2]{}
\@nameuse{bbl@beforestart}
\providecommand\hyper@newdestlabel[2]{}
\providecommand*\HyPL@Entry[1]{}
\bibstyle{elsarticle-harv}
\emailauthor{mingsu@rcees.ac.cn}{Ming Su}
\emailauthor{yangmin@rcees.ac.cn}{Min Yang\corref {cor1}}
\Newlabel{cor1}{1}
\bibdata{../BB/Ref.bib,../BB/localRef.bib}
\HyPL@Entry{0<</S/D>>}
\babel@aux{english}{}
\Newlabel{1}{a}
\Newlabel{2}{b}
\newlabel{credit-authorship-contribution-statement}{{b}{1}{CRediT authorship contribution statement}{section*.1}{}}
\@writefile{toc}{\contentsline {section}{CRediT authorship contribution statement}{1}{section*.1}\protected@file@percent }
\gdef \@abspage@last{1}
+1 -1
View File
@@ -28,6 +28,6 @@ closing_greeting: "Yours Sincerely,"
Thank you for your consideration our manuscript (`{{< meta submitid >}}`) in publishing in {{< meta submitjournal >}}, and we also thank the reviewers for their kind and valuable comments. Thank you for your consideration our manuscript (`{{< meta submitid >}}`) in publishing in {{< meta submitjournal >}}, and we also thank the reviewers for their kind and valuable comments.
We have carefully revised the manuscripte according to each comment from the reviewers. As requested, revision note with point to point responses and actions, change tracking manuscript and revised manuscript have been prepared and included in the revision submission. We have carefully revised the manuscript according to each comment from the reviewers. As requested, revision note with point to point responses and actions, change tracking manuscript and revised manuscript have been prepared and included in the revision submission.
We believe that the paper has been greatly improved. Looking forward to your further instruction regarding its publication. We believe that the paper has been greatly improved. Looking forward to your further instruction regarding its publication.
+33
View File
@@ -0,0 +1,33 @@
\relax
\providecommand\zref@newlabel[2]{}
\providecommand\hyper@newdestlabel[2]{}
\providecommand*\HyPL@Entry[1]{}
\providecommand\babel@aux[2]{}
\@nameuse{bbl@beforestart}
\bibstyle{elsarticle-harv}
\emailauthor{mingsu@rcees.ac.cn}{Ming Su}
\emailauthor{yangmin@rcees.ac.cn}{Min Yang\corref {cor1}}
\Newlabel{cor1}{1}
\bibdata{../BB/Ref.bib,../BB/localRef.bib}
\HyPL@Entry{0<</S/D>>}
\babel@aux{english}{}
\Newlabel{1}{a}
\Newlabel{2}{b}
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
\newlabel{introduction}{{1}{1}{Introduction}{section.1}{}}
\newlabel{r:r1q0101}{{Bla blaBla blaBla blaBla blaBla bla Bla bla.}{}}
\newlabel{r1q0101}{{1}{1}{Introduction}{section.1}{}}
\newlabel{r1q0101end}{{1}{1}{Introduction}{section.1}{}}
\newlabel{line:r1q0101}{{6}{1}{}{}{}}
\newlabel{line:r1q0101end}{{6}{1}{}{}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Materials and methods}{1}{section.2}\protected@file@percent }
\newlabel{materials-and-methods}{{2}{1}{Materials and methods}{section.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Results}{1}{section.3}\protected@file@percent }
\newlabel{results}{{3}{1}{Results}{section.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Discussion}{1}{section.4}\protected@file@percent }
\newlabel{discussion}{{4}{1}{Discussion}{section.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Conclusions}{1}{section.5}\protected@file@percent }
\newlabel{conclusions}{{5}{1}{Conclusions}{section.5}{}}
\newlabel{acknowledgements}{{5}{1}{Acknowledgements}{section*.1}{}}
\@writefile{toc}{\contentsline {section}{Acknowledgements}{1}{section*.1}\protected@file@percent }
\gdef \@abspage@last{1}
+38 -30
View File
@@ -14,41 +14,41 @@ format:
elsevier-html: elsevier-html:
css: _extensions/inst/css/style.css css: _extensions/inst/css/style.css
keep-md: true keep-md: true
filters: dplyr::filters:
- author-info-blocks - author-info-blocks
epub: default epub: default
docx: docx:
reference-doc: _extensions/inst/word/MS.docx reference-doc: _extensions/inst/word/MS.docx
filters: dplyr::filters:
- author-info-blocks - author-info-blocks
elsevier-pdf: # elsevier-pdf:
keep-tex: true # keep-tex: false
keep-md: true # keep-md: false
include-in-header: "./_extensions/quarto-journals/elsevier/partials/revision.tex" # include-in-header: "./_extensions/quarto-journals/elsevier/partials/revision.tex"
latex-clean: false # latex-clean: false
header-includes: # header-includes:
# - \usepackage{threeparttable} # # - \usepackage{threeparttable}
# - \usepackage{fontspec} # # - \usepackage{fontspec}
# - \usepackage{endfloat} # # - \usepackage{endfloat}
- \setmainfont{Calibri} # - \setmainfont{Calibri}
# - \usepackage[UTF8, scheme=plain]{ctex} # - \usepackage[UTF8, scheme=plain]{ctex}
# - \usepackage{float} # - \usepackage{float}
- \usepackage[normalem]{ulem} # - \usepackage[normalem]{ulem}
- \usepackage[doublespacing]{setspace} # - \usepackage[doublespacing]{setspace}
- \usepackage{lineno} # - \usepackage{lineno}
- \linenumbers # - \linenumbers
journal: # journal:
formatting: preprint # preprint | review | doublebind # formatting: preprint # preprint | review | doublebind
model: 1p # model: 1p
cite-style: authoryear # cite-style: authoryear
# graphical-abstract: "![](./figures/GA3.pdf)" # # graphical-abstract: "![](../figures/GA3.pdf)"
# highlights: # # highlights:
# - A comprehensive model was contructed to evaluate the risk of odor occurrences # # - A comprehensive model was contructed to evaluate the risk of odor occurrences
# - Turbidity distribution determine underwater light and MIB-producing *Planktothrix* # # - Turbidity distribution determine underwater light and MIB-producing *Planktothrix*
# - Increasing flowrate increases turbidity that can control *Planktothrix* and MIB # # - Increasing flowrate increases turbidity that can control *Planktothrix* and MIB
# - Odor control based on flow regulation in source water is "green" and fundamental # # - Odor control based on flow regulation in source water is "green" and fundamental
filters: # filters:
- latex-environment # - latex-environment
commands: [clab] commands: [clab]
--- ---
@@ -57,6 +57,10 @@ commands: [clab]
::: {.content-visible when-format="html"} ::: {.content-visible when-format="html"}
# Color tip {.unnumbered} # Color tip {.unnumbered}
@@ -81,6 +85,10 @@ commands: [clab]
# Introduction # Introduction
Blabla. [Bla blaBla blaBla blaBla blaBla bla Bla bla.]{.clab options=r1q0101} Blabla. [Bla blaBla blaBla blaBla blaBla bla Bla bla.]{.clab options=r1q0101}
+34 -39
View File
@@ -14,44 +14,45 @@ format:
elsevier-html: elsevier-html:
css: _extensions/inst/css/style.css css: _extensions/inst/css/style.css
keep-md: true keep-md: true
filters: dplyr::filters:
- author-info-blocks - author-info-blocks
epub: default epub: default
docx: docx:
reference-doc: _extensions/inst/word/MS.docx reference-doc: _extensions/inst/word/MS.docx
filters: dplyr::filters:
- author-info-blocks - author-info-blocks
elsevier-pdf: # elsevier-pdf:
keep-tex: true # keep-tex: false
keep-md: true # keep-md: false
include-in-header: "./_extensions/quarto-journals/elsevier/partials/revision.tex" # include-in-header: "./_extensions/quarto-journals/elsevier/partials/revision.tex"
latex-clean: false # latex-clean: false
header-includes: # header-includes:
# - \usepackage{threeparttable} # # - \usepackage{threeparttable}
# - \usepackage{fontspec} # # - \usepackage{fontspec}
# - \usepackage{endfloat} # # - \usepackage{endfloat}
- \setmainfont{Calibri} # - \setmainfont{Calibri}
# - \usepackage[UTF8, scheme=plain]{ctex} # - \usepackage[UTF8, scheme=plain]{ctex}
# - \usepackage{float} # - \usepackage{float}
- \usepackage[normalem]{ulem} # - \usepackage[normalem]{ulem}
- \usepackage[doublespacing]{setspace} # - \usepackage[doublespacing]{setspace}
- \usepackage{lineno} # - \usepackage{lineno}
- \linenumbers # - \linenumbers
journal: # journal:
formatting: preprint # preprint | review | doublebind # formatting: preprint # preprint | review | doublebind
model: 1p # model: 1p
cite-style: authoryear # cite-style: authoryear
# graphical-abstract: "![](./figures/GA3.pdf)" # # graphical-abstract: "![](../figures/GA3.pdf)"
# highlights: # # highlights:
# - A comprehensive model was contructed to evaluate the risk of odor occurrences # # - A comprehensive model was contructed to evaluate the risk of odor occurrences
# - Turbidity distribution determine underwater light and MIB-producing *Planktothrix* # # - Turbidity distribution determine underwater light and MIB-producing *Planktothrix*
# - Increasing flowrate increases turbidity that can control *Planktothrix* and MIB # # - Increasing flowrate increases turbidity that can control *Planktothrix* and MIB
# - Odor control based on flow regulation in source water is "green" and fundamental # # - Odor control based on flow regulation in source water is "green" and fundamental
filters: # filters:
- latex-environment # - latex-environment
commands: [clab] commands: [clab]
--- ---
::: {.content-visible when-format="html"} ::: {.content-visible when-format="html"}
# Color tip {.unnumbered} # Color tip {.unnumbered}
@@ -72,20 +73,14 @@ lang <- "en"
RM <- "F" # global rendermode, L: load pdata; F: fast load pdf # nolint RM <- "F" # global rendermode, L: load pdata; F: fast load pdf # nolint
isRendering <- isTRUE(getOption("knitr.in.progress")) isRendering <- isTRUE(getOption("knitr.in.progress"))
require(tidyverse) require(tidyverse)
require(drwateR)
require(rmdify)
rmdify::rmd_init()
require(dateR)
require(uniteR)
require(langeR)
require(patchwork)
require(lubridate) require(lubridate)
require(patchwork)
require(drwateR)
rmdify::rmd_init()
biburl <- "http://drwater.rcees.ac.cn/cloud/s/ref_ming/download/Ref.bib" biburl <- "http://drwater.rcees.ac.cn/cloud/s/ref_ming/download/Ref.bib"
if (!isRendering) { download.file(biburl, destfile = "Ref.bib") } if (!isRendering) { download.file(biburl, destfile = "Ref.bib") }
``` ```
# Introduction # Introduction
Blabla. [Bla blaBla blaBla blaBla blaBla bla Bla bla.]{.clab options=r1q0101} Blabla. [Bla blaBla blaBla blaBla blaBla bla Bla bla.]{.clab options=r1q0101}
+18
View File
@@ -0,0 +1,18 @@
\relax
\providecommand\zref@newlabel[2]{}
\providecommand\hyper@newdestlabel[2]{}
\providecommand*\HyPL@Entry[1]{}
\providecommand\babel@aux[2]{}
\@nameuse{bbl@beforestart}
\bibstyle{elsarticle-num}
\emailauthor{mingsu@rcees.ac.cn}{Ming Su}
\emailauthor{yangmin@rcees.ac.cn}{Min Yang\corref {cor1}}
\Newlabel{cor1}{1}
\HyPL@Entry{0<</S/D>>}
\babel@aux{english}{}
\Newlabel{1}{a}
\Newlabel{2}{b}
\newlabel{supplementary-material}{{b}{1}{Supplementary Material}{section*.1}{}}
\@writefile{toc}{\contentsline {section}{Supplementary Material}{1}{section*.1}\protected@file@percent }
\bibdata{../BB/Ref.bib,../BB/localRef.bib}
\gdef \@abspage@last{2}
+5 -10
View File
@@ -38,25 +38,20 @@ filters:
commands: [clab] commands: [clab]
--- ---
```{r} ```{r}
#| label: setup #| label: setup
#| include: false #| include: false
#| cache: false #| cache: false
options(tinytex.clean = FALSE)
lang <- "en" lang <- "en"
RM <- "F" # global rendermode, L: load pdata; F: fast load pdf RM <- "F" # global rendermode, L: load pdata; F: fast load pdf # nolint
isRendering <- isTRUE(getOption('knitr.in.progress')) isRendering <- isTRUE(getOption("knitr.in.progress"))
require(lubridate)
require(tidyverse) require(tidyverse)
require(lubridate)
require(patchwork) require(patchwork)
require(drwateR) require(drwateR)
require(dwfun)
require(rmdify)
rmdify::rmd_init() rmdify::rmd_init()
require(langeR) biburl <- "http://drwater.rcees.ac.cn/cloud/s/ref_ming/download/Ref.bib"
require(dateR) if (!isRendering) { download.file(biburl, destfile = "Ref.bib") }
require(uniteR)
``` ```
# Supplementary Material {-} # Supplementary Material {-}
+90 -3
View File
@@ -42,14 +42,28 @@
\setlength{\emergencystretch}{3em} % prevent overfull lines \setlength{\emergencystretch}{3em} % prevent overfull lines
\setcounter{secnumdepth}{5} \setcounter{secnumdepth}{5}
% Make \paragraph and \subparagraph free-standing % Make \paragraph and \subparagraph free-standing
\makeatletter
\ifx\paragraph\undefined\else \ifx\paragraph\undefined\else
\let\oldparagraph\paragraph \let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} \renewcommand{\paragraph}{
\@ifstar
\xxxParagraphStar
\xxxParagraphNoStar
}
\newcommand{\xxxParagraphStar}[1]{\oldparagraph*{#1}\mbox{}}
\newcommand{\xxxParagraphNoStar}[1]{\oldparagraph{#1}\mbox{}}
\fi \fi
\ifx\subparagraph\undefined\else \ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph \let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} \renewcommand{\subparagraph}{
\@ifstar
\xxxSubParagraphStar
\xxxSubParagraphNoStar
}
\newcommand{\xxxSubParagraphStar}[1]{\oldsubparagraph*{#1}\mbox{}}
\newcommand{\xxxSubParagraphNoStar}[1]{\oldsubparagraph{#1}\mbox{}}
\fi \fi
\makeatother
\providecommand{\tightlist}{% \providecommand{\tightlist}{%
@@ -152,6 +166,72 @@
\usepackage{lineno} \usepackage{lineno}
\linenumbers \linenumbers
\makeatletter \makeatletter
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{plain}
\@ifundefined{c@chapter}{\newfloat{sfg}{h}{lost}}{\newfloat{sfg}{h}{lost}[chapter]}
\floatname{sfg}{Fig. S}
\newcommand*\quartosfgref[1]{Fig. \hyperref[#1]{S\ref{#1}}}
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\DeclareCaptionLabelFormat{quartosfgreflabelformat}{#1#2}
\captionsetup[sfg]{labelformat=quartosfgreflabelformat}
\newcommand*\listofsfgs{\listof{sfg}{List of Supplementary Figures}}
\makeatother
\makeatletter
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{plain}
\@ifundefined{c@chapter}{\newfloat{stb}{h}{lost}}{\newfloat{stb}{h}{lost}[chapter]}
\floatname{stb}{Table S}
\newcommand*\quartostbref[1]{Table \hyperref[#1]{S\ref{#1}}}
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\DeclareCaptionLabelFormat{quartostbreflabelformat}{#1#2}
\captionsetup[stb]{labelformat=quartostbreflabelformat}
\newcommand*\listofstbs{\listof{stb}{List of Supplementary Tables}}
\makeatother
\makeatletter
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{plain}
\@ifundefined{c@chapter}{\newfloat{seq}{h}{lost}}{\newfloat{seq}{h}{lost}[chapter]}
\floatname{seq}{Eq S}
\newcommand*\quartoseqref[1]{Eq \hyperref[#1]{S\ref{#1}}}
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\DeclareCaptionLabelFormat{quartoseqreflabelformat}{#1#2}
\captionsetup[seq]{labelformat=quartoseqreflabelformat}
\newcommand*\listofseqs{\listof{seq}{List of Supplementary Equations}}
\makeatother
\makeatletter
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{plain}
\@ifundefined{c@chapter}{\newfloat{rfg}{h}{lost}}{\newfloat{rfg}{h}{lost}[chapter]}
\floatname{rfg}{Fig. R}
\newcommand*\quartorfgref[1]{Fig. \hyperref[#1]{R\ref{#1}}}
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\DeclareCaptionLabelFormat{quartorfgreflabelformat}{#1#2}
\captionsetup[rfg]{labelformat=quartorfgreflabelformat}
\newcommand*\listofrfgs{\listof{rfg}{List of Revision Figures}}
\makeatother
\makeatletter
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{plain}
\@ifundefined{c@chapter}{\newfloat{rtb}{h}{lost}}{\newfloat{rtb}{h}{lost}[chapter]}
\floatname{rtb}{Table R}
\newcommand*\quartortbref[1]{Table \hyperref[#1]{R\ref{#1}}}
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\DeclareCaptionLabelFormat{quartortbreflabelformat}{#1#2}
\captionsetup[rtb]{labelformat=quartortbreflabelformat}
\newcommand*\listofrtbs{\listof{rtb}{List of Revision Tables}}
\makeatother
\makeatletter
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{plain}
\@ifundefined{c@chapter}{\newfloat{req}{h}{lost}}{\newfloat{req}{h}{lost}[chapter]}
\floatname{req}{Eq R}
\newcommand*\quartoreqref[1]{Eq \hyperref[#1]{R\ref{#1}}}
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\DeclareCaptionLabelFormat{quartoreqreflabelformat}{#1#2}
\captionsetup[req]{labelformat=quartoreqreflabelformat}
\newcommand*\listofreqs{\listof{req}{List of Revision Equations}}
\makeatother
\makeatletter
\@ifpackageloaded{caption}{}{\usepackage{caption}} \@ifpackageloaded{caption}{}{\usepackage{caption}}
\AtBeginDocument{% \AtBeginDocument{%
\ifdefined\contentsname \ifdefined\contentsname
@@ -185,6 +265,7 @@
\@ifundefined{c@chapter}{\newfloat{codelisting}{h}{lop}}{\newfloat{codelisting}{h}{lop}[chapter]} \@ifundefined{c@chapter}{\newfloat{codelisting}{h}{lop}}{\newfloat{codelisting}{h}{lop}[chapter]}
\floatname{codelisting}{Listing} \floatname{codelisting}{Listing}
\newcommand*\listoflistings{\listof{codelisting}{List of Listings}} \newcommand*\listoflistings{\listof{codelisting}{List of Listings}}
\captionsetup{labelsep=none}
\makeatother \makeatother
\makeatletter \makeatletter
\makeatother \makeatother
@@ -192,6 +273,7 @@
\@ifpackageloaded{caption}{}{\usepackage{caption}} \@ifpackageloaded{caption}{}{\usepackage{caption}}
\@ifpackageloaded{subcaption}{}{\usepackage{subcaption}} \@ifpackageloaded{subcaption}{}{\usepackage{subcaption}}
\makeatother \makeatother
\ifLuaTeX \ifLuaTeX
\usepackage[bidi=basic]{babel} \usepackage[bidi=basic]{babel}
\else \else
@@ -206,7 +288,8 @@
\fi \fi
\usepackage[]{natbib} \usepackage[]{natbib}
\bibliographystyle{elsarticle-num} \bibliographystyle{elsarticle-num}
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} \usepackage{bookmark}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{same} % disable monospaced font for URLs \urlstyle{same} % disable monospaced font for URLs
\hypersetup{ \hypersetup{
@@ -220,6 +303,7 @@
urlcolor={Blue}, urlcolor={Blue},
pdfcreator={LaTeX via pandoc}} pdfcreator={LaTeX via pandoc}}
\setlength{\parindent}{6pt} \setlength{\parindent}{6pt}
\begin{document} \begin{document}
\begin{frontmatter} \begin{frontmatter}
@@ -251,6 +335,8 @@ Sciences},city={Beijing},postcode={100049}}
\end{frontmatter} \end{frontmatter}
\section*{Supplementary Material}\label{supplementary-material} \section*{Supplementary Material}\label{supplementary-material}
\addcontentsline{toc}{section}{Supplementary Material} \addcontentsline{toc}{section}{Supplementary Material}
@@ -263,4 +349,5 @@ to the main text.
\bibliography{../BB/Ref.bib,../BB/localRef.bib} \bibliography{../BB/Ref.bib,../BB/localRef.bib}
\end{document} \end{document}
+74 -22
View File
@@ -40,23 +40,77 @@ crossref:
tbl-prefix: Table # (default is "Table") tbl-prefix: Table # (default is "Table")
eq-prefix: Eq. eq-prefix: Eq.
ref-hyperlink: true # (default is true) ref-hyperlink: true # (default is true)
custom:
- kind: float
key: sfg
reference-prefix: "Fig. S"
space-before-numbering: false
caption-prefix: "Fig. S"
latex-env: sfg
latex-list-of-file-extension: lost
latex-list-of-description: Supplementary Figure
- kind: float
key: stb
reference-prefix: "Table S"
space-before-numbering: false
caption-prefix: "Table S"
latex-env: stb
latex-list-of-file-extension: lost
latex-list-of-description: Supplementary Table
- kind: float
key: seq
reference-prefix: "Eq S"
space-before-numbering: false
caption-prefix: "Eq S"
latex-env: seq
latex-list-of-file-extension: lost
latex-list-of-description: Supplementary Equation
- kind: float
key: rfg
reference-prefix: "Fig. R"
space-before-numbering: false
caption-prefix: "Fig. R"
latex-env: rfg
latex-list-of-file-extension: lost
latex-list-of-description: Revision Figure
- kind: float
key: rtb
reference-prefix: "Table R"
space-before-numbering: false
caption-prefix: "Table R"
latex-env: rtb
latex-list-of-file-extension: lost
latex-list-of-description: Revision Table
- kind: float
key: req
reference-prefix: "Eq R"
space-before-numbering: false
caption-prefix: "Eq R"
latex-env: req
latex-list-of-file-extension: lost
latex-list-of-description: Revision Equation
prefer-html: true
# execute:
# freeze: auto # re-render only when source changes
# cache: true
project: project:
type: website type: website
output-dir: www/ output-dir: www/
# render: render:
# - index.qmd - index.qmd
# - MS/SM.qmd - MS/SM.qmd
# - MS/MS.qmd - MS/MS.qmd
# - MS/CL.qmd - MS/CL.qmd
# - MS/HL.qmd - MS/HL.qmd
# - MS/RN.qmd # - MS/RN.qmd
# - MS/AC.qmd # - MS/AC.qmd
website: website:
title: "Version: {{< var branch >}}" title: "Version: {{< var branch >}}"
reader-mode: true reader-mode: true
site-url: https://drwater.rcees.ac.cn/{{< var projtype >}}/{{< var reponame >}}/@{{< var branch >}} site-url: https://drwater.rcees.ac.cn/{{< var pubtype >}}/{{< var projtype >}}/{{< var reponame >}}/@{{< var branch >}}
repo-url: https://drwater.rcees.ac.cn/git/{{< var projtype >}}/{{< var reponame >}}/src/branch/{{< var branch >}} repo-url: https://drwater.rcees.ac.cn/git/{{< var projtype >}}/{{< var reponame >}}
repo-actions: [edit, source, issue] repo-actions: [edit, source, issue]
page-navigation: true page-navigation: true
page-footer: "Copyright 2023, [Ming Su](https://drwater.rcees.ac.cn)" page-footer: "Copyright 2023, [Ming Su](https://drwater.rcees.ac.cn)"
@@ -73,28 +127,26 @@ website:
file: MS/SM.qmd file: MS/SM.qmd
- text: "Revision Notes" - text: "Revision Notes"
file: MS/RN.qmd file: MS/RN.qmd
- text: "Trackchanges"
file: TC/index.qmd
- text: "Slides" - text: "Slides"
file: SD/index.qmd file: SD/index.qmd
- text: "Other" - text: "Other"
menu: menu:
- text: "Highlights" - text: "Highlights"
file: MS/HL.qmd file: MS/HL.qmd
- text: "Cover Letter" - text: "Cover Letter"
file: MS/CL.qmd file: MS/CL.qmd
- text: "Author Credits" # - text: "Author Credits"
file: MS/AC.qmd # file: MS/AC.qmd
- text: "Report" - text: "Trackchanges"
file: RP/index.qmd file: TC/index.qmd
- text: "Acomplishment" - text: "Accomplishment"
file: AC/index.qmd file: AC/index.qmd
- icon: git - icon: git
menu: menu:
- text: Edit - text: Edit
url: https://drwater.rcees.ac.cn/git/{{< var projtype >}}/{{< var reponame >}}/_edit/ url: https://drwater.rcees.ac.cn/git/{{< var projtype >}}/{{< var reponame >}}/src/branch/{{< var branch >}}
- text: Issue - text: Issue
url: https://drwater.rcees.ac.cn/git/{{< var projtype >}}/{{< var reponame >}}/issues url: https://drwater.rcees.ac.cn/git/manuscript/{{< var reponame >}}/issues
comments: comments:
hypothesis: hypothesis:
theme: clean theme: clean
+8
View File
@@ -1,5 +1,13 @@
--- ---
subtitle: "Abstract" subtitle: "Abstract"
author: "" author: ""
engine: knitr
--- ---
```{bash}
#| echo: false
#| output: asis
grep "^abstract: " ./MS/MS.qmd | sed -e 's/^abstract: \"*\(.*\).$/\1/g'
```
File diff suppressed because one or more lines are too long
@@ -81,6 +81,7 @@ code span.st {
code span.cf { code span.cf {
color: #003B4F; color: #003B4F;
font-weight: bold;
font-style: inherit; font-style: inherit;
} }
@@ -189,6 +190,7 @@ code span.dv {
code span.kw { code span.kw {
color: #003B4F; color: #003B4F;
font-weight: bold;
font-style: inherit; font-style: inherit;
} }
+25 -6
View File
@@ -9,7 +9,7 @@ const layoutMarginEls = () => {
// Find any conflicting margin elements and add margins to the // Find any conflicting margin elements and add margins to the
// top to prevent overlap // top to prevent overlap
const marginChildren = window.document.querySelectorAll( const marginChildren = window.document.querySelectorAll(
".column-margin.column-container > * " ".column-margin.column-container > *, .margin-caption, .aside"
); );
let lastBottom = 0; let lastBottom = 0;
@@ -19,7 +19,9 @@ const layoutMarginEls = () => {
marginChild.style.marginTop = null; marginChild.style.marginTop = null;
const top = marginChild.getBoundingClientRect().top + window.scrollY; const top = marginChild.getBoundingClientRect().top + window.scrollY;
if (top < lastBottom) { if (top < lastBottom) {
const margin = lastBottom - top; const marginChildStyle = window.getComputedStyle(marginChild);
const marginBottom = parseFloat(marginChildStyle["marginBottom"]);
const margin = lastBottom - top + marginBottom;
marginChild.style.marginTop = `${margin}px`; marginChild.style.marginTop = `${margin}px`;
} }
const styles = window.getComputedStyle(marginChild); const styles = window.getComputedStyle(marginChild);
@@ -33,7 +35,15 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
// Recompute the position of margin elements anytime the body size changes // Recompute the position of margin elements anytime the body size changes
if (window.ResizeObserver) { if (window.ResizeObserver) {
const resizeObserver = new window.ResizeObserver( const resizeObserver = new window.ResizeObserver(
throttle(layoutMarginEls, 50) throttle(() => {
layoutMarginEls();
if (
window.document.body.getBoundingClientRect().width < 990 &&
isReaderMode()
) {
quartoToggleReader();
}
}, 50)
); );
resizeObserver.observe(window.document.body); resizeObserver.observe(window.document.body);
} }
@@ -84,7 +94,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
if (link.href.indexOf("#") !== -1) { if (link.href.indexOf("#") !== -1) {
const anchor = link.href.split("#")[1]; const anchor = link.href.split("#")[1];
const heading = window.document.querySelector( const heading = window.document.querySelector(
`[data-anchor-id=${anchor}]` `[data-anchor-id="${anchor}"]`
); );
if (heading) { if (heading) {
// Add the class // Add the class
@@ -124,8 +134,10 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
window.innerHeight + window.pageYOffset >= window.innerHeight + window.pageYOffset >=
window.document.body.offsetHeight window.document.body.offsetHeight
) { ) {
// This is the no-scroll case where last section should be the active one
sectionIndex = 0; sectionIndex = 0;
} else { } else {
// This finds the last section visible on screen that should be made active
sectionIndex = [...sections].reverse().findIndex((section) => { sectionIndex = [...sections].reverse().findIndex((section) => {
if (section) { if (section) {
return window.pageYOffset >= section.offsetTop - sectionMargin; return window.pageYOffset >= section.offsetTop - sectionMargin;
@@ -307,6 +319,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
for (const child of el.children) { for (const child of el.children) {
child.style.opacity = 0; child.style.opacity = 0;
child.style.overflow = "hidden"; child.style.overflow = "hidden";
child.style.pointerEvents = "none";
} }
nexttick(() => { nexttick(() => {
@@ -348,6 +361,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
const clone = child.cloneNode(true); const clone = child.cloneNode(true);
clone.style.opacity = 1; clone.style.opacity = 1;
clone.style.pointerEvents = null;
clone.style.display = null; clone.style.display = null;
toggleContents.append(clone); toggleContents.append(clone);
} }
@@ -422,6 +436,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
for (const child of el.children) { for (const child of el.children) {
child.style.opacity = 1; child.style.opacity = 1;
child.style.overflow = null; child.style.overflow = null;
child.style.pointerEvents = null;
} }
const placeholderEl = window.document.getElementById( const placeholderEl = window.document.getElementById(
@@ -729,6 +744,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
// Process the collapse state if this is an UL // Process the collapse state if this is an UL
if (el.tagName === "UL") { if (el.tagName === "UL") {
if (tocOpenDepth === -1 && depth > 1) { if (tocOpenDepth === -1 && depth > 1) {
// toc-expand: false
el.classList.add("collapse"); el.classList.add("collapse");
} else if ( } else if (
depth <= tocOpenDepth || depth <= tocOpenDepth ||
@@ -747,10 +763,9 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
}; };
// walk the TOC and expand / collapse any items that should be shown // walk the TOC and expand / collapse any items that should be shown
if (tocEl) { if (tocEl) {
walk(tocEl, 0);
updateActiveLink(); updateActiveLink();
walk(tocEl, 0);
} }
// Throttle the scroll event and walk peridiocally // Throttle the scroll event and walk peridiocally
@@ -769,6 +784,10 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
window.addEventListener( window.addEventListener(
"resize", "resize",
throttle(() => { throttle(() => {
if (tocEl) {
updateActiveLink();
walk(tocEl, 0);
}
if (!isReaderMode()) { if (!isReaderMode()) {
hideOverlappedSidebars(); hideOverlappedSidebars();
} }
+49 -1
View File
@@ -5,9 +5,45 @@ const headroomChanged = new CustomEvent("quarto-hrChanged", {
composed: false, composed: false,
}); });
const announceDismiss = () => {
const annEl = window.document.getElementById("quarto-announcement");
if (annEl) {
annEl.remove();
const annId = annEl.getAttribute("data-announcement-id");
window.localStorage.setItem(`quarto-announce-${annId}`, "true");
}
};
const announceRegister = () => {
const annEl = window.document.getElementById("quarto-announcement");
if (annEl) {
const annId = annEl.getAttribute("data-announcement-id");
const isDismissed =
window.localStorage.getItem(`quarto-announce-${annId}`) || false;
if (isDismissed) {
announceDismiss();
return;
} else {
annEl.classList.remove("hidden");
}
const actionEl = annEl.querySelector(".quarto-announcement-action");
if (actionEl) {
actionEl.addEventListener("click", function (e) {
e.preventDefault();
// Hide the bar immediately
announceDismiss();
});
}
}
};
window.document.addEventListener("DOMContentLoaded", function () { window.document.addEventListener("DOMContentLoaded", function () {
let init = false; let init = false;
announceRegister();
// Manage the back to top button, if one is present. // Manage the back to top button, if one is present.
let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;
const scrollDownBuffer = 5; const scrollDownBuffer = 5;
@@ -85,6 +121,17 @@ window.document.addEventListener("DOMContentLoaded", function () {
} }
} }
function dashboardOffset() {
const dashboardNavEl = window.document.getElementById(
"quarto-dashboard-header"
);
if (dashboardNavEl !== null) {
return dashboardNavEl.clientHeight;
} else {
return 0;
}
}
function updateDocumentOffsetWithoutAnimation() { function updateDocumentOffsetWithoutAnimation() {
updateDocumentOffset(false); updateDocumentOffset(false);
} }
@@ -92,7 +139,7 @@ window.document.addEventListener("DOMContentLoaded", function () {
function updateDocumentOffset(animated) { function updateDocumentOffset(animated) {
// set body offset // set body offset
const topOffset = headerOffset(); const topOffset = headerOffset();
const bodyOffset = topOffset + footerOffset(); const bodyOffset = topOffset + footerOffset() + dashboardOffset();
const bodyEl = window.document.body; const bodyEl = window.document.body;
bodyEl.setAttribute("data-bs-offset", topOffset); bodyEl.setAttribute("data-bs-offset", topOffset);
bodyEl.style.paddingTop = topOffset + "px"; bodyEl.style.paddingTop = topOffset + "px";
@@ -226,6 +273,7 @@ window.document.addEventListener("DOMContentLoaded", function () {
const links = window.document.querySelectorAll("a"); const links = window.document.querySelectorAll("a");
for (let i = 0; i < links.length; i++) { for (let i = 0; i < links.length; i++) {
if (links[i].href) { if (links[i].href) {
links[i].dataset.originalHref = links[i].href;
links[i].href = links[i].href.replace(/\/index\.html/, "/"); links[i].href = links[i].href.replace(/\/index\.html/, "/");
} }
} }
+63 -14
View File
@@ -98,6 +98,7 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
classNames: { classNames: {
form: "d-flex", form: "d-flex",
}, },
placeholder: language["search-text-placeholder"],
translations: { translations: {
clearButtonTitle: language["search-clear-button-title"], clearButtonTitle: language["search-clear-button-title"],
detachedCancelButtonText: language["search-detached-cancel-button-title"], detachedCancelButtonText: language["search-detached-cancel-button-title"],
@@ -392,7 +393,12 @@ window.document.addEventListener("DOMContentLoaded", function (_event) {
return focusedEl.tagName.toLowerCase() === tag; return focusedEl.tagName.toLowerCase() === tag;
}); });
if (kbds && kbds.includes(key) && !isFormElFocused) { if (
kbds &&
kbds.includes(key) &&
!isFormElFocused &&
!document.activeElement.isContentEditable
) {
event.preventDefault(); event.preventDefault();
window.quartoOpenSearch(); window.quartoOpenSearch();
} }
@@ -669,6 +675,18 @@ function showCopyLink(query, options) {
// create the index // create the index
var fuseIndex = undefined; var fuseIndex = undefined;
var shownWarning = false; var shownWarning = false;
// fuse index options
const kFuseIndexOptions = {
keys: [
{ name: "title", weight: 20 },
{ name: "section", weight: 20 },
{ name: "text", weight: 10 },
],
ignoreLocation: true,
threshold: 0.1,
};
async function readSearchData() { async function readSearchData() {
// Initialize the search index on demand // Initialize the search index on demand
if (fuseIndex === undefined) { if (fuseIndex === undefined) {
@@ -679,17 +697,7 @@ async function readSearchData() {
shownWarning = true; shownWarning = true;
return; return;
} }
// create fuse index const fuse = new window.Fuse([], kFuseIndexOptions);
const options = {
keys: [
{ name: "title", weight: 20 },
{ name: "section", weight: 20 },
{ name: "text", weight: 10 },
],
ignoreLocation: true,
threshold: 0.1,
};
const fuse = new window.Fuse([], options);
// fetch the main search.json // fetch the main search.json
const response = await fetch(offsetURL("search.json")); const response = await fetch(offsetURL("search.json"));
@@ -1220,8 +1228,34 @@ function algoliaSearch(query, limit, algoliaOptions) {
}); });
} }
function fuseSearch(query, fuse, fuseOptions) { let subSearchTerm = undefined;
return fuse.search(query, fuseOptions).map((result) => { let subSearchFuse = undefined;
const kFuseMaxWait = 125;
async function fuseSearch(query, fuse, fuseOptions) {
let index = fuse;
// Fuse.js using the Bitap algorithm for text matching which runs in
// O(nm) time (no matter the structure of the text). In our case this
// means that long search terms mixed with large index gets very slow
//
// This injects a subIndex that will be used once the terms get long enough
// Usually making this subindex is cheap since there will typically be
// a subset of results matching the existing query
if (subSearchFuse !== undefined && query.startsWith(subSearchTerm)) {
// Use the existing subSearchFuse
index = subSearchFuse;
} else if (subSearchFuse !== undefined) {
// The term changed, discard the existing fuse
subSearchFuse = undefined;
subSearchTerm = undefined;
}
// Search using the active fuse
const then = performance.now();
const resultsRaw = await index.search(query, fuseOptions);
const now = performance.now();
const results = resultsRaw.map((result) => {
const addParam = (url, name, value) => { const addParam = (url, name, value) => {
const anchorParts = url.split("#"); const anchorParts = url.split("#");
const baseUrl = anchorParts[0]; const baseUrl = anchorParts[0];
@@ -1238,4 +1272,19 @@ function fuseSearch(query, fuse, fuseOptions) {
crumbs: result.item.crumbs, crumbs: result.item.crumbs,
}; };
}); });
// If we don't have a subfuse and the query is long enough, go ahead
// and create a subfuse to use for subsequent queries
if (
now - then > kFuseMaxWait &&
subSearchFuse === undefined &&
resultsRaw.length < fuseOptions.limit
) {
subSearchTerm = query;
subSearchFuse = new window.Fuse([], kFuseIndexOptions);
resultsRaw.forEach((rr) => {
subSearchFuse.add(rr.item);
});
}
return results;
} }