diff --git a/authoraffil/MS.pdf b/authoraffil/MS.pdf new file mode 100644 index 0000000..8896f1d Binary files /dev/null and b/authoraffil/MS.pdf differ diff --git a/authoraffil/MS.qmd b/authoraffil/MS.qmd new file mode 100644 index 0000000..3feaaeb --- /dev/null +++ b/authoraffil/MS.qmd @@ -0,0 +1,115 @@ +--- +title: "MANUSCRIPT TITLE" +subtitle: "Supplementary Information" +submitjournal: "JOURNAL" +submitid: +lang: en +date: "" +# bibliography: [BB/Ref.bib, BB/localRef.bib] +affilstyle: alphabeta # number +author: + - name: Xxxxx Yyyy + affiliations: + - ref: kleac + # email: 13586740928@163.com + attributes: + corresponding: false + equal-contributor: true + role: + - data-curation: lead + - methodology: lead + - formalanalysis: lead + - writingoriginal: equal + - writingediting: eqaul + - visualisation: supporting + - name: Ming Su + email: mingsu@rcees.ac.cn + url: https://drwater.net/team/ming-su/ + role: + - conceptualization: lead + - methodology: supporting + - formalanalysis: lead + - writingoriginal: equal + - writingediting: equal + - visualisation: lead + - projectadmin: lead + - supervision + affiliations: + - ref: kleac + - ref: ucas + attributes: + corresponding: true + equal-contributor: true + - name: Min Yang + email: yangmin@rcees.ac.cn + affiliations: + - ref: kleac + - ref: ucas + attributes: + corresponding: true +affiliations: + - id: kleac + name: State Key Laboratory of Environmental Aquatic Chemistry, Research Center for Eco-Environmental Sciences, Chinese Academy of Sciences + # address: No. 18 Shuangqing Road + city: Beijing + postal-code: 100085 + country: China + url: https://www.skleac.ac.cn + - id: ucas + name: University of Chinese Academy of Sciences + # address: No. 19A Yuquan Road + city: Beijing + postal-code: 100049 + country: China + url: https://www.ucas.ac.cn +prefer-html: true +format: + # elsevier-html: + # toc: true + # css: _extensions/drwater/dwms/inst/css/style.css + # docx: + # reference-doc: _extensions/drwater/dwms/inst/word/MS.docx + pdf: + fontsize: 12pt + keep-md: false + keep-tex: true +filters: + # - latex-environment + - authoraffil +--- + + +```{r} +#| include: false +#| cache: false + +lang <- "en" +isRendering <- isTRUE(getOption("knitr.in.progress")) +require(tidyverse) +require(drwateR) +require(patchwork) +rmdify::rmd_init() +dwfun::init() +``` + + +{{< pagebreak >}} + +# Abstract {-} + + +{{< pagebreak >}} + + +{{< pagebreak >}} + + + +# References {-} + +::: {#refs} +::: + +{{< pagebreak >}} + + diff --git a/authoraffil/MS.tex b/authoraffil/MS.tex new file mode 100644 index 0000000..1a547bd --- /dev/null +++ b/authoraffil/MS.tex @@ -0,0 +1,280 @@ +% Options for packages loaded elsewhere +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode}{hyperref} +\PassOptionsToPackage{hyphens}{url} +\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} +% +\documentclass[ + english, + 12pt, + letterpaper, + DIV=11, + numbers=noendperiod]{scrartcl} +\usepackage{xcolor} +\usepackage{amsmath,amssymb} +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +\usepackage{iftex} +\ifPDFTeX + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex + \usepackage{unicode-math} % this also loads fontspec + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +\usepackage{lmodern} +\ifPDFTeX\else + % xetex/luatex font selection +\fi +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +\makeatletter +\@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} +}{% if KOMA class + \KOMAoptions{parskip=half}} +\makeatother +% Make \paragraph and \subparagraph free-standing +\makeatletter +\ifx\paragraph\undefined\else + \let\oldparagraph\paragraph + \renewcommand{\paragraph}{ + \@ifstar + \xxxParagraphStar + \xxxParagraphNoStar + } + \newcommand{\xxxParagraphStar}[1]{\oldparagraph*{#1}\mbox{}} + \newcommand{\xxxParagraphNoStar}[1]{\oldparagraph{#1}\mbox{}} +\fi +\ifx\subparagraph\undefined\else + \let\oldsubparagraph\subparagraph + \renewcommand{\subparagraph}{ + \@ifstar + \xxxSubParagraphStar + \xxxSubParagraphNoStar + } + \newcommand{\xxxSubParagraphStar}[1]{\oldsubparagraph*{#1}\mbox{}} + \newcommand{\xxxSubParagraphNoStar}[1]{\oldsubparagraph{#1}\mbox{}} +\fi +\makeatother + + +\usepackage{longtable,booktabs,array} +\usepackage{calc} % for calculating minipage widths +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +\usepackage{graphicx} +\makeatletter +\newsavebox\pandoc@box +\newcommand*\pandocbounded[1]{% scales image to fit in text height/width + \sbox\pandoc@box{#1}% + \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}% + \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}% + \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both + \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}% + \else\usebox{\pandoc@box}% + \fi% +} +% Set default figure placement to htbp +\def\fps@figure{htbp} +\makeatother + + + +\ifLuaTeX +\usepackage[bidi=basic]{babel} +\else +\usepackage[bidi=default]{babel} +\fi +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +\ifLuaTeX + \usepackage[english]{selnolig} % disable illegal ligatures +\fi + + +\setlength{\emergencystretch}{3em} % prevent overfull lines + +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + + + + + + +\KOMAoption{captions}{tableheading} +\makeatletter +\@ifpackageloaded{float}{}{\usepackage{float}} +\floatstyle{plain} +\@ifundefined{c@chapter}{\newfloat{sfg}{h}{lost}}{\newfloat{sfg}{h}{lost}[chapter]} +\floatname{sfg}{Supplementary Fig.} +\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}{Supplementary Table} +\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}{Supplementary Eq.} +\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}} +\AtBeginDocument{% +\ifdefined\contentsname + \renewcommand*\contentsname{Table of contents} +\else + \newcommand\contentsname{Table of contents} +\fi +\ifdefined\listfigurename + \renewcommand*\listfigurename{List of Figures} +\else + \newcommand\listfigurename{List of Figures} +\fi +\ifdefined\listtablename + \renewcommand*\listtablename{List of Tables} +\else + \newcommand\listtablename{List of Tables} +\fi +\ifdefined\figurename + \renewcommand*\figurename{Fig.} +\else + \newcommand\figurename{Fig.} +\fi +\ifdefined\tablename + \renewcommand*\tablename{Table} +\else + \newcommand\tablename{Table} +\fi +} +\@ifpackageloaded{float}{}{\usepackage{float}} +\floatstyle{ruled} +\@ifundefined{c@chapter}{\newfloat{codelisting}{h}{lop}}{\newfloat{codelisting}{h}{lop}[chapter]} +\floatname{codelisting}{Listing} +\newcommand*\listoflistings{\listof{codelisting}{List of Listings}} +\captionsetup{labelsep=colon} +\makeatother +\makeatletter +\makeatother +\makeatletter +\@ifpackageloaded{caption}{}{\usepackage{caption}} +\@ifpackageloaded{subcaption}{}{\usepackage{subcaption}} +\makeatother +\usepackage{bookmark} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\urlstyle{same} +\hypersetup{ + pdftitle={MANUSCRIPT TITLE}, + pdfauthor={, , and }, + pdflang={en}, + colorlinks=true, + linkcolor={blue}, + filecolor={Maroon}, + citecolor={Blue}, + urlcolor={Blue}, + pdfcreator={LaTeX via pandoc}} + + +\title{MANUSCRIPT TITLE} +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large #1 \par}}{}{} +} +\makeatother +\subtitle{Supplementary Information} +\author{Xxxxx Yyyy\textsuperscript{a,\#} \and Ming +Su\textsuperscript{a,b,\#,*} \and Min Yang\textsuperscript{a,b,*}} +\date{} +\begin{document} +\maketitle + + +\textsuperscript{\#} These authors contributed equally to this work. + +\textsuperscript{a} State Key Laboratory of Environmental Aquatic +Chemistry, Research Center for Eco-Environmental Sciences, Chinese +Academy of Sciences, Beijing 100085, China.\\ +\textsuperscript{b} University of Chinese Academy of Sciences, Beijing +100049, China. + +\textsuperscript{*} Corresponding to: +\href{mailto:mingsu@rcees.ac.cn}{Ming Su (mingsu@rcees.ac.cn)}, +\href{mailto:yangmin@rcees.ac.cn}{Min Yang (yangmin@rcees.ac.cn)} + +\newpage{} + +\section*{Abstract}\label{abstract} +\addcontentsline{toc}{section}{Abstract} + +\newpage{} + +\newpage{} + +\section*{References}\label{references} +\addcontentsline{toc}{section}{References} + +\phantomsection\label{refs} + +\newpage{} + + + + +\end{document} diff --git a/authoraffil/_extensions/drwater/authoraffil/_extension.yaml b/authoraffil/_extensions/drwater/authoraffil/_extension.yaml new file mode 100644 index 0000000..e2823ac --- /dev/null +++ b/authoraffil/_extensions/drwater/authoraffil/_extension.yaml @@ -0,0 +1,16 @@ +title: Authors and affiliation formatting for quarto +authors: + - name: Ming Su + email: mingsu@rcees.ac.cn + orcid: 0000-0001-9821-1268 + url: https://drwater.net/team/ming-su/ + - name: Lorenz A. Kapsner + orcid: 0000-0003-1866-860X + - name: Albert Krewinkel + orcid: 0000-0002-9455-0796 + - name: Robert Winkler +version: 0.3.2 +quarto-required: ">=1.3.0" +contributes: + filters: + - authoraffil.lua diff --git a/authoraffil/_extensions/drwater/authoraffil/authoraffil.lua b/authoraffil/_extensions/drwater/authoraffil/authoraffil.lua new file mode 100644 index 0000000..43b2580 --- /dev/null +++ b/authoraffil/_extensions/drwater/authoraffil/authoraffil.lua @@ -0,0 +1,75 @@ +--[[ +authors-block – affiliations block extension for quarto +Copyright (c) 2023 Lorenz A. Kapsner +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +]] + +local List = require("pandoc.List") +local from_utils = require("utils") +local normalize_affiliations = from_utils.normalize_affiliations +local normalize_authors = from_utils.normalize_authors +local from_authors = require("from_author_info_blocks") +local default_marks = from_authors.default_marks +local create_equal_contributors_block = from_authors.create_equal_contributors_block +local create_affiliations_blocks = from_authors.create_affiliations_blocks +local create_correspondence_blocks = from_authors.create_correspondence_blocks +local is_corresponding_author = from_authors.is_corresponding_author +local author_inline_generator = from_authors.author_inline_generator +local create_authors_inlines = from_authors.create_authors_inlines + +function Pandoc(doc) + local meta = doc.meta + local body = List:new({}) + local mark = function(mark_name) + return default_marks[mark_name] + end + + -- Process CRediT roles + if meta.authors then + local credit_roles = List:new({}) + for i, author in ipairs(meta.authors) do + if author.role then + local roles = List:new({}) + for role, level in pairs(author.role) do + roles:insert(pandoc.Str(role .. ": " .. stringify(level))) + end + if #roles > 0 then + local author_name = stringify(author.name) + credit_roles:insert(pandoc.Para({ + pandoc.Str(author_name .. ": "), + pandoc.Str(table.concat(roles:map(stringify), ", ")), + })) + end + end + end + if #credit_roles > 0 then + body:insert(pandoc.Header(2, pandoc.Str("Author Contributions"))) + body:extend(credit_roles) + end + end + + body:extend(create_equal_contributors_block(meta.authors, mark) or {}) + body:extend(create_affiliations_blocks(meta.affiliations, meta) or {}) + body:extend(create_correspondence_blocks(meta.authors, mark) or {}) + body:extend(doc.blocks) + + for _i, author in ipairs(meta.authors) do + author.test = is_corresponding_author(author) + end + + meta.affiliations = normalize_affiliations(meta.affiliations or {}) + meta.author = meta.authors:map(normalize_authors(meta.affiliations)) + meta.author = pandoc.MetaInlines(create_authors_inlines(meta.author, mark, meta)) + meta.affiliations = nil + + return pandoc.Pandoc(body, meta) +end diff --git a/authoraffil/_extensions/drwater/authoraffil/from_author_info_blocks.lua b/authoraffil/_extensions/drwater/authoraffil/from_author_info_blocks.lua new file mode 100644 index 0000000..e1216f1 --- /dev/null +++ b/authoraffil/_extensions/drwater/authoraffil/from_author_info_blocks.lua @@ -0,0 +1,297 @@ +--[[ +affiliation-blocks – generate title components +Copyright © 2017–2021 Albert Krewinkel +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +]] + +local from_utils = require("utils") +local has_key = from_utils.has_key +local List = require("pandoc.List") +local utils = require("pandoc.utils") +local stringify = utils.stringify + +local M = {} + +local default_marks = { + corresponding_author = FORMAT == "latex" and { pandoc.RawInline("latex", "*") } or { pandoc.Str("*") }, + equal_contributor = FORMAT == "latex" and { pandoc.RawInline("latex", "\\#") } or { pandoc.Str("#") }, +} + +local function get_orcid_mark(orcid_value) + if not orcid_value then + return {} + end + local orcid_str + if type(orcid_value) == "string" then + orcid_str = orcid_value + elseif type(orcid_value) == "table" then + if orcid_value.text then + orcid_str = orcid_value.text + elseif orcid_value[1] and orcid_value[1].text then + orcid_str = orcid_value[1].text + else + return {} + end + else + return {} + end + orcid_str = orcid_str:gsub("[%-%s]", "") + if FORMAT == "latex" then + return { pandoc.RawInline("latex", "\\orcidlink{" .. orcid_str .. "}") } + elseif FORMAT:match("docx") then + local orcid_url = "https://orcid.org/" .. orcid_str + return { + pandoc.Str(" "), + pandoc.Link("ID", orcid_url), + } + else + local orcid_url = "https://orcid.org/" .. orcid_str + return { pandoc.Link(pandoc.Str(""), orcid_url, "", { class = "orcid" }) } + end +end + +M.default_marks = default_marks + +local function is_equal_contributor(author) + if has_key(author, "attributes") then + return author.attributes["equal-contributor"] + end + return nil +end + +local function create_equal_contributors_block(authors, mark) + local has_equal_contribs = List:new(authors):find_if(is_equal_contributor) + if not has_equal_contribs then + return nil + end + local contributors = { + pandoc.Superscript(mark("equal_contributor")), + pandoc.Space(), + pandoc.Str("These authors contributed equally to this work."), + } + return List:new({ pandoc.Para(contributors) }) +end +M.create_equal_contributors_block = create_equal_contributors_block + +local function intercalate(lists, elem) + local result = List:new({}) + for i = 1, (#lists - 1) do + result:extend(lists[i]) + result:extend(elem) + end + if #lists > 0 then + result:extend(lists[#lists]) + end + return result +end + +local function is_corresponding_author(author) + if has_key(author, "attributes") then + if author.attributes["corresponding"] then + return author.email + end + end + return nil +end +M.is_corresponding_author = is_corresponding_author + +local function create_correspondence_blocks(authors, mark) + local corresponding_authors = List:new({}) + for _, author in ipairs(authors) do + if is_corresponding_author(author) then + local mailto = "mailto:" .. stringify(author.email) + local author_with_mail = List:new( + author.name.literal + .. List:new({ pandoc.Space(), pandoc.Str("(") }) + .. author.email + .. List:new({ pandoc.Str(")") }) + ) + local link = pandoc.Link(author_with_mail, mailto) + table.insert(corresponding_authors, { link }) + end + end + if #corresponding_authors == 0 then + return nil + end + local correspondence = List:new({ + pandoc.Superscript(mark("corresponding_author")), + pandoc.Space(), + pandoc.Str("Corresponding to:"), + pandoc.Space(), + }) + local sep = List:new({ pandoc.Str(","), pandoc.Space() }) + return { pandoc.Para(correspondence .. intercalate(corresponding_authors, sep)) } +end + +M.create_correspondence_blocks = create_correspondence_blocks + +local function author_inline_generator(get_mark, meta) + return function(author) + local author_marks = List:new({}) + if has_key(author, "orcid") then + author_marks[#author_marks + 1] = get_orcid_mark(author.orcid) + end + local affilstyle = meta and meta.affilstyle and stringify(meta.affilstyle) or "alphabeta" + for _, idx in ipairs(author.affiliations) do + local idx_num = tonumber(stringify(idx)) -- Convert MetaString/MetaInlines to number + if not idx_num then + error("Invalid affiliation index: " .. tostring(idx)) + end + local idx_str + if affilstyle == "number" then + idx_str = tostring(idx_num) + else + if idx_num > 26 then + error("Too many affiliations: only up to 26 (a-z) are supported") + end + idx_str = string.char(96 + idx_num) + end + author_marks[#author_marks + 1] = { pandoc.Str(idx_str) } + end + if has_key(author, "attributes") then + if author.attributes["equal-contributor"] then + author_marks[#author_marks + 1] = get_mark("equal_contributor") + end + end + if is_corresponding_author(author) then + author_marks[#author_marks + 1] = get_mark("corresponding_author") + end + if FORMAT:match("latex") then + author.name.literal[#author.name.literal + 1] = pandoc.Superscript(intercalate(author_marks, { pandoc.Str(",") })) + return author + else + local res = List.clone(author.name.literal) + res[#res + 1] = pandoc.Superscript(intercalate(author_marks, { pandoc.Str(",") })) + return res + end + end +end +M.author_inline_generator = author_inline_generator + +local function create_authors_inlines(authors, mark, meta) + local inlines_generator = author_inline_generator(mark, meta) + local inlines = List:new(authors):map(inlines_generator) + local and_str = List:new({ pandoc.Space(), pandoc.Str("and"), pandoc.Space() }) + local last_author = inlines[#inlines] + inlines[#inlines] = nil + local result = intercalate(inlines, { pandoc.Str(","), pandoc.Space() }) + if #authors > 1 then + if #authors == 2 then + result:extend(and_str) + else + result:extend(List:new({ pandoc.Str(",") }) .. and_str) + end + end + result:extend(last_author) + return result +end +M.create_authors_inlines = create_authors_inlines + +local function create_affiliations_blocks_alphabeta(affiliations, meta) + local affilstyle = meta and meta.affilstyle and stringify(meta.affilstyle) or "alphabeta" + local affil_lines = List:new(affiliations):map(function(affil, i) + if affilstyle == "number" then + num_inlines = pandoc.List:new({ + pandoc.Superscript(pandoc.Str(tostring(i))), + pandoc.Space(), + }) + else + num_inlines = pandoc.List:new({ + pandoc.Superscript(pandoc.Str(string.char(96 + i))), + pandoc.Space(), + }) + end + local name_inlines = type(affil.name) == "table" and affil.name or { pandoc.Str(tostring(affil.name)) } + local city_inlines = type(affil.city) == "table" and affil.city or { pandoc.Str(tostring(affil.city)) } + local postcode_inlines = type(affil["postal-code"]) == "table" and affil["postal-code"] + or { pandoc.Str(tostring(affil["postal-code"])) } + local country_inlines = type(affil.country) == "table" and affil.country + or { pandoc.Str(tostring(affil.country or affil["postal-code"])) } + return num_inlines + :extend(name_inlines) + :extend({ pandoc.Str(", ") }) + :extend(city_inlines) + :extend({ pandoc.Space() }) + :extend(postcode_inlines) + :extend({ pandoc.Str(", ") }) + :extend(country_inlines) + :extend({ pandoc.Str(".") }) + end) + local combined_inlines = pandoc.List:new() + for i, line in ipairs(affil_lines) do + combined_inlines:extend(line) + if i < #affil_lines then + combined_inlines:extend({ pandoc.LineBreak() }) + end + end + return { pandoc.Para(combined_inlines) } +end + +local function create_affiliations_blocks_number(affiliations, meta) + local affilstyle = meta and meta.affilstyle and stringify(meta.affilstyle) or "alphabeta" + local affil_lines = List:new(affiliations):map(function(affil, i) + local num_inlines = pandoc.List:new({ + pandoc.Superscript(pandoc.Str(tostring(i))), + pandoc.Space(), + }) + local name_inlines = type(affil.name) == "table" and affil.name or { pandoc.Str(tostring(affil.name)) } + local city_inlines = type(affil.city) == "table" and affil.city or { pandoc.Str(tostring(affil.city)) } + local postcode_inlines = type(affil["postal-code"]) == "table" and affil["postal-code"] + or { pandoc.Str(tostring(affil["postal-code"])) } + local country_inlines = type(affil.country) == "table" and affil.country + or { pandoc.Str(tostring(affil.country or affil["postal-code"])) } + return num_inlines + :extend(name_inlines) + :extend({ pandoc.Str(", ") }) + :extend(city_inlines) + :extend({ pandoc.Space() }) + :extend(postcode_inlines) + :extend({ pandoc.Str(", ") }) + :extend(country_inlines) + :extend({ pandoc.Str(".") }) + end) + local combined_inlines = pandoc.List:new() + for i, line in ipairs(affil_lines) do + combined_inlines:extend(line) + if i < #affil_lines then + combined_inlines:extend({ pandoc.LineBreak() }) + end + end + return { pandoc.Para(combined_inlines) } +end + +M.create_affiliations_blocks = create_affiliations_blocks_alphabeta + +function Meta(meta) + local affilstyle = meta and meta.affilstyle and stringify(meta.affilstyle) or "alphabeta" + M.create_affiliations_blocks = affilstyle == "number" and create_affiliations_blocks_number + or create_affiliations_blocks_alphabeta + if meta.authors then + meta.author = create_authors_inlines(meta.authors, M.default_marks, meta) + end + if meta.affiliations then + meta.institute = M.create_affiliations_blocks(meta.affiliations, meta) + end + if meta.authors then + local equal_contributors = create_equal_contributors_block(meta.authors, M.default_marks) + if equal_contributors then + meta["equal-contributors"] = equal_contributors + end + local correspondence = create_correspondence_blocks(meta.authors, M.default_marks) + if correspondence then + meta.correspondence = correspondence + end + end + return meta +end + +return M diff --git a/authoraffil/_extensions/drwater/authoraffil/from_scholarly_metadata.lua b/authoraffil/_extensions/drwater/authoraffil/from_scholarly_metadata.lua new file mode 100644 index 0000000..a9dcf5b --- /dev/null +++ b/authoraffil/_extensions/drwater/authoraffil/from_scholarly_metadata.lua @@ -0,0 +1,51 @@ +--[[ +ScholarlyMeta – normalize author/affiliation meta variables +Copyright (c) 2017-2021 Albert Krewinkel, Robert Winkler +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +]] + +local List = require("pandoc.List") +local utils = require("pandoc.utils") +local stringify = utils.stringify + +local M = {} + +local function has_id(id) + return function(x) + return x.id == id + end +end + +local function resolve_institutes(institute, known_institutes) + local unresolved_institutes + if institute == nil then + unresolved_institutes = {} + elseif type(institute) == "string" or type(institute) == "number" then + unresolved_institutes = { institute } + else + unresolved_institutes = institute + end + local result = List:new({}) + for i, inst in ipairs(unresolved_institutes) do + local intermed_val = known_institutes:find_if(has_id(stringify(inst))) + if intermed_val then + result[i] = pandoc.MetaString(tostring(intermed_val.index)) + else + result[i] = pandoc.MetaString(tostring(inst)) + end + end + return result +end +M.resolve_institutes = resolve_institutes + +return M + diff --git a/authoraffil/_extensions/drwater/authoraffil/utils.lua b/authoraffil/_extensions/drwater/authoraffil/utils.lua new file mode 100644 index 0000000..2f5df89 --- /dev/null +++ b/authoraffil/_extensions/drwater/authoraffil/utils.lua @@ -0,0 +1,49 @@ +--[[ +authors-block – affiliations block extension for quarto +Copyright (c) 2023 Lorenz A. Kapsner +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +]] + +local List = require("pandoc.List") +local utils = require("pandoc.utils") +local stringify = utils.stringify +local from_scholarly = require("from_scholarly_metadata") +local resolve_institutes = from_scholarly.resolve_institutes + +local M = {} + +local function normalize_affiliations(affiliations) + local affiliations_norm = List:new(affiliations or {}):map(function(affil, i) + affil.index = pandoc.MetaString(tostring(i)) + affil.id = pandoc.MetaString(stringify(affil.id or affil.name)) + return affil + end) + return affiliations_norm +end +M.normalize_affiliations = normalize_affiliations + +local function has_key(set, key) + return set[key] ~= nil +end +M.has_key = has_key + +local function normalize_authors(affiliations) + return function(auth) + auth.id = pandoc.MetaString(stringify(auth.name)) + auth.affiliations = resolve_institutes(auth.affiliations or {}, affiliations) + return auth + end +end +M.normalize_authors = normalize_authors + +return M + diff --git a/dwbk/.gitignore b/dwbk/.gitignore new file mode 100644 index 0000000..eec3ab1 --- /dev/null +++ b/dwbk/.gitignore @@ -0,0 +1,12 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata +site_libs/ +/.quarto/ +site_libs/ +BB/Ref.bib +_variables.yml +_freeze/ +www/ +.source_state diff --git a/dwbk/RP.pdf b/dwbk/RP.pdf new file mode 100644 index 0000000..1d3a10a Binary files /dev/null and b/dwbk/RP.pdf differ diff --git a/dwbk/RP.qmd b/dwbk/RP.qmd new file mode 100644 index 0000000..858cd05 --- /dev/null +++ b/dwbk/RP.qmd @@ -0,0 +1,56 @@ +--- +title: "报告名称" +author: "中国科学院生态环境研究中心" +lang: zh +date: today +csl: _extensions/drwater/inst/tex/china-national-standard-gb-t-7714-2015-numeric.csl +format: + # html: + # theme: cosmo + # css: _extensions/drwater/inst/css/style.css + # docx: + # toc: true + # reference-doc: _extensions/drwater/inst/word/repcn.docx + # epub: default + dwbk-pdf: default +--- + +::: {.content-visible when-format="html"} +# Color tip {.unnumbered} + +- [Something should be deleted]{.del} +- [Something bad]{.bad} +- [Something good]{.good} +- [Something todo]{.todo} +- [Something should be added]{.add} +- [I am a comment]{.com} +::: + + +```{r} +#| label: setup +#| include: false +#| cache: false +lang <- "cn" +RM <- "F" # global rendermode, L: load pdata; F: fast load pdf +isRendering <- !isTRUE(getOption('knitr.in.progress')) +require(lubridate) +require(tidyverse) +require(patchwork) +require(drwateR) +rmdify::rmd_init() +``` + +# 摘要 + +# 项目背景与国内外现状介绍 + +# 主要进展1 + +# 主要进展2 + +# 结论与下一步计划 + + +# 参考文献{-} + diff --git a/dwbk/_extensions/drwater/dwbk/_extension.yml b/dwbk/_extensions/drwater/dwbk/_extension.yml new file mode 100644 index 0000000..9cd1a57 --- /dev/null +++ b/dwbk/_extensions/drwater/dwbk/_extension.yml @@ -0,0 +1,47 @@ +title: dwms-pdf-quarto +author: Ming Su +version: 0.0.1 +quarto-required: ">=1.3.0" +contributes: + formats: + common: + knitr: + opts_chunk: + echo: false + message: false + warning: false + pdf: + documentclass: ctexbook # 使用ctexbook文档类专门处理中文 + classoption: + - fntef + - UTF8 + # - scheme=plain # 标题样式方案 + - zihao=-4 # 正文字号小四 + papersize: a4 + geometry: [left=2.5cm, right=2.5cm, top=2.54cm, bottom=2.54cm] + linestretch: 1.25 + toc: true + toc-depth: 3 + number-sections: true + lang: zh-CN + fig-pos: "!t" + colorlinks: true + urlcolor: blue + sansfont: "Gill Sans" + sansfontoptions: + - Color=39729E + mainfont: "Source Sans 3" #| Verdana (fontsize: 11pt) # Source Sans 3 | Times New Roman| Helvetica | PT Sans + monofont: "JetBrains Mono" + mathfont: "Cambria Math" + # 确保中文标点符号正确处理 + CJKoptions: | + AutoFakeBold=true + block-headings: false + include-in-header: header.tex + template-partials: + - "partials/title.tex" + - "partials/before-body.tex" + - "partials/after-body.tex" +filters: + - latex-environment +lightbox: auto diff --git a/dwbk/_extensions/drwater/dwbk/header.tex b/dwbk/_extensions/drwater/dwbk/header.tex new file mode 100644 index 0000000..00852ec --- /dev/null +++ b/dwbk/_extensions/drwater/dwbk/header.tex @@ -0,0 +1,106 @@ +% ----------------------- +% CUSTOM PREAMBLE STUFF +% ----------------------- +\usepackage{xeCJK} +\usepackage{enumitem} +\usepackage{fontspec} +\usepackage{float} +\usepackage[normalem]{ulem} +\usepackage{hyperref} +\usepackage{nameref} %needed by zref-xr +\usepackage{xr-hyper} +\usepackage[normalem]{ulem} +\usepackage{setspace} +\usepackage{lineno} +\usepackage{caption} +\captionsetup{singlelinecheck=off} +\usepackage[UTF8, scheme=plain]{ctex} +\usepackage{orcidlink} +\usepackage{eso-pic} + +\usepackage{ctexcap} % 中文标题处理 +\usepackage[perpage]{footmisc} % 脚注每页重置 +\setlength{\parindent}{2em} % 中文段落缩进2字符 + +\setCJKmainfont[AutoFakeBold=true]{SimHei} +\setCJKsansfont[AutoFakeBold]{Microsoft YaHei} +% \setCJKmonofont[AutoFakeBold]{KaiTi} + + + +% ----------------- +% Title block stuff +% ----------------- + +% Title +\makeatletter +\renewcommand{\title}[1]{\gdef\@title{\Huge\textbf{#1}}} % Adjust \Huge or other font commands +\makeatother + + +% ------------------ +% Section headings +% ------------------ +\usepackage{titlesec} +\titleformat*{\section}{\Large\sffamily\bfseries\raggedright} +\titleformat*{\subsection}{\large\sffamily\bfseries\raggedright} +\titleformat*{\subsubsection}{\normalsize\sffamily\bfseries\raggedright} +\titleformat*{\paragraph}{\small\sffamily\bfseries\raggedright} + +%\titlespacing{}{}{}{} +% Starred version removes indentation in following paragraph +\titlespacing*{\section}{0em}{2em}{0.1em} +\titlespacing*{\subsection}{0em}{1.25em}{0.1em} +\titlespacing*{\subsubsection}{0em}{0.75em}{0em} + +% ------------------ +% Headers/Footers +% ------------------ +\usepackage{fancyhdr} +\pagestyle{fancy} + +\fancyhf{} +\fancyhead[L,C,R]{} +\fancyfoot[L,C]{} +\fancyfoot[R]{\thepage} + \fancyfootoffset{3.5cm} +\renewcommand{\headrulewidth}{1pt} +\fancypagestyle{plain}{% + \renewcommand{\headrulewidth}{0pt}% + \fancyhf{}% + \fancyfoot[R]{\thepage}% +} +\renewcommand\footnoterule{\rule{\linewidth}{0.1pt}\vspace{5pt}} + +% ------------------ +% Captions +% ------------------ +\usepackage[labelfont=bf,labelsep=period]{caption} +\captionsetup[figure]{font=footnotesize,justification=raggedright,singlelinecheck=false,format=hang} + + +% --------------------------- +% END CUSTOM PREAMBLE STUFF +% --------------------------- +% +% +%% Let's define some colours +\definecolor{light}{HTML}{ECF1EC} +\definecolor{highlight}{HTML}{800080} +\definecolor{dark}{HTML}{330033} + +%% Let's add the border on the left hand side +\AddToShipoutPicture{% + \AtPageLowerLeft{% + \put(0,0){% % 从页面左下角(0,0)开始 + \color{light}\rule{2.4cm}{\LenToUnit\paperheight}% % 左侧3cm宽的边框 + }% + }% + % logo + \AtPageLowerLeft{% start the bar at the bottom left of the page + \put(0.5cm,27.2cm){% % 从左侧边缘向右移动0.75cm,垂直位置27.2cm + \color{light}\includegraphics[width=1.5cm]{_extensions/drwater/dwbk/logo.png} + }% + }% +} + diff --git a/dwbk/_extensions/drwater/dwbk/logo.png b/dwbk/_extensions/drwater/dwbk/logo.png new file mode 100755 index 0000000..f8cf1d5 Binary files /dev/null and b/dwbk/_extensions/drwater/dwbk/logo.png differ diff --git a/dwbk/_extensions/drwater/dwbk/partials/after-body.tex b/dwbk/_extensions/drwater/dwbk/partials/after-body.tex new file mode 100644 index 0000000..e69de29 diff --git a/dwbk/_extensions/drwater/dwbk/partials/before-body.tex b/dwbk/_extensions/drwater/dwbk/partials/before-body.tex new file mode 100644 index 0000000..9a0f30e --- /dev/null +++ b/dwbk/_extensions/drwater/dwbk/partials/before-body.tex @@ -0,0 +1,33 @@ +$-- Implements the frontmatter, title page, and abstract. + +% for some reason this does not work in header +\renewcommand{\abstractname}{Abstract.} + +% add the short title to the fancy header +$if(shorttitle)$ +\fancyhead[R]{$shorttitle$} +$endif$ +$if(shortauthors)$ +\fancyhead[L]{$shortauthors$} +$endif$ + +$if(has-frontmatter)$ +\frontmatter +$endif$ +$if(title)$ +\maketitle +%\noindent \rule{\linewidth}{.5pt} +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$if(keywords)$ +\begin{keywords} +\def\sep{;\ } +$for(keywords/allbutlast)$$keywords$\sep $endfor$ +$for(keywords/last)$$keywords$$endfor$ +\end{keywords} +$endif$ +$endif$ +%\noindent \rule{\linewidth}{.5pt} +$endif$ \ No newline at end of file diff --git a/dwbk/_extensions/drwater/dwbk/partials/title.tex b/dwbk/_extensions/drwater/dwbk/partials/title.tex new file mode 100644 index 0000000..b86298e --- /dev/null +++ b/dwbk/_extensions/drwater/dwbk/partials/title.tex @@ -0,0 +1,15 @@ +$if(title)$ +\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} +$endif$ +$if(subtitle)$ +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large\sffamily\bfseries #1 \par}}{}{} +} +\makeatother +\subtitle{$subtitle$} +$endif$ +$-- This supports Quarto's authors normalization +\author{$for(authors)$\footnotesize $it.name.literal$$sep$ \and $endfor$} +\date{$date$} diff --git a/dwbk/header.tex b/dwbk/header.tex index 47eb13c..00852ec 100644 --- a/dwbk/header.tex +++ b/dwbk/header.tex @@ -99,7 +99,7 @@ % logo \AtPageLowerLeft{% start the bar at the bottom left of the page \put(0.5cm,27.2cm){% % 从左侧边缘向右移动0.75cm,垂直位置27.2cm - \color{light}\includegraphics[width=1.5cm]{_extensions/drwater/dwen/logo.png} + \color{light}\includegraphics[width=1.5cm]{_extensions/drwater/dwbk/logo.png} }% }% } diff --git a/dwbk/logo.png b/dwbk/logo.png new file mode 100755 index 0000000..f8cf1d5 Binary files /dev/null and b/dwbk/logo.png differ diff --git a/dwen/.gitignore b/dwen/.gitignore new file mode 100644 index 0000000..eec3ab1 --- /dev/null +++ b/dwen/.gitignore @@ -0,0 +1,12 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata +site_libs/ +/.quarto/ +site_libs/ +BB/Ref.bib +_variables.yml +_freeze/ +www/ +.source_state diff --git a/dwen/_extensions/drwater/dwen/_extension.yml b/dwen/_extensions/drwater/dwen/_extension.yml new file mode 100644 index 0000000..fe4ed86 --- /dev/null +++ b/dwen/_extensions/drwater/dwen/_extension.yml @@ -0,0 +1,17 @@ +title: PrettyPDF +author: Nicola Rennie +version: 0.0.5 +contributes: + project: + project: + type: book + formats: + pdf: + include-in-header: + - "header.tex" + include-before-body: + - "partials/before-body.tex" + toc: false + code-block-bg: light + linkcolor: highlight + urlcolor: highlight diff --git a/dwen/_extensions/drwater/dwen/header.tex b/dwen/_extensions/drwater/dwen/header.tex new file mode 100644 index 0000000..13f92ba --- /dev/null +++ b/dwen/_extensions/drwater/dwen/header.tex @@ -0,0 +1,59 @@ +% load packages +\usepackage{geometry} +\usepackage{xcolor} +\usepackage{eso-pic} +\usepackage{fancyhdr} +\usepackage{sectsty} +\usepackage{fontspec} +\usepackage{titlesec} + +%% Set page size with a wider right margin +\geometry{a4paper, total={170mm,257mm}, left=20mm, top=20mm, bottom=20mm, right=50mm} + +%% Let's define some colours +\definecolor{light}{HTML}{ECF1EC} +\definecolor{highlight}{HTML}{800080} +\definecolor{dark}{HTML}{330033} + +%% Let's add the border on the right hand side +\AddToShipoutPicture{% + \AtPageLowerLeft{% + \put(\LenToUnit{\dimexpr\paperwidth-3cm},0){% + \color{light}\rule{3cm}{\LenToUnit\paperheight}% + }% + }% + % logo + \AtPageLowerLeft{% start the bar at the bottom right of the page + \put(\LenToUnit{\dimexpr\paperwidth-2.25cm},27.2cm){% move it to the top right + \color{light}\includegraphics[width=1.5cm]{_extensions/drwater/dwen/logo.png} + }% + }% +} + +%% Style the page number +\fancypagestyle{mystyle}{ + \fancyhf{} + \renewcommand\headrulewidth{0pt} + \fancyfoot[R]{\thepage} + \fancyfootoffset{3.5cm} +} +\setlength{\footskip}{20pt} + +%% style the chapter/section fonts +\chapterfont{\color{dark}\fontsize{20}{16.8}\selectfont} +\sectionfont{\color{dark}\fontsize{20}{16.8}\selectfont} +\subsectionfont{\color{dark}\fontsize{14}{16.8}\selectfont} +\titleformat{\subsection} + {\sffamily\Large\bfseries}{\thesection}{1em}{}[{\titlerule[0.8pt]}] + +% left align title +\makeatletter +\renewcommand{\maketitle}{\bgroup\setlength{\parindent}{0pt} +\begin{flushleft} + {\sffamily\huge\textbf{\MakeUppercase{\@title}}} \vspace{0.3cm} \newline + {\Large {\@subtitle}} \newline + \@author +\end{flushleft}\egroup +} +\makeatother + diff --git a/dwen/_extensions/drwater/dwen/logo.png b/dwen/_extensions/drwater/dwen/logo.png new file mode 100755 index 0000000..f8cf1d5 Binary files /dev/null and b/dwen/_extensions/drwater/dwen/logo.png differ diff --git a/dwen/_extensions/drwater/dwen/partials/before-body.tex b/dwen/_extensions/drwater/dwen/partials/before-body.tex new file mode 100644 index 0000000..1a6c5f1 --- /dev/null +++ b/dwen/_extensions/drwater/dwen/partials/before-body.tex @@ -0,0 +1 @@ +\pagestyle{mystyle} \ No newline at end of file diff --git a/dwen/template.pdf b/dwen/template.pdf new file mode 100644 index 0000000..ac8f70e Binary files /dev/null and b/dwen/template.pdf differ diff --git a/dwen/template.qmd b/dwen/template.qmd new file mode 100644 index 0000000..2708664 --- /dev/null +++ b/dwen/template.qmd @@ -0,0 +1,25 @@ +--- +title: "Pretty PDFs with Quarto" +format: dwen-pdf +--- + +## Quarto + +Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see . + +### Running Code + +When you click the **Render** button a document will be generated that includes both content and the output of embedded code. You can embed code like this: + +```{r} +1 + 1 +``` + +You can add options to executable code like this + +```{r} +#| echo: false +2 * 2 +``` + +The `echo: false` option disables the printing of code (only output is displayed). diff --git a/dwms/.gitignore b/dwms/.gitignore new file mode 100644 index 0000000..eec3ab1 --- /dev/null +++ b/dwms/.gitignore @@ -0,0 +1,12 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata +site_libs/ +/.quarto/ +site_libs/ +BB/Ref.bib +_variables.yml +_freeze/ +www/ +.source_state diff --git a/dwms/BB/localRef.bib b/dwms/BB/localRef.bib new file mode 100644 index 0000000..e69de29 diff --git a/dwms/MS.pdf b/dwms/MS.pdf new file mode 100644 index 0000000..8b4daf6 Binary files /dev/null and b/dwms/MS.pdf differ diff --git a/dwms/MS.qmd b/dwms/MS.qmd new file mode 100644 index 0000000..f53a9a9 --- /dev/null +++ b/dwms/MS.qmd @@ -0,0 +1,180 @@ +--- +msname: MS +smname: SM +title: "MANUSCRIPT TITLE" +subtitle: "Supplementary Information" +submitjournal: "JOURNAL" +submitid: +lang: en +date: "" +# bibliography: [BB/Ref.bib, BB/localRef.bib] +affilstyle: alphabeta # number +author: + - name: Xxxxx Yyyy + affiliations: + - ref: kleac + # email: 13586740928@163.com + attributes: + corresponding: false + equal-contributor: true + role: + - data-curation: lead + - methodology: lead + - formalanalysis: lead + - writingoriginal: equal + - writingediting: eqaul + - visualisation: supporting + - name: Ming Su + email: mingsu@rcees.ac.cn + orcid: 0000-0001-9821-1268 + url: https://drwater.net/team/ming-su/ + role: + - conceptualization: lead + - methodology: supporting + - formalanalysis: lead + - writingoriginal: equal + - writingediting: equal + - visualisation: lead + - projectadmin: lead + - supervision + affiliations: + - ref: kleac + - ref: ucas + attributes: + corresponding: true + equal-contributor: true + - name: Min Yang + email: yangmin@rcees.ac.cn + affiliations: + - ref: kleac + - ref: ucas + attributes: + corresponding: true +affiliations: + - id: kleac + name: State Key Laboratory of Environmental Aquatic Chemistry, Research Center for Eco-Environmental Sciences, Chinese Academy of Sciences + # address: No. 18 Shuangqing Road + city: Beijing + postal-code: 100085 + country: China + url: https://www.skleac.ac.cn + - id: ucas + name: University of Chinese Academy of Sciences + # address: No. 19A Yuquan Road + city: Beijing + postal-code: 100049 + country: China + url: https://www.ucas.ac.cn +crossref: + fig-title: Fig. # (default is "Figure") + tbl-title: Table # (default is "Table") + eq-title: Eq. # (default is "Equation") + title-delim: ":" # (default is ":") + fig-prefix: Fig. # (default is "Figure") + tbl-prefix: Table # (default is "Table") + eq-prefix: Eq. + ref-hyperlink: true # (default is true) + custom: + - kind: float + key: sfg + reference-prefix: "Supplementary Fig." + space-before-numbering: true + caption-prefix: "Supplementary Fig." + latex-env: sfg + latex-list-of-file-extension: lost + latex-list-of-description: Supplementary Figure + - kind: float + key: stb + reference-prefix: "Supplementary Table" + space-before-numbering: true + caption-prefix: "Supplementary Table" + latex-env: stb + latex-list-of-file-extension: lost + latex-list-of-description: Supplementary Table + - kind: float + key: seq + reference-prefix: "Supplementary Eq." + space-before-numbering: true + caption-prefix: "Supplementary Eq." + 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 +format: + # elsevier-html: + # toc: true + # css: _extensions/drwater/dwms/inst/css/style.css + # docx: + # reference-doc: _extensions/drwater/dwms/inst/word/MS.docx + dwms-pdf: + fontsize: 12pt + keep-md: false + keep-tex: true + header-includes: + - \usepackage{endfloat} + - \doublespacing + - \linenumbers +# filters: +# - latex-environment +# - authoraffil +--- + + +```{r} +#| include: false +#| cache: false + +lang <- "en" +isRendering <- isTRUE(getOption("knitr.in.progress")) +require(tidyverse) +require(drwateR) +require(patchwork) +rmdify::rmd_init() +dwfun::init() +``` + + +{{< pagebreak >}} + +# Abstract {-} + + +{{< pagebreak >}} + + +{{< pagebreak >}} + + + +# References {-} + +::: {#refs} +::: + +{{< pagebreak >}} + + diff --git a/dwms/MS.tex b/dwms/MS.tex new file mode 100644 index 0000000..985ecea --- /dev/null +++ b/dwms/MS.tex @@ -0,0 +1,405 @@ +% Options for packages loaded elsewhere +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode}{hyperref} +\PassOptionsToPackage{hyphens}{url} +\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} +\PassOptionsToPackage{space}{xeCJK} +% +\documentclass[ + english, + 12pt, + letterpaper, +]{article} +\usepackage{xcolor} +\usepackage[margin=1in]{geometry} +\usepackage{amsmath,amssymb} +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +\usepackage{iftex} +\ifPDFTeX + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex + \usepackage{unicode-math} % this also loads fontspec + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +\usepackage{lmodern} +\ifPDFTeX\else + % xetex/luatex font selection + \setmainfont[]{Source Sans 3} + \setsansfont[Color=39729E]{Gill Sans} + \setmonofont[]{JetBrains Mono} + \setmathfont[]{Cambria Math} + \ifXeTeX + \usepackage{xeCJK} + \setCJKmainfont[]{SimHei} + \fi + \ifLuaTeX + \usepackage[]{luatexja-fontspec} + \setmainjfont[]{SimHei} + \fi +\fi +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +\makeatletter +\@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} +}{% if KOMA class + \KOMAoptions{parskip=half}} +\makeatother + + +\usepackage{longtable,booktabs,array} +\usepackage{calc} % for calculating minipage widths +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +\usepackage{graphicx} +\makeatletter +\newsavebox\pandoc@box +\newcommand*\pandocbounded[1]{% scales image to fit in text height/width + \sbox\pandoc@box{#1}% + \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}% + \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}% + \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both + \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}% + \else\usebox{\pandoc@box}% + \fi% +} +% Set default figure placement to htbp +\def\fps@figure{htbp} +\makeatother + + + +\ifLuaTeX +\usepackage[bidi=basic]{babel} +\else +\usepackage[bidi=default]{babel} +\fi +\ifPDFTeX +\else +\babelfont{rm}[]{Source Sans 3} +\fi +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +\ifLuaTeX + \usepackage[english]{selnolig} % disable illegal ligatures +\fi + + +\setlength{\emergencystretch}{3em} % prevent overfull lines + +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + + + + + + +% ----------------------- +% CUSTOM PREAMBLE STUFF +% ----------------------- +\usepackage{enumitem} +\usepackage{fontspec} +\usepackage{float} +\usepackage[normalem]{ulem} +\usepackage{hyperref} +\usepackage{nameref} %needed by zref-xr +\usepackage{zref-xr,zref-hyperref,zref-user} +\usepackage{xr-hyper} +\usepackage[normalem]{ulem} +\usepackage{setspace} +\usepackage{lineno} +\usepackage{caption} +\captionsetup{singlelinecheck=off} +\usepackage[UTF8, scheme=plain]{ctex} +\usepackage{orcidlink} + +% \setkomafont{author}{\normalsize} + +% for revision +\usepackage{adjustbox} +% \usepackage{xcolor} +\usepackage{mdframed} +\newmdenv[topline=false, + leftline=true, + bottomline=false, + rightline=false, + linewidth=3pt, + %backgroundcolor=lightgray, + linecolor=gray!30, + backgroundcolor=gray!5, + skipabove=\topsep, + skipbelow=\topsep, + leftmargin=0pt, + rightmargin=0pt, + innertopmargin=0pt, + innerbottommargin=0pt + ]{refquote} +\newmdenv[topline=false, + leftline=true, + bottomline=false, + rightline=false, + linewidth=3pt, + %backgroundcolor=lightgray, + backgroundcolor=red!3!white, + linecolor=red!30!white, + skipabove=\topsep, + skipbelow=\topsep, + leftmargin=0pt, + rightmargin=0pt, + innertopmargin=10pt, + innerbottommargin=10pt + ]{question} +% setup hyperlink for page and line number +\def\msname{MS} +\def\smname{SM} +\setenumerate{labelsep=*, leftmargin=1.0pc} +%\zexternaldocument*{ManuscriptNew\veraa} +\zexternaldocument*{\msname} +\zexternaldocument*{\smname} +\newcommand{\hlabel}[1]{\label{#1}\hypertarget{#1}{ + \linelabel{line:#1}}} +%\externaldocument[si-]{\smname\veraa}[\smname\veraa.pdf] +\makeatletter +\newcommand{\clab}[2][]{ + \protected@write\@auxout{\let\clab\@secondoftwo}{ + \string\newlabel{r:#1}{{#2}{}}}% + \hlabel{#1}#2\hlabel{#1end}} +\makeatother +\newcommand{\zhypera}[1]{\href[pdfnewwindow]{\msname.pdf\##1}{\\[1ex]\textbf{Page \zpageref{#1}, Line +\zref{line:#1}--\zref{line:#1end}:}\\}} +\newcommand{\cref}[1]{\begin{refquote}\zhypera{#1}{\zref{r:#1}}\\[-0.5ex]\end{refquote}} +% \newenvironment{ra}[1][\unskip]{\par \noindent \\[-1ex] \textbf{Response/Action:}\par\bf}{\ \\} +\renewenvironment{quote}{\begin{question}}{\end{question}} +% \renewenvironment{verbatim}{\begin{ra}}{\end{ra}} + + + + +% ----------------- +% Title block stuff +% ----------------- + +% Title +\makeatletter +\renewcommand{\title}[1]{\gdef\@title{\large\textbf{#1}}} % Adjust \Huge or other font commands +\makeatother + + +% ------------------ +% Section headings +% ------------------ +\usepackage{titlesec} +\titleformat*{\section}{\Large\sffamily\bfseries\raggedright} +\titleformat*{\subsection}{\large\sffamily\bfseries\raggedright} +\titleformat*{\subsubsection}{\normalsize\sffamily\bfseries\raggedright} +\titleformat*{\paragraph}{\small\sffamily\bfseries\raggedright} + +%\titlespacing{}{}{}{} +% Starred version removes indentation in following paragraph +\titlespacing*{\section}{0em}{2em}{0.1em} +\titlespacing*{\subsection}{0em}{1.25em}{0.1em} +\titlespacing*{\subsubsection}{0em}{0.75em}{0em} + +% ------------------ +% Headers/Footers +% ------------------ +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \fancyhf{} +% \fancyhead[L,C,R]{} +% \fancyfoot[L,C]{} +% \fancyfoot[R]{\thepage} +% \renewcommand{\headrulewidth}{1pt} +% \fancypagestyle{plain}{% +% \renewcommand{\headrulewidth}{0pt}% +% \fancyhf{}% +% \fancyfoot[R]{\thepage}% +% } +% \renewcommand\footnoterule{\rule{\linewidth}{0.1pt}\vspace{5pt}} + +% ------------------ +% Captions +% ------------------ +\usepackage[labelfont=bf,labelsep=period]{caption} +\captionsetup[figure]{font=footnotesize,justification=raggedright,singlelinecheck=false,format=hang} + + +% --------------------------- +% END CUSTOM PREAMBLE STUFF +% --------------------------- +\usepackage{endfloat} +\doublespacing +\linenumbers +\makeatletter +\@ifpackageloaded{float}{}{\usepackage{float}} +\floatstyle{plain} +\@ifundefined{c@chapter}{\newfloat{sfg}{h}{lost}}{\newfloat{sfg}{h}{lost}[chapter]} +\floatname{sfg}{Supplementary Fig.} +\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}{Supplementary Table} +\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}{Supplementary Eq.} +\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}} +\AtBeginDocument{% +\ifdefined\contentsname + \renewcommand*\contentsname{Table of contents} +\else + \newcommand\contentsname{Table of contents} +\fi +\ifdefined\listfigurename + \renewcommand*\listfigurename{List of Figures} +\else + \newcommand\listfigurename{List of Figures} +\fi +\ifdefined\listtablename + \renewcommand*\listtablename{List of Tables} +\else + \newcommand\listtablename{List of Tables} +\fi +\ifdefined\figurename + \renewcommand*\figurename{Fig.} +\else + \newcommand\figurename{Fig.} +\fi +\ifdefined\tablename + \renewcommand*\tablename{Table} +\else + \newcommand\tablename{Table} +\fi +} +\@ifpackageloaded{float}{}{\usepackage{float}} +\floatstyle{ruled} +\@ifundefined{c@chapter}{\newfloat{codelisting}{h}{lop}}{\newfloat{codelisting}{h}{lop}[chapter]} +\floatname{codelisting}{Listing} +\newcommand*\listoflistings{\listof{codelisting}{List of Listings}} +\captionsetup{labelsep=colon} +\makeatother +\makeatletter +\makeatother +\makeatletter +\@ifpackageloaded{caption}{}{\usepackage{caption}} +\@ifpackageloaded{subcaption}{}{\usepackage{subcaption}} +\makeatother +\usepackage{bookmark} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\urlstyle{same} +\hypersetup{ + pdftitle={MANUSCRIPT TITLE}, + pdfauthor={Xxxxx Yyyy; Ming Su; Min Yang}, + pdflang={en}, + colorlinks=true, + linkcolor={blue}, + filecolor={Maroon}, + citecolor={Blue}, + urlcolor={blue}, + pdfcreator={LaTeX via pandoc}} + + +\title{MANUSCRIPT TITLE} +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large\sffamily\bfseries #1 \par}}{}{} +} +\makeatother +\subtitle{Supplementary Information} +\author{\footnotesize Xxxxx Yyyy \and \footnotesize Ming +Su \and \footnotesize Min Yang} +\date{2025-07-27} +\begin{document} + +% for some reason this does not work in header +\renewcommand{\abstractname}{Abstract.} + +% add the short title to the fancy header + +\maketitle +%\noindent \rule{\linewidth}{.5pt} +%\noindent \rule{\linewidth}{.5pt} + + +\newpage{} + +\section*{Abstract}\label{abstract} +\addcontentsline{toc}{section}{Abstract} + +\newpage{} + +\newpage{} + +\section*{References}\label{references} +\addcontentsline{toc}{section}{References} + +\phantomsection\label{refs} + +\newpage{} + + + + +\end{document} diff --git a/dwms/SM.aux b/dwms/SM.aux new file mode 100644 index 0000000..1b6530f --- /dev/null +++ b/dwms/SM.aux @@ -0,0 +1,11 @@ +\relax +\providecommand\zref@newlabel[2]{} +\providecommand \babel@aux [2]{\global \let \babel@toc \@gobbletwo } +\@nameuse{bbl@beforestart} +\providecommand\hyper@newdestlabel[2]{} +\providecommand*\HyPL@Entry[1]{} +\HyPL@Entry{0<>} +\babel@aux{english}{} +\@writefile{lost}{\contentsline {sfg}{\numberline {1}{\ignorespaces Caption of demo figure}}{3}{sfg.1}\protected@file@percent } +\newlabel{sfg-demo}{{1}{3}{Caption of demo figure}{sfg.1}{}} +\gdef \@abspage@last{3} diff --git a/dwms/SM.pdf b/dwms/SM.pdf new file mode 100644 index 0000000..bdbac9f Binary files /dev/null and b/dwms/SM.pdf differ diff --git a/dwms/SM.qmd b/dwms/SM.qmd new file mode 100644 index 0000000..e944f57 --- /dev/null +++ b/dwms/SM.qmd @@ -0,0 +1,197 @@ +--- +msname: MS +smname: SM +title: "MANUSCRIPT TITLE" +subtitle: "Supplementary Information" +submitjournal: "JOURNAL" +submitid: +lang: en +date: "" +# bibliography: [BB/Ref.bib, BB/localRef.bib] +affilstyle: alphabeta # number +author: + - name: Xxxxx Yyyy + affiliations: + - ref: kleac + # email: 13586740928@163.com + attributes: + corresponding: false + equal-contributor: true + role: + - data-curation: lead + - methodology: lead + - formalanalysis: lead + - writingoriginal: equal + - writingediting: eqaul + - visualisation: supporting + - name: Ming Su + email: mingsu@rcees.ac.cn + orcid: 0000-0001-9821-1268 + url: https://drwater.net/team/ming-su/ + role: + - conceptualization: lead + - methodology: supporting + - formalanalysis: lead + - writingoriginal: equal + - writingediting: equal + - visualisation: lead + - projectadmin: lead + - supervision + affiliations: + - ref: kleac + - ref: ucas + attributes: + corresponding: true + equal-contributor: true + - name: Min Yang + email: yangmin@rcees.ac.cn + affiliations: + - ref: kleac + - ref: ucas + attributes: + corresponding: true +affiliations: + - id: kleac + name: State Key Laboratory of Environmental Aquatic Chemistry, Research Center for Eco-Environmental Sciences, Chinese Academy of Sciences + # address: No. 18 Shuangqing Road + city: Beijing + postal-code: 100085 + country: China + url: https://www.skleac.ac.cn + - id: ucas + name: University of Chinese Academy of Sciences + # address: No. 19A Yuquan Road + city: Beijing + postal-code: 100049 + country: China + url: https://www.ucas.ac.cn +crossref: + fig-title: Fig. # (default is "Figure") + tbl-title: Table # (default is "Table") + eq-title: Eq. # (default is "Equation") + title-delim: ":" # (default is ":") + fig-prefix: Fig. # (default is "Figure") + tbl-prefix: Table # (default is "Table") + eq-prefix: Eq. + ref-hyperlink: true # (default is true) + custom: + - kind: float + key: sfg + reference-prefix: "Supplementary Fig." + space-before-numbering: true + caption-prefix: "Supplementary Fig." + latex-env: sfg + latex-list-of-file-extension: lost + latex-list-of-description: Supplementary Figure + - kind: float + key: stb + reference-prefix: "Supplementary Table" + space-before-numbering: true + caption-prefix: "Supplementary Table" + latex-env: stb + latex-list-of-file-extension: lost + latex-list-of-description: Supplementary Table + - kind: float + key: seq + reference-prefix: "Supplementary Eq." + space-before-numbering: true + caption-prefix: "Supplementary Eq." + 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 +format: + dwms-pdf: + latex-clean: false # to keep aux + keep-md: false + keep-tex: true + header-includes: + - \doublespacing + - \linenumbers + - \let\oldsection\section + - \renewcommand{\section}{\clearpage\oldsection} + - \let\oldsubsection\subsection + - \renewcommand{\subsection}{\clearpage\oldsubsection} +# filters: +# - authoraffil +--- + +\thispagestyle{empty} + +```{r} +#| include: false +#| cache: false +options(tinytex.clean = FALSE) +lang <- "en" +RM <- "F" # global rendermode, L: load pdata; F: fast load pdf +isRendering <- isTRUE(getOption('knitr.in.progress')) +require(tidyverse) +require(patchwork) +require(drwateR) +rmdify::rmd_init() +``` + +Figures and/or tables are provided below as the supplementary evidences to the main text. + +{{< pagebreak >}} + + + +```{=latex} +\clearpage +{ +\hypersetup{linkcolor=black} +\setcounter{tocdepth}{3} +\tableofcontents +} +``` + + +{{< pagebreak >}} + + +::: {#sfg-demo} + +```{r} +#| out-width: "40%" + +if (!isRendering) { + data.frame(x = 1:10, y = 1:10) |> + ggplot(aes(x, y)) + + geom_point() + + theme_sci(3, 2.0) + + ggsavep("../figures/demo.pdf", loadit = FALSE) +} + +ggsavep("../figures/demo", loadit = TRUE) +``` + +Caption of demo figure + +::: + diff --git a/dwms/SM.tex b/dwms/SM.tex new file mode 100644 index 0000000..be6aae2 --- /dev/null +++ b/dwms/SM.tex @@ -0,0 +1,422 @@ +% Options for packages loaded elsewhere +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode}{hyperref} +\PassOptionsToPackage{hyphens}{url} +\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} +\PassOptionsToPackage{space}{xeCJK} +% +\documentclass[ + english, + 12pt, + letterpaper, +]{article} +\usepackage{xcolor} +\usepackage[margin=1in]{geometry} +\usepackage{amsmath,amssymb} +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +\usepackage{iftex} +\ifPDFTeX + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex + \usepackage{unicode-math} % this also loads fontspec + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +\usepackage{lmodern} +\ifPDFTeX\else + % xetex/luatex font selection + \setmainfont[]{Source Sans 3} + \setsansfont[Color=39729E]{Gill Sans} + \setmonofont[]{JetBrains Mono} + \setmathfont[]{Cambria Math} + \ifXeTeX + \usepackage{xeCJK} + \setCJKmainfont[]{SimHei} + \fi + \ifLuaTeX + \usepackage[]{luatexja-fontspec} + \setmainjfont[]{SimHei} + \fi +\fi +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +\makeatletter +\@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} +}{% if KOMA class + \KOMAoptions{parskip=half}} +\makeatother + + +\usepackage{longtable,booktabs,array} +\usepackage{calc} % for calculating minipage widths +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +\usepackage{graphicx} +\makeatletter +\newsavebox\pandoc@box +\newcommand*\pandocbounded[1]{% scales image to fit in text height/width + \sbox\pandoc@box{#1}% + \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}% + \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}% + \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both + \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}% + \else\usebox{\pandoc@box}% + \fi% +} +% Set default figure placement to htbp +\def\fps@figure{htbp} +\makeatother + + + +\ifLuaTeX +\usepackage[bidi=basic]{babel} +\else +\usepackage[bidi=default]{babel} +\fi +\ifPDFTeX +\else +\babelfont{rm}[]{Source Sans 3} +\fi +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +\ifLuaTeX + \usepackage[english]{selnolig} % disable illegal ligatures +\fi + + +\setlength{\emergencystretch}{3em} % prevent overfull lines + +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + + + + + + +% ----------------------- +% CUSTOM PREAMBLE STUFF +% ----------------------- +\usepackage{enumitem} +\usepackage{fontspec} +\usepackage{float} +\usepackage[normalem]{ulem} +\usepackage{hyperref} +\usepackage{nameref} %needed by zref-xr +\usepackage{zref-xr,zref-hyperref,zref-user} +\usepackage{xr-hyper} +\usepackage[normalem]{ulem} +\usepackage{setspace} +\usepackage{lineno} +\usepackage{caption} +\captionsetup{singlelinecheck=off} +\usepackage[UTF8, scheme=plain]{ctex} +\usepackage{orcidlink} + +% \setkomafont{author}{\normalsize} + +% for revision +\usepackage{adjustbox} +% \usepackage{xcolor} +\usepackage{mdframed} +\newmdenv[topline=false, + leftline=true, + bottomline=false, + rightline=false, + linewidth=3pt, + %backgroundcolor=lightgray, + linecolor=gray!30, + backgroundcolor=gray!5, + skipabove=\topsep, + skipbelow=\topsep, + leftmargin=0pt, + rightmargin=0pt, + innertopmargin=0pt, + innerbottommargin=0pt + ]{refquote} +\newmdenv[topline=false, + leftline=true, + bottomline=false, + rightline=false, + linewidth=3pt, + %backgroundcolor=lightgray, + backgroundcolor=red!3!white, + linecolor=red!30!white, + skipabove=\topsep, + skipbelow=\topsep, + leftmargin=0pt, + rightmargin=0pt, + innertopmargin=10pt, + innerbottommargin=10pt + ]{question} +% setup hyperlink for page and line number +\def\msname{MS} +\def\smname{SM} +\setenumerate{labelsep=*, leftmargin=1.0pc} +%\zexternaldocument*{ManuscriptNew\veraa} +\zexternaldocument*{\msname} +\zexternaldocument*{\smname} +\newcommand{\hlabel}[1]{\label{#1}\hypertarget{#1}{ + \linelabel{line:#1}}} +%\externaldocument[si-]{\smname\veraa}[\smname\veraa.pdf] +\makeatletter +\newcommand{\clab}[2][]{ + \protected@write\@auxout{\let\clab\@secondoftwo}{ + \string\newlabel{r:#1}{{#2}{}}}% + \hlabel{#1}#2\hlabel{#1end}} +\makeatother +\newcommand{\zhypera}[1]{\href[pdfnewwindow]{\msname.pdf\##1}{\\[1ex]\textbf{Page \zpageref{#1}, Line +\zref{line:#1}--\zref{line:#1end}:}\\}} +\newcommand{\cref}[1]{\begin{refquote}\zhypera{#1}{\zref{r:#1}}\\[-0.5ex]\end{refquote}} +% \newenvironment{ra}[1][\unskip]{\par \noindent \\[-1ex] \textbf{Response/Action:}\par\bf}{\ \\} +\renewenvironment{quote}{\begin{question}}{\end{question}} +% \renewenvironment{verbatim}{\begin{ra}}{\end{ra}} + + + + +% ----------------- +% Title block stuff +% ----------------- + +% Title +\makeatletter +\renewcommand{\title}[1]{\gdef\@title{\large\textbf{#1}}} % Adjust \Huge or other font commands +\makeatother + + +% ------------------ +% Section headings +% ------------------ +\usepackage{titlesec} +\titleformat*{\section}{\Large\sffamily\bfseries\raggedright} +\titleformat*{\subsection}{\large\sffamily\bfseries\raggedright} +\titleformat*{\subsubsection}{\normalsize\sffamily\bfseries\raggedright} +\titleformat*{\paragraph}{\small\sffamily\bfseries\raggedright} + +%\titlespacing{}{}{}{} +% Starred version removes indentation in following paragraph +\titlespacing*{\section}{0em}{2em}{0.1em} +\titlespacing*{\subsection}{0em}{1.25em}{0.1em} +\titlespacing*{\subsubsection}{0em}{0.75em}{0em} + +% ------------------ +% Headers/Footers +% ------------------ +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \fancyhf{} +% \fancyhead[L,C,R]{} +% \fancyfoot[L,C]{} +% \fancyfoot[R]{\thepage} +% \renewcommand{\headrulewidth}{1pt} +% \fancypagestyle{plain}{% +% \renewcommand{\headrulewidth}{0pt}% +% \fancyhf{}% +% \fancyfoot[R]{\thepage}% +% } +% \renewcommand\footnoterule{\rule{\linewidth}{0.1pt}\vspace{5pt}} + +% ------------------ +% Captions +% ------------------ +\usepackage[labelfont=bf,labelsep=period]{caption} +\captionsetup[figure]{font=footnotesize,justification=raggedright,singlelinecheck=false,format=hang} + + +% --------------------------- +% END CUSTOM PREAMBLE STUFF +% --------------------------- +\doublespacing +\linenumbers +\let\oldsection\section +\renewcommand{\section}{\clearpage\oldsection} +\let\oldsubsection\subsection +\renewcommand{\subsection}{\clearpage\oldsubsection} +\makeatletter +\@ifpackageloaded{float}{}{\usepackage{float}} +\floatstyle{plain} +\@ifundefined{c@chapter}{\newfloat{sfg}{h}{lost}}{\newfloat{sfg}{h}{lost}[chapter]} +\floatname{sfg}{Supplementary Fig.} +\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}{Supplementary Table} +\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}{Supplementary Eq.} +\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}} +\AtBeginDocument{% +\ifdefined\contentsname + \renewcommand*\contentsname{Table of contents} +\else + \newcommand\contentsname{Table of contents} +\fi +\ifdefined\listfigurename + \renewcommand*\listfigurename{List of Figures} +\else + \newcommand\listfigurename{List of Figures} +\fi +\ifdefined\listtablename + \renewcommand*\listtablename{List of Tables} +\else + \newcommand\listtablename{List of Tables} +\fi +\ifdefined\figurename + \renewcommand*\figurename{Fig.} +\else + \newcommand\figurename{Fig.} +\fi +\ifdefined\tablename + \renewcommand*\tablename{Table} +\else + \newcommand\tablename{Table} +\fi +} +\@ifpackageloaded{float}{}{\usepackage{float}} +\floatstyle{ruled} +\@ifundefined{c@chapter}{\newfloat{codelisting}{h}{lop}}{\newfloat{codelisting}{h}{lop}[chapter]} +\floatname{codelisting}{Listing} +\newcommand*\listoflistings{\listof{codelisting}{List of Listings}} +\captionsetup{labelsep=colon} +\makeatother +\makeatletter +\makeatother +\makeatletter +\@ifpackageloaded{caption}{}{\usepackage{caption}} +\@ifpackageloaded{subcaption}{}{\usepackage{subcaption}} +\makeatother +\usepackage{bookmark} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\urlstyle{same} +\hypersetup{ + pdftitle={MANUSCRIPT TITLE}, + pdfauthor={Xxxxx Yyyy; Ming Su; Min Yang}, + pdflang={en}, + colorlinks=true, + linkcolor={blue}, + filecolor={Maroon}, + citecolor={Blue}, + urlcolor={blue}, + pdfcreator={LaTeX via pandoc}} + + +\title{MANUSCRIPT TITLE} +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large\sffamily\bfseries #1 \par}}{}{} +} +\makeatother +\subtitle{Supplementary Information} +\author{\footnotesize Xxxxx Yyyy \and \footnotesize Ming +Su \and \footnotesize Min Yang} +\date{} +\begin{document} + +% for some reason this does not work in header +\renewcommand{\abstractname}{Abstract.} + +% add the short title to the fancy header + +\maketitle +%\noindent \rule{\linewidth}{.5pt} +%\noindent \rule{\linewidth}{.5pt} + + +\thispagestyle{empty} + +Figures and/or tables are provided below as the supplementary evidences +to the main text. + +\newpage{} + +\clearpage +{ +\hypersetup{linkcolor=black} +\setcounter{tocdepth}{3} +\tableofcontents +} + +\newpage{} + +\begin{sfg} + +\centering{ + +\begin{verbatim} +#> NULL +\end{verbatim} + +} + +\caption{\label{sfg-demo}Caption of demo figure} + +\end{sfg}% + + + + +\end{document} diff --git a/dwms/SM.toc b/dwms/SM.toc new file mode 100644 index 0000000..9fbdd18 --- /dev/null +++ b/dwms/SM.toc @@ -0,0 +1 @@ +\babel@toc {english}{}\relax diff --git a/dwms/_extension.yml b/dwms/_extension.yml index e400a8b..825fba6 100644 --- a/dwms/_extension.yml +++ b/dwms/_extension.yml @@ -36,6 +36,6 @@ contributes: - "partials/after-body.tex" filters: - latex-environment - - authors-block + - authoraffil.lua lightbox: auto commands: [clab] diff --git a/dwms/_extensions/dwms/_extension.yml b/dwms/_extensions/dwms/_extension.yml new file mode 100644 index 0000000..825fba6 --- /dev/null +++ b/dwms/_extensions/dwms/_extension.yml @@ -0,0 +1,41 @@ +title: dwms-pdf-quarto +author: Ming Su +version: 0.0.1 +quarto-required: ">=1.3.0" +contributes: + formats: + common: + knitr: + opts_chunk: + echo: false + message: false + warning: false + pdf: + documentclass: article + toc: false + papersize: letter + fontsize: 12pt + geometry: margin=1in + fig-height: 4 # smaller fig heights make floating easier + fig-width: 7.5 # set to the (full width - margins) of letter + fig-pos: "!t" + colorlinks: true + urlcolor: blue + sansfont: "Gill Sans" + sansfontoptions: + - Color=39729E + mainfont: "Source Sans 3" #| Verdana (fontsize: 11pt) # Source Sans 3 | Times New Roman| Helvetica | PT Sans + monofont: "JetBrains Mono" + mathfont: "Cambria Math" + CJKmainfont: SimHei + block-headings: false # to deal with titlesec problems + include-in-header: header.tex + template-partials: + - "partials/title.tex" + - "partials/before-body.tex" + - "partials/after-body.tex" +filters: + - latex-environment + - authoraffil.lua +lightbox: auto +commands: [clab] diff --git a/dwms/_extensions/dwms/header.tex b/dwms/_extensions/dwms/header.tex new file mode 100644 index 0000000..bf33a39 --- /dev/null +++ b/dwms/_extensions/dwms/header.tex @@ -0,0 +1,133 @@ +% ----------------------- +% CUSTOM PREAMBLE STUFF +% ----------------------- +\usepackage{enumitem} +\usepackage{fontspec} +\usepackage{float} +\usepackage[normalem]{ulem} +\usepackage{hyperref} +\usepackage{nameref} %needed by zref-xr +\usepackage{zref-xr,zref-hyperref,zref-user} +\usepackage{xr-hyper} +\usepackage[normalem]{ulem} +\usepackage{setspace} +\usepackage{lineno} +\usepackage{caption} +\captionsetup{singlelinecheck=off} +\usepackage[UTF8, scheme=plain]{ctex} +\usepackage{orcidlink} + +% \setkomafont{author}{\normalsize} + +% for revision +\usepackage{adjustbox} +% \usepackage{xcolor} +\usepackage{mdframed} +\newmdenv[topline=false, + leftline=true, + bottomline=false, + rightline=false, + linewidth=3pt, + %backgroundcolor=lightgray, + linecolor=gray!30, + backgroundcolor=gray!5, + skipabove=\topsep, + skipbelow=\topsep, + leftmargin=0pt, + rightmargin=0pt, + innertopmargin=0pt, + innerbottommargin=0pt + ]{refquote} +\newmdenv[topline=false, + leftline=true, + bottomline=false, + rightline=false, + linewidth=3pt, + %backgroundcolor=lightgray, + backgroundcolor=red!3!white, + linecolor=red!30!white, + skipabove=\topsep, + skipbelow=\topsep, + leftmargin=0pt, + rightmargin=0pt, + innertopmargin=10pt, + innerbottommargin=10pt + ]{question} +% setup hyperlink for page and line number +\def\msname{MS} +\def\smname{SM} +\setenumerate{labelsep=*, leftmargin=1.0pc} +%\zexternaldocument*{ManuscriptNew\veraa} +\zexternaldocument*{\msname} +\zexternaldocument*{\smname} +\newcommand{\hlabel}[1]{\label{#1}\hypertarget{#1}{ + \linelabel{line:#1}}} +%\externaldocument[si-]{\smname\veraa}[\smname\veraa.pdf] +\makeatletter +\newcommand{\clab}[2][]{ + \protected@write\@auxout{\let\clab\@secondoftwo}{ + \string\newlabel{r:#1}{{#2}{}}}% + \hlabel{#1}#2\hlabel{#1end}} +\makeatother +\newcommand{\zhypera}[1]{\href[pdfnewwindow]{\msname.pdf\##1}{\\[1ex]\textbf{Page \zpageref{#1}, Line +\zref{line:#1}--\zref{line:#1end}:}\\}} +\newcommand{\cref}[1]{\begin{refquote}\zhypera{#1}{\zref{r:#1}}\\[-0.5ex]\end{refquote}} +% \newenvironment{ra}[1][\unskip]{\par \noindent \\[-1ex] \textbf{Response/Action:}\par\bf}{\ \\} +\renewenvironment{quote}{\begin{question}}{\end{question}} +% \renewenvironment{verbatim}{\begin{ra}}{\end{ra}} + + + + +% ----------------- +% Title block stuff +% ----------------- + +% Title +\makeatletter +\renewcommand{\title}[1]{\gdef\@title{\large\textbf{#1}}} % Adjust \Huge or other font commands +\makeatother + + +% ------------------ +% Section headings +% ------------------ +\usepackage{titlesec} +\titleformat*{\section}{\Large\sffamily\bfseries\raggedright} +\titleformat*{\subsection}{\large\sffamily\bfseries\raggedright} +\titleformat*{\subsubsection}{\normalsize\sffamily\bfseries\raggedright} +\titleformat*{\paragraph}{\small\sffamily\bfseries\raggedright} + +%\titlespacing{}{}{}{} +% Starred version removes indentation in following paragraph +\titlespacing*{\section}{0em}{2em}{0.1em} +\titlespacing*{\subsection}{0em}{1.25em}{0.1em} +\titlespacing*{\subsubsection}{0em}{0.75em}{0em} + +% ------------------ +% Headers/Footers +% ------------------ +% \usepackage{fancyhdr} +% \pagestyle{fancy} +% \fancyhf{} +% \fancyhead[L,C,R]{} +% \fancyfoot[L,C]{} +% \fancyfoot[R]{\thepage} +% \renewcommand{\headrulewidth}{1pt} +% \fancypagestyle{plain}{% +% \renewcommand{\headrulewidth}{0pt}% +% \fancyhf{}% +% \fancyfoot[R]{\thepage}% +% } +% \renewcommand\footnoterule{\rule{\linewidth}{0.1pt}\vspace{5pt}} + +% ------------------ +% Captions +% ------------------ +\usepackage[labelfont=bf,labelsep=period]{caption} +\captionsetup[figure]{font=footnotesize,justification=raggedright,singlelinecheck=false,format=hang} + + +% --------------------------- +% END CUSTOM PREAMBLE STUFF +% --------------------------- diff --git a/dwms/_extensions/dwms/partials/after-body.tex b/dwms/_extensions/dwms/partials/after-body.tex new file mode 100644 index 0000000..e69de29 diff --git a/dwms/_extensions/dwms/partials/before-body.tex b/dwms/_extensions/dwms/partials/before-body.tex new file mode 100644 index 0000000..9a0f30e --- /dev/null +++ b/dwms/_extensions/dwms/partials/before-body.tex @@ -0,0 +1,33 @@ +$-- Implements the frontmatter, title page, and abstract. + +% for some reason this does not work in header +\renewcommand{\abstractname}{Abstract.} + +% add the short title to the fancy header +$if(shorttitle)$ +\fancyhead[R]{$shorttitle$} +$endif$ +$if(shortauthors)$ +\fancyhead[L]{$shortauthors$} +$endif$ + +$if(has-frontmatter)$ +\frontmatter +$endif$ +$if(title)$ +\maketitle +%\noindent \rule{\linewidth}{.5pt} +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$if(keywords)$ +\begin{keywords} +\def\sep{;\ } +$for(keywords/allbutlast)$$keywords$\sep $endfor$ +$for(keywords/last)$$keywords$$endfor$ +\end{keywords} +$endif$ +$endif$ +%\noindent \rule{\linewidth}{.5pt} +$endif$ \ No newline at end of file diff --git a/dwms/_extensions/dwms/partials/title.tex b/dwms/_extensions/dwms/partials/title.tex new file mode 100644 index 0000000..b86298e --- /dev/null +++ b/dwms/_extensions/dwms/partials/title.tex @@ -0,0 +1,15 @@ +$if(title)$ +\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} +$endif$ +$if(subtitle)$ +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large\sffamily\bfseries #1 \par}}{}{} +} +\makeatother +\subtitle{$subtitle$} +$endif$ +$-- This supports Quarto's authors normalization +\author{$for(authors)$\footnotesize $it.name.literal$$sep$ \and $endfor$} +\date{$date$} diff --git a/dwsd/.gitignore b/dwsd/.gitignore new file mode 100644 index 0000000..7708a1d --- /dev/null +++ b/dwsd/.gitignore @@ -0,0 +1,3 @@ +*_files +*.html +/*.png diff --git a/dwsd/_extension.yml b/dwsd/_extension.yml new file mode 100644 index 0000000..2299656 --- /dev/null +++ b/dwsd/_extension.yml @@ -0,0 +1,23 @@ +title: revealjs format for drwater +author: Ming Su +version: 1.0.0 +quarto-required: ">=1.3.0" +contributes: + formats: + revealjs: + theme: [default, dwsd.css] + slide-number: true + date-format: long + logo: rceeslogo.png + format-resources: ["rceeslogo.png"] + chalkboard: + buttons: true + preview-links: auto + lang: zh + toc: true + toc-depth: 1 + toc-title: 大纲 + pointer: + key: "p" + color: "#32cd32" + pointerSize: 18 diff --git a/dwsd/_extensions/drwater/dwsd/_extension.yml b/dwsd/_extensions/drwater/dwsd/_extension.yml new file mode 100644 index 0000000..2299656 --- /dev/null +++ b/dwsd/_extensions/drwater/dwsd/_extension.yml @@ -0,0 +1,23 @@ +title: revealjs format for drwater +author: Ming Su +version: 1.0.0 +quarto-required: ">=1.3.0" +contributes: + formats: + revealjs: + theme: [default, dwsd.css] + slide-number: true + date-format: long + logo: rceeslogo.png + format-resources: ["rceeslogo.png"] + chalkboard: + buttons: true + preview-links: auto + lang: zh + toc: true + toc-depth: 1 + toc-title: 大纲 + pointer: + key: "p" + color: "#32cd32" + pointerSize: 18 diff --git a/dwsd/_extensions/drwater/dwsd/_extensions/_extension.yml b/dwsd/_extensions/drwater/dwsd/_extensions/_extension.yml new file mode 100644 index 0000000..2299656 --- /dev/null +++ b/dwsd/_extensions/drwater/dwsd/_extensions/_extension.yml @@ -0,0 +1,23 @@ +title: revealjs format for drwater +author: Ming Su +version: 1.0.0 +quarto-required: ">=1.3.0" +contributes: + formats: + revealjs: + theme: [default, dwsd.css] + slide-number: true + date-format: long + logo: rceeslogo.png + format-resources: ["rceeslogo.png"] + chalkboard: + buttons: true + preview-links: auto + lang: zh + toc: true + toc-depth: 1 + toc-title: 大纲 + pointer: + key: "p" + color: "#32cd32" + pointerSize: 18 diff --git a/dwsd/_extensions/drwater/dwsd/_extensions/dwsd.css b/dwsd/_extensions/drwater/dwsd/_extensions/dwsd.css new file mode 100644 index 0000000..320a2dd --- /dev/null +++ b/dwsd/_extensions/drwater/dwsd/_extensions/dwsd.css @@ -0,0 +1,345 @@ +:root { + --r-background-color: #fff; + --r-main-font: Source Sans Pro, simhei, microsoft yahei; + --r-main-font-size: 28px; + --r-main-color: #222; + --r-block-margin: 12px; + --r-heading-margin: 0 0 12px 0; + --r-heading-font: Source Sans Pro, microsoft yahei, simhei; + --r-heading-color: #0c4c8a; + --r-heading-line-height: 1.2em; + --r-heading-letter-spacing: normal; + --r-heading-text-transform: none; + --r-heading-text-shadow: none; + --r-heading-font-weight: 900; + --r-heading1-text-shadow: none; + --r-heading1-size: 2.5em; + --r-heading2-size: 1.6em; + --r-heading3-size: 1.3em; + --r-heading4-size: 1em; + --r-code-font: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, + Courier New, monospace; + --r-link-color: #ef562d; + --r-link-color-dark: #ef562d; + --r-link-color-hover: #d13076; + --r-selection-background-color: #98bdef; + --r-selection-color: #fff; + --quarto-hl-fu-color: #c53800; +} + +.reveal .title-slide h1 { + text-align: center; + line-height: var(--r-heading-line-height); +} + +section#title-slide p.author, +section#title-slide p.institute, +section#title-slide p.date { + font-size: var(--r-heading2-size); + color: gray; +} + +section#title-slide h1.title:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: underline; + color: gray; +} + +section#title-slide a { + color: gray; +} + +.reveal .slide-number a { + color: #bbbbbb; + font-size: 10pt; +} + +section#title-slide a:hover { + color: var(--r-link-color-hover); +} + +.reveal[data-navigation-mode="linear"] .title-slide h1 { + font-size: var(--r-heading2-size); +} + +section#TOC { + vertical-align: middle; + text-align: center; +} + +section#TOC h2 { + font-size: var(--r-heading2-size); + font-weight: bold; + text-align: center; +} + +section#TOC h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#TOC ul { + text-align: left; + vertical-align: middle; + margin-top: 3em; + line-height: 1.6em; +} + +section#TOC ol li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: number; + line-height: 1.6em; +} + +section#TOC strong, +section#TOC b { + color: black; +} + +section#TOC ul li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: circle; + line-height: 1.6em; +} + +section#TOC a { + color: black; +} + +section#TOC a:hover { + color: var(--r-link-color-hover); +} + +.reveal h2 { + text-align: left; + margin-top: 0px; + line-height: var(--r-heading-line-height); +} + +.reveal .title-slide h1:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.reveal h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, var(--r-heading-color), white) 1; + border-radius: 1px; +} + +.reveal ul { + list-style-type: circle; +} + +li:hover { + font-weight: bold; +} + +.reveal p:hover { + font-weight: bold; +} + +.reveal ul li { + line-height: 1.2em; +} + +.reveal .thank h2 { + font-size: var(--r-heading1-size); + line-height: var(--r-heading-line-height); +} + +.reveal .thank { + text-align: center; +} + +.reveal .thank h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.panel-tabset [role="tab"] { + border-bottom: 1px solid red; +} + +.panel-tabset [role="tab"][aria-selected="true"] { + background-color: #ffdddd; + border-bottom: 1px solid red; +} + +.white { + color: #ffffff; +} +.orange { + color: #e09a25; +} +.green { + color: #006e51; +} +.pink { + color: #d13076; +} + +.dusty { + color: #ad5d5d; +} + +.flame { + color: #ef562d; +} +.kale { + color: #5c7148; +} +.blue { + color: #0c4c8a; +} +.red { + color: #b93a32; +} +.clay { + color: #9e4624; +} +.bodacious { + color: #b76ba3; +} +.serenity { + color: #91a8d0; +} + +.cognac { + color: #60413c; +} +.sangria { + color: #760030; +} + +.alumium { + color: #75796a; +} + +.marsala { + color: #964f4c; +} +.purple { + color: #702fa8; +} + +.blank { + background-color: "Yellow"; + width: 100%; + color: red; +} + +.reveal .slide aside { + position: absolute; + margin: 0 auto; + left: 2%; + font-size: 0.7em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.ref { + position: absolute; + margin: 0 auto; + right: 2%; + font-size: 1em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.con { + position: absolute; + margin: 0 auto; + font-size: 1.4em; + text-align: center; + font-family: inherit; + max-width: 100%; + width: fit-content; + color: #023047; + bottom: -2%; +} + +.center { + text-align: center; +} + +.tiny { + font-size: 60%; +} + +figure > figcaption { + margin-top: -0.5em; +} + +.reveal .slide figure > figcaption, +.reveal .slide img.stretch + p.caption, +.reveal .slide img.r-stretch + p.caption { + font-size: 0.9em; + text-align: center; +} + +.reveal strong, .reveal b { + font-weight: bold; + color: crimson; +} + +.reveal pre code { + background-color: #554433; + line-height: 1.2em; + color: #fff; + /* font-size: x-large; */ +} + +.reveal pre code:hover{ + font-size: x-large; + line-height: 120%; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: none; + color: gray; +} + +.reveal div.sourceCode pre code { + background-color: #002233; + min-height: 100%; + /* font-size: x-large; */ +} + +.reveal div.sourceCode pre code:hover { + font-size: x-large; +} \ No newline at end of file diff --git a/dwsd/_extensions/drwater/dwsd/_extensions/rceeslogo.png b/dwsd/_extensions/drwater/dwsd/_extensions/rceeslogo.png new file mode 100755 index 0000000..f8cf1d5 Binary files /dev/null and b/dwsd/_extensions/drwater/dwsd/_extensions/rceeslogo.png differ diff --git a/dwsd/_extensions/drwater/dwsd/_extensions/rceeslonglogo.png b/dwsd/_extensions/drwater/dwsd/_extensions/rceeslonglogo.png new file mode 100755 index 0000000..5460fde Binary files /dev/null and b/dwsd/_extensions/drwater/dwsd/_extensions/rceeslonglogo.png differ diff --git a/dwsd/_extensions/drwater/dwsd/dwsd.css b/dwsd/_extensions/drwater/dwsd/dwsd.css new file mode 100644 index 0000000..027d271 --- /dev/null +++ b/dwsd/_extensions/drwater/dwsd/dwsd.css @@ -0,0 +1,374 @@ +/*-- scss:defaults --*/ + +/* Modified version of the metropolis theme ported into Quarto by Patrick Schwartz */ + +// fonts +@import url("https://fonts.googleapis.com/css?family=Fira+Sans:300,300i,400,400i,500,500i,700,700i"); +@import url("https://fonts.googleapis.com/css?family=Fira+Code:300,300i,400,400i,500,500i,700,700i"); +@import url("https://fonts.googleapis.com/css?family=Roboto+Mono|JetBrains+Mono&display=swap"); +@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"); + +$font-family-sans-serif: "Fira Sans", "Roboto", "Droid Serif", serif !default; +$font-family-monospace: "Fira Code", "JetBrains Mono", monospace; +$presentation-font-size-root: 32px; +$presentation-line-height: 1.5em; +$presentation-heading-font-weight: 400; + +// colors +$body-bg: #fafafa !default; +$body-color: #000 !default; +// $link-color: #EB811B !default; +$selection-bg: #26351c; + +// headings +// $presentation-heading-font: "Palatino Linotype", "Book Antiqua", Palatino, +// FreeSerif, serif !default; +// $presentation-heading-color: #383d3d !default; + +/*-- scss:rules --*/ + +:root { + --r-background-color: #fff; + --r-main-font: Source Sans Pro, simhei, microsoft yahei; + --r-main-font-size: 28px; + --r-main-color: #222; + --r-block-margin: 12px; + --r-heading-margin: 0 0 12px 0; + --r-heading-font: Source Sans Pro, microsoft yahei, simhei; + --r-heading-color: #0c4c8a; + --r-heading-line-height: 1.2em; + --r-heading-letter-spacing: normal; + --r-heading-text-transform: none; + --r-heading-text-shadow: none; + --r-heading-font-weight: 900; + --r-heading1-text-shadow: none; + --r-heading1-size: 2.5em; + --r-heading2-size: 1.6em; + --r-heading3-size: 1.3em; + --r-heading4-size: 1em; + --r-code-font: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, + Courier New, monospace; + --r-link-color: #ef562d; + --r-link-color-dark: #ef562d; + --r-link-color-hover: #d13076; + --r-selection-background-color: #98bdef; + --r-selection-color: #fff; + --quarto-hl-fu-color: #c53800; +} + +.reveal .title-slide h1 { + text-align: center; + line-height: var(--r-heading-line-height); +} + +section#title-slide p.author, +section#title-slide p.institute, +section#title-slide p.date { + font-size: var(--r-heading2-size); + color: gray; +} + +section#title-slide h1.title:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: underline; + color: gray; +} + +section#title-slide a { + color: gray; +} + +.reveal .slide-number a { + color: #bbbbbb; + font-size: 10pt; +} + +section#title-slide a:hover { + color: var(--r-link-color-hover); +} + +.reveal[data-navigation-mode="linear"] .title-slide h1 { + font-size: var(--r-heading2-size); +} + +section#TOC { + vertical-align: middle; + text-align: center; +} + +section#TOC h2 { + font-size: var(--r-heading2-size); + font-weight: bold; + text-align: center; +} + +section#TOC h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#TOC ul { + text-align: left; + vertical-align: middle; + margin-top: 3em; + line-height: 1.6em; +} + +section#TOC ol li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: number; + line-height: 1.6em; +} + +section#TOC strong, +section#TOC b { + color: black; +} + +section#TOC ul li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: circle; + line-height: 1.6em; +} + +section#TOC a { + color: black; +} + +section#TOC a:hover { + color: var(--r-link-color-hover); +} + +.reveal h2 { + text-align: left; + margin-top: 0px; + line-height: var(--r-heading-line-height); +} + +.reveal .title-slide h1:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.reveal h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, var(--r-heading-color), white) 1; + border-radius: 1px; +} + +.reveal ul { + list-style-type: circle; +} + +li:hover { + font-weight: bold; +} + +.reveal p:hover { + font-weight: bold; +} + +.reveal ul li { + line-height: 1.2em; +} + +.reveal .thank h2 { + font-size: var(--r-heading1-size); + line-height: var(--r-heading-line-height); +} + +.reveal .thank { + text-align: center; +} + +.reveal .thank h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.panel-tabset [role="tab"] { + border-bottom: 1px solid red; +} + +.panel-tabset [role="tab"][aria-selected="true"] { + background-color: #ffdddd; + border-bottom: 1px solid red; +} + +.white { + color: #ffffff; +} +.orange { + color: #e09a25; +} +.green { + color: #006e51; +} +.pink { + color: #d13076; +} + +.dusty { + color: #ad5d5d; +} + +.flame { + color: #ef562d; +} +.kale { + color: #5c7148; +} +.blue { + color: #0c4c8a; +} +.red { + color: #b93a32; +} +.clay { + color: #9e4624; +} +.bodacious { + color: #b76ba3; +} +.serenity { + color: #91a8d0; +} + +.cognac { + color: #60413c; +} +.sangria { + color: #760030; +} + +.alumium { + color: #75796a; +} + +.marsala { + color: #964f4c; +} +.purple { + color: #702fa8; +} + +.blank { + background-color: "Yellow"; + width: 100%; + color: red; +} + +.reveal .slide aside { + position: absolute; + margin: 0 auto; + left: 2%; + font-size: 0.7em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.ref { + position: absolute; + margin: 0 auto; + right: 2%; + font-size: 1em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.con { + position: absolute; + margin: 0 auto; + font-size: 1.4em; + text-align: center; + font-family: inherit; + max-width: 100%; + width: fit-content; + color: #023047; + bottom: -2%; +} + +.center { + text-align: center; +} + +.tiny { + font-size: 60%; +} + +figure > figcaption { + margin-top: -0.5em; +} + +.reveal .slide figure > figcaption, +.reveal .slide img.stretch + p.caption, +.reveal .slide img.r-stretch + p.caption { + font-size: 0.9em; + text-align: center; +} + +.reveal strong, .reveal b { + font-weight: bold; + color: crimson; +} + +.reveal pre code { + background-color: #554433; + line-height: 1.2em; + color: #fff; + /* font-size: x-large; */ +} + +.reveal pre code:hover{ + font-size: x-large; + line-height: 120%; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: none; + color: gray; +} + +.reveal div.sourceCode pre code { + background-color: #002233; + min-height: 100%; + /* font-size: x-large; */ +} + +.reveal div.sourceCode pre code:hover { + font-size: x-large; +} diff --git a/dwsd/_extensions/drwater/dwsd/rceeslogo.png b/dwsd/_extensions/drwater/dwsd/rceeslogo.png new file mode 100755 index 0000000..f8cf1d5 Binary files /dev/null and b/dwsd/_extensions/drwater/dwsd/rceeslogo.png differ diff --git a/dwsd/_extensions/drwater/dwsd/rceeslonglogo.png b/dwsd/_extensions/drwater/dwsd/rceeslonglogo.png new file mode 100755 index 0000000..5460fde Binary files /dev/null and b/dwsd/_extensions/drwater/dwsd/rceeslonglogo.png differ diff --git a/dwsd/_quarto_internal_scss_error.scss b/dwsd/_quarto_internal_scss_error.scss new file mode 100644 index 0000000..4d2256e --- /dev/null +++ b/dwsd/_quarto_internal_scss_error.scss @@ -0,0 +1,3190 @@ +// quarto-scss-analysis-annotation { "quarto-version": "1.7.29" } + +// quarto-scss-analysis-annotation { "origin": "'use' section from format" } + + + +// quarto-scss-analysis-annotation { "origin": "'use' section from Quarto" } + +@use "sass:color" as quarto-color; +@use "sass:map" as quarto-map; +@use "sass:math" as quarto-math; + + +// this file is currently intentionally empty + + +// quarto-scss-analysis-annotation { "origin": "'use' section from user-defined SCSS" } + + + +// quarto-scss-analysis-annotation { "origin": "'functions' section from format" } + + + +// quarto-scss-analysis-annotation { "origin": "'functions' section from Quarto" } + +@function colorToRGB($color) { + @return "rgb(" + red($color) + ", " + green($color) + ", " + blue($color) + + ")"; +} + +@function colorToRGBA($color) { + @return "rgba(" + red($color) + ", " + green($color) + ", " + blue($color) + + ", " + alpha($color) + ")"; +} + +@function str-replace($string, $search, $replace: "") { + $index: str-index($string, $search); + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + + str-replace( + str-slice($string, $index + str-length($search)), + $search, + $replace + ); + } + @return $string; +} + + +@function colorToRGB($color) { + @return "rgb(" + red($color) + ", " + green($color) + ", " + blue($color) + + ")"; +} + +@function tint-color($color, $weight) { + @return mix(white, $color, $weight); +} + +@function shade-color($color, $weight) { + @return mix(black, $color, $weight); +} + +@function shift-color($color, $weight) { + @return if( + $weight > 0, + shade-color($color, $weight), + tint-color($color, -$weight) + ); +} + + +// quarto-scss-analysis-annotation { "origin": "'functions' section from user-defined SCSS" } + + + +// quarto-scss-analysis-annotation { "origin": "Defaults from user-defined SCSS" } + + +/* Modified version of the metropolis theme ported into Quarto by Patrick Schwartz */ + +// fonts +@import url("https://fonts.googleapis.com/css?family=Fira+Sans:300,300i,400,400i,500,500i,700,700i"); +@import url("https://fonts.googleapis.com/css?family=Fira+Code:300,300i,400,400i,500,500i,700,700i"); +@import url("https://fonts.googleapis.com/css?family=Roboto+Mono|JetBrains+Mono&display=swap"); +@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"); + +$font-family-sans-serif: "Fira Sans", "Roboto", "Droid Serif", serif !default; +$font-family-monospace: "Fira Code", "JetBrains Mono", monospace; +$presentation-font-size-root: 32px; +$presentation-line-height: 1.5em; +$presentation-heading-font-weight: 400; + +// colors +$body-bg: #fafafa !default; +$body-color: #000 !default; +// $link-color: #EB811B !default; +$selection-bg: #26351c; + +// headings +// $presentation-heading-font: "Palatino Linotype", "Book Antiqua", Palatino, +// FreeSerif, serif !default; +// $presentation-heading-color: #383d3d !default; + + +// quarto-scss-analysis-annotation { "origin": "Defaults from Quarto's SCSS" } + + +@import url(./fonts/source-sans-pro/source-sans-pro.css); + +// fonts +$font-family-sans-serif: "Source Sans Pro", Helvetica, sans-serif !default; +$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, + "Liberation Mono", "Courier New", monospace !default; +$presentation-font-size-root: 40px !default; +$presentation-font-smaller: 0.7 !default; +$presentation-line-height: 1.3 !default; + +// Default variables which exist in bootstrap themes +// and are here to simplify the implementation of _brand.yml and +// user theming customization in general +$font-weight-base: 400 !default; +$code-font-size: 1em !default; +$font-family-monospace-block: $font-family-monospace !default; +$font-family-monospace-inline: $font-family-monospace !default; +$link-weight: $font-weight-base !default; +$link-color-bg: transparent !default; +$link-decoration: inherit !default; +$font-weight-monospace: $font-weight-base !default; +$font-weight-monospace-block: $font-weight-monospace !default; +$font-weight-monospace-inline: $font-weight-monospace !default; + +// main colors +$body-bg: #fff !default; +$body-color: #222 !default; +$text-muted: lighten($body-color, 30%) !default; + +// grey colors (like in bootstrap) +$gray-200: #e9ecef !default; +$gray-100: #f8f9fa !default; +$gray-900: #212529 !default; + +// link colors +$primary: #2a76dd !default; +$link-color: $primary !default; +$link-color-hover: lighten($link-color, 10%) !default; + +// selection colors +$selection-bg: lighten($link-color, 25%) !default; +$selection-color: $body-bg !default; + +// border colors +$border-color: lighten($body-color, 30%) !default; +$border-width: 1px !default; +$border-radius: 4px !default; + +// headings +$presentation-heading-font: $font-family-sans-serif !default; +$presentation-heading-color: $body-color !default; +$presentation-heading-line-height: 1.2 !default; +$presentation-heading-letter-spacing: normal !default; +$presentation-heading-text-transform: none !default; +$presentation-heading-text-shadow: none !default; +$presentation-h1-text-shadow: none !default; +$presentation-heading-font-weight: 600 !default; +$presentation-h1-font-size: 2.5em !default; +$presentation-h2-font-size: 1.6em !default; +$presentation-h3-font-size: 1.3em !default; +$presentation-h4-font-size: 1em !default; + +// margins +$presentation-block-margin: 12px !default; + +// text alignment +$presentation-slide-text-align: left !default; +$presentation-title-slide-text-align: center !default; +$reveal-slide-text-align: $presentation-slide-text-align !default; +$reveal-title-slide-text-align: $presentation-title-slide-text-align !default; + +// Lists +$presentation-list-bullet-color: $body-color !default; + +// code blocks +$code-block-bg: $body-bg !default; +$code-block-border-color: lighten($body-color, 60%) !default; +$code-block-font-size: $code-font-size * 0.55 !default; +$code-block-height: 500px !default; +$code-block-theme-dark-threshhold: 40% !default; +$code-block-line-height: $presentation-line-height !default; +$code-block-color: $body-color !default; + +// inline code +$code-inline-font-size: $code-font-size * 0.875 !default; +$code-color: var(--quarto-hl-fu-color) !default; +$code-bg: transparent !default; + +// tabset +$tabset-border-color: $code-block-border-color !default; + +// table +$table-border-color: $code-block-border-color !default; + +// input panel +$input-panel-border-color: $code-block-border-color !default; +$input-panel-border-width: $border-width !default; +$input-panel-border-radius: $border-radius !default; +$input-panel-bg: rgba(248, 249, 250, 1) !default; + +// Callouts +$callout-border-width: 0.3rem !default; +$callout-border-scale: 0% !default; +$callout-icon-scale: 10% !default; +$callout-margin-top: 1rem !default; +$callout-margin-bottom: 1rem !default; +$callout-color-note: #0d6efd !default; +$callout-color-tip: #198754 !default; +$callout-color-important: #dc3545 !default; +$callout-color-caution: #fd7e14 !default; +$callout-color-warning: #ffc107 !default; + +// alternate colors for when the background changes +$light-bg-text-color: #222 !default; +$dark-bg-text-color: #fff !default; +$light-bg-link-color: #2a76dd !default; +$dark-bg-link-color: #42affa !default; +$light-bg-code-color: #4758ab !default; +$dark-bg-code-color: #ffa07a !default; + +// KBD variables +$kbd-padding-y: 0.4rem !default; +$kbd-padding-x: 0.4rem !default; +$kbd-font-size: $presentation-font-size-root !default; +$kbd-color: $body-color !default; +$kbd-bg: $gray-100 !default; // like in bootstrap style + +// --- derive reveal versions of presentation variables for finer-grained override --- + +$revealjs-font-size-root: $presentation-font-size-root !default; +$revealjs-h1-font-size: $presentation-h1-font-size !default; +$revealjs-h2-font-size: $presentation-h2-font-size !default; +$revealjs-h3-font-size: $presentation-h3-font-size !default; +$revealjs-h4-font-size: $presentation-h4-font-size !default; +$revealjs-heading-font: $presentation-heading-font !default; +$revealjs-heading-color: $presentation-heading-color !default; +$revealjs-heading-line-height: $presentation-heading-line-height !default; +$revealjs-heading-letter-spacing: $presentation-heading-letter-spacing !default; +$revealjs-heading-text-transform: $presentation-heading-text-transform !default; +$revealjs-heading-text-shadow: $presentation-heading-text-shadow !default; +$revealjs-h1-text-shadow: $presentation-h1-text-shadow !default; + +$revealjs-heading-font-weight: $presentation-heading-font-weight !default; +$revealjs-block-margin: $presentation-block-margin !default; +$revealjs-line-height: $presentation-line-height !default; +$revealjs-list-bullet-color: $presentation-list-bullet-color !default; + +$revealjs-code-inline-font-size: $code-inline-font-size !default; +$revealjs-code-block-font-size: $code-block-font-size !default; + +// ---- map to reveal scss variables --- +// ---- This is based from the revealjs setting.scss +// -- START setting.scss -- +// Background of the presentation +$backgroundColor: $body-bg !default; + +// Primary/body text +$mainFont: $font-family-sans-serif !default; +$mainFontSize: $revealjs-font-size-root !default; +$mainColor: $body-color !default; + +// Vertical spacing between blocks of text +$blockMargin: $revealjs-block-margin !default; + +// Headings +$headingMargin: 0 0 $blockMargin 0 !default; +$headingFont: $revealjs-heading-font !default; +$headingColor: $revealjs-heading-color !default; +$headingLineHeight: $revealjs-heading-line-height !default; +$headingLetterSpacing: $revealjs-heading-letter-spacing !default; +$headingTextTransform: $revealjs-heading-text-transform !default; +$headingTextShadow: $revealjs-heading-text-shadow !default; +$heading1TextShadow: $revealjs-h1-text-shadow !default; +$headingFontWeight: $revealjs-heading-font-weight !default; + +$heading1Size: $revealjs-h1-font-size !default; +$heading2Size: $revealjs-h2-font-size !default; +$heading3Size: $revealjs-h3-font-size !default; +$heading4Size: $revealjs-h4-font-size !default; + +$codeFont: $font-family-monospace !default; + +// Links and actions +$linkColor: $link-color !default; +$linkColorHover: $link-color-hover !default; + +// Text selection +$selectionBackgroundColor: $selection-bg !default; +$selectionColor: $selection-color !default; + +// Colors used for UI elements that are overlaid on top of +// the presentation +$overlayElementBgColor: 240, 240, 240 !default; +$overlayElementFgColor: 0, 0, 0 !default; + +// -- END setting.scss -- + +$code-copy-selector: "pre.sourceCode:hover > " !default; +$code-white-space: pre !default; +$tbl-cap-location: top !default; +// main colors +$body-bg: #fff !default; +$body-color: #222 !default; +$text-muted: lighten($body-color, 30%) !default; + +// border colors +$border-color: lighten($body-color, 30%) !default; +$table-border-color: $border-color !default; +$border-width: 1px !default; +$border-radius: 4px !default; + +// code block colors +$btn-code-copy-color: if( + variable-exists(text-muted), + $text-muted, + if(variable-exists(body-color), $body-color, $gray-900) +) !default; + +$btn-code-copy-color-active: if( + variable-exists(link-color), + $link-color, + #0d6efd +) !default; + + +// quarto-scss-analysis-annotation { "origin": "Defaults from the format SCSS" } + + + +// quarto-scss-analysis-annotation { "origin": "'mixins' section from format" } + +@mixin vertical-gradient( $top, $bottom ) { + background: $top; + background: -moz-linear-gradient( top, $top 0%, $bottom 100% ); + background: -webkit-gradient( linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom) ); + background: -webkit-linear-gradient( top, $top 0%, $bottom 100% ); + background: -o-linear-gradient( top, $top 0%, $bottom 100% ); + background: -ms-linear-gradient( top, $top 0%, $bottom 100% ); + background: linear-gradient( top, $top 0%, $bottom 100% ); +} + +@mixin horizontal-gradient( $top, $bottom ) { + background: $top; + background: -moz-linear-gradient( left, $top 0%, $bottom 100% ); + background: -webkit-gradient( linear, left top, right top, color-stop(0%,$top), color-stop(100%,$bottom) ); + background: -webkit-linear-gradient( left, $top 0%, $bottom 100% ); + background: -o-linear-gradient( left, $top 0%, $bottom 100% ); + background: -ms-linear-gradient( left, $top 0%, $bottom 100% ); + background: linear-gradient( left, $top 0%, $bottom 100% ); +} + +@mixin radial-gradient( $outer, $inner, $type: circle ) { + background: $outer; + background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) ); + background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: radial-gradient( center, $type cover, $inner 0%, $outer 100% ); +} + +@mixin light-bg-text-color( $color ) { + section.has-light-background { + &, h1, h2, h3, h4, h5, h6 { + color: $color; + } + } +} + +@mixin dark-bg-text-color( $color ) { + section.has-dark-background { + &, h1, h2, h3, h4, h5, h6 { + color: $color; + } + } +} + +// quarto-scss-analysis-annotation { "origin": "'mixins' section from Quarto" } + + +@mixin shift_to_dark($property, $colorDark, $colorLight) { + @if ( + quarto-color.blackness($backgroundColor) > $code-block-theme-dark-threshhold + ) { + #{$property}: $colorDark; + } @else { + #{$property}: $colorLight; + } +} + +// Make the font size smaller by a factor of $times +// Useful for font-size defined in px inside smaller font size controled by em +// as they would not be impacted by the smaller font size +@mixin make-smaller-font-size($element, $times: 1) { + font-size: calc( + #{$element} * #{quarto-math.pow($presentation-font-smaller, $times)} + ); +} + +// Undo the smaller font size +// Useful for font-size in em already that should not be impacted by smaller font size controled by em +@mixin undo-smaller-font-size($element) { + font-size: calc(#{$element} / #{$presentation-font-smaller}); +} + +// -- START setting.scss -- + +// Generates the presentation background, can be overridden +// to return a background image or gradient +@mixin bodyBackground() { + background: $backgroundColor; +} + +// -- END setting.scss -- + + +// quarto-scss-analysis-annotation { "origin": "'mixins' section from user-defined SCSS" } + + + +// quarto-scss-analysis-annotation { "origin": "'rules' section from format" } + +// Base theme template for reveal.js + +/********************************************* + * GLOBAL STYLES + *********************************************/ + +@import "./exposer"; + +.reveal-viewport { + @include bodyBackground(); + background-color: var(--r-background-color); +} + +.reveal { + font-family: var(--r-main-font); + font-size: var(--r-main-font-size); + font-weight: normal; + color: var(--r-main-color); +} + +.reveal ::selection { + color: var(--r-selection-color); + background: var(--r-selection-background-color); + text-shadow: none; +} + +.reveal ::-moz-selection { + color: var(--r-selection-color); + background: var(--r-selection-background-color); + text-shadow: none; +} + +.reveal .slides section, +.reveal .slides section>section { + line-height: 1.3; + font-weight: inherit; +} + +/********************************************* + * HEADERS + *********************************************/ + +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: var(--r-heading-margin); + color: var(--r-heading-color); + + font-family: var(--r-heading-font); + font-weight: var(--r-heading-font-weight); + line-height: var(--r-heading-line-height); + letter-spacing: var(--r-heading-letter-spacing); + + text-transform: var(--r-heading-text-transform); + text-shadow: var(--r-heading-text-shadow); + + word-wrap: break-word; +} + +.reveal h1 {font-size: var(--r-heading1-size); } +.reveal h2 {font-size: var(--r-heading2-size); } +.reveal h3 {font-size: var(--r-heading3-size); } +.reveal h4 {font-size: var(--r-heading4-size); } + +.reveal h1 { + text-shadow: var(--r-heading1-text-shadow); +} + + +/********************************************* + * OTHER + *********************************************/ + +.reveal p { + margin: var(--r-block-margin) 0; + line-height: 1.3; +} + +/* Remove trailing margins after titles */ +.reveal h1:last-child, +.reveal h2:last-child, +.reveal h3:last-child, +.reveal h4:last-child, +.reveal h5:last-child, +.reveal h6:last-child { + margin-bottom: 0; +} + +/* Ensure certain elements are never larger than the slide itself */ +.reveal img, +.reveal video, +.reveal iframe { + max-width: 95%; + max-height: 95%; +} +.reveal strong, +.reveal b { + font-weight: bold; +} + +.reveal em { + font-style: italic; +} + +.reveal ol, +.reveal dl, +.reveal ul { + display: inline-block; + + text-align: left; + margin: 0 0 0 1em; +} + +.reveal ol { + list-style-type: decimal; +} + +.reveal ul { + list-style-type: disc; +} + +.reveal ul ul { + list-style-type: square; +} + +.reveal ul ul ul { + list-style-type: circle; +} + +.reveal ul ul, +.reveal ul ol, +.reveal ol ol, +.reveal ol ul { + display: block; + margin-left: 40px; +} + +.reveal dt { + font-weight: bold; +} + +.reveal dd { + margin-left: 40px; +} + +.reveal blockquote { + display: block; + position: relative; + width: 70%; + margin: var(--r-block-margin) auto; + padding: 5px; + + font-style: italic; + background: rgba(255, 255, 255, 0.05); + box-shadow: 0px 0px 2px rgba(0,0,0,0.2); +} + .reveal blockquote p:first-child, + .reveal blockquote p:last-child { + display: inline-block; + } + +.reveal q { + font-style: italic; +} + +.reveal pre { + display: block; + position: relative; + width: 90%; + margin: var(--r-block-margin) auto; + + text-align: left; + font-size: 0.55em; + font-family: var(--r-code-font); + line-height: 1.2em; + + word-wrap: break-word; + + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15); +} + +.reveal code { + font-family: var(--r-code-font); + text-transform: none; + tab-size: 2; +} + +.reveal pre code { + display: block; + padding: 5px; + overflow: auto; + max-height: 400px; + word-wrap: normal; +} + +.reveal .code-wrapper { + white-space: normal; +} + +.reveal .code-wrapper code { + white-space: pre; +} + +.reveal table { + margin: auto; + border-collapse: collapse; + border-spacing: 0; +} + +.reveal table th { + font-weight: bold; +} + +.reveal table th, +.reveal table td { + text-align: left; + padding: 0.2em 0.5em 0.2em 0.5em; + border-bottom: 1px solid; +} + +.reveal table th[align="center"], +.reveal table td[align="center"] { + text-align: center; +} + +.reveal table th[align="right"], +.reveal table td[align="right"] { + text-align: right; +} + +.reveal table tbody tr:last-child th, +.reveal table tbody tr:last-child td { + border-bottom: none; +} + +.reveal sup { + vertical-align: super; + font-size: smaller; +} +.reveal sub { + vertical-align: sub; + font-size: smaller; +} + +.reveal small { + display: inline-block; + font-size: 0.6em; + line-height: 1.2em; + vertical-align: top; +} + +.reveal small * { + vertical-align: top; +} + +.reveal img { + margin: var(--r-block-margin) 0; +} + + +/********************************************* + * LINKS + *********************************************/ + +.reveal a { + color: var(--r-link-color); + text-decoration: none; + transition: color .15s ease; +} + .reveal a:hover { + color: var(--r-link-color-hover); + text-shadow: none; + border: none; + } + +.reveal .roll span:after { + color: #fff; + // background: darken( var(--r-link-color), 15% ); + background: var(--r-link-color-dark); + +} + + +/********************************************* + * Frame helper + *********************************************/ + +.reveal .r-frame { + border: 4px solid var(--r-main-color); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); +} + +.reveal a .r-frame { + transition: all .15s linear; +} + +.reveal a:hover .r-frame { + border-color: var(--r-link-color); + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); +} + + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ + +.reveal .controls { + color: var(--r-link-color); +} + + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + background: rgba(0,0,0,0.2); + color: var(--r-link-color); +} + +/********************************************* + * PRINT BACKGROUND + *********************************************/ + @media print { + .backgrounds { + background-color: var(--r-background-color); + } +} + + +// quarto-scss-analysis-annotation { "origin": "'rules' section from Quarto" } + +// floating + +.top-right { + position: absolute; + top: 1em; + right: 1em; +} + +// hidden + +// https://github.com/quarto-dev/quarto-cli/issues/5403#issuecomment-1533791947 +.visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: auto; + margin: 0; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + white-space: nowrap; +} + +.hidden { + display: none !important; +} + +.zindex-bottom { + z-index: -1 !important; +} + +// layout and figures + +figure.figure { + display: block; +} + +.quarto-layout-panel { + margin-bottom: 1em; +} + +.quarto-layout-panel > figure { + width: 100%; +} +.quarto-layout-panel > figure > figcaption, +.quarto-layout-panel > .panel-caption { + margin-top: 10pt; +} + +.quarto-layout-panel > .table-caption { + margin-top: 0px; +} + +.table-caption p { + margin-bottom: 0.5em; +} + +.quarto-layout-row { + display: flex; + flex-direction: row; + align-items: flex-start; +} +.quarto-layout-valign-top { + align-items: flex-start; +} +.quarto-layout-valign-bottom { + align-items: flex-end; +} +.quarto-layout-valign-center { + align-items: center; +} +.quarto-layout-cell { + position: relative; + margin-right: 20px; +} +.quarto-layout-cell:last-child { + margin-right: 0; +} +.quarto-layout-cell figure, +.quarto-layout-cell > p { + margin: 0.2em; +} +.quarto-layout-cell img { + max-width: 100%; +} +.quarto-layout-cell .html-widget { + width: 100% !important; +} +.quarto-layout-cell div figure p { + margin: 0; +} +.quarto-layout-cell figure { + display: block; + margin-inline-start: 0; + margin-inline-end: 0; +} +.quarto-layout-cell table { + display: inline-table; +} +.quarto-layout-cell-subref figcaption, +figure .quarto-layout-row figure figcaption { + text-align: center; + font-style: italic; +} +.quarto-figure { + position: relative; + margin-bottom: 1em; +} + +.quarto-figure > figure { + width: 100%; + margin-bottom: 0; +} +.quarto-figure-left > figure > p, +.quarto-figure-left > figure > div /* for mermaid and dot diagrams */ { + text-align: left; +} +.quarto-figure-center > figure > p, +.quarto-figure-center > figure > div /* for mermaid and dot diagrams */ { + text-align: center; +} +.quarto-figure-right > figure > p, +.quarto-figure-right > figure > div /* for mermaid and dot diagrams */ { + text-align: right; +} + +.quarto-figure > figure > div.cell-annotation, +.quarto-figure > figure > div code { + text-align: left; /* override align center for code blocks */ +} + +figure > p:empty { + display: none; +} +figure > p:first-child { + margin-top: 0; + margin-bottom: 0; +} + +figure > figcaption.quarto-float-caption-bottom { + margin-bottom: 0.5em; +} +figure > figcaption.quarto-float-caption-top { + margin-top: 0.5em; +} + +// anchor + +// anchor js + +div[id^="tbl-"] { + position: relative; +} + +.quarto-figure > .anchorjs-link { + position: absolute; + top: 0.6em; + right: 0.5em; +} + +div[id^="tbl-"] > .anchorjs-link { + position: absolute; + top: 0.7em; + right: 0.3em; +} + +/* workaround for anchorjs not hitting on generic :hover selector */ +.quarto-figure:hover > .anchorjs-link, +div[id^="tbl-"]:hover > .anchorjs-link, +h2:hover > .anchorjs-link, +h3:hover > .anchorjs-link, +h4:hover > .anchorjs-link, +h5:hover > .anchorjs-link, +h6:hover > .anchorjs-link, +.reveal-anchorjs-link > .anchorjs-link { + opacity: 1; +} + +#title-block-header { + margin-block-end: 1rem; + position: relative; + margin-top: -1px; // Chrome draws 1px white line between navbar and title block +} + +#title-block-header .abstract { + margin-block-start: 1rem; +} + +#title-block-header .abstract .abstract-title { + font-weight: 600; +} + +#title-block-header a { + text-decoration: none; +} + +#title-block-header .author, +#title-block-header .date, +#title-block-header .doi { + margin-block-end: 0.2rem; +} + +#title-block-header .quarto-title-block > div { + display: flex; +} + +#title-block-header .quarto-title-block > div > h1 { + flex-grow: 1; +} + +#title-block-header .quarto-title-block > div > button { + flex-shrink: 0; + height: 2.25rem; + margin-top: 0; +} + +#title-block-header .quarto-title-block > div > button { + @if mixin-exists(media-breakpoint-up) { + @include media-breakpoint-up(lg) { + margin-top: 5px; + } + } +} + +// (Remove bottom margin from paragraphs in table headers) +tr.header > th > p:last-of-type { + margin-bottom: 0px; +} + +table, +table.table { + margin-top: 0.5rem; + margin-bottom: 0.5rem; +} + +caption, +.table-caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + text-align: center; +} + +figure.quarto-float-tbl figcaption.quarto-float-caption-top { + margin-top: 0.5rem; + margin-bottom: 0.25rem; + text-align: center; +} + +figure.quarto-float-tbl figcaption.quarto-float-caption-bottom { + padding-top: 0.25rem; + margin-bottom: 0.5rem; + text-align: center; +} + +// utterances +.utterances { + max-width: none; + margin-left: -8px; +} + +// iframe +iframe { + margin-bottom: 1em; +} + +// details +details { + margin-bottom: 1em; +} +details[show] { + margin-bottom: 0; +} + +details > summary { + @if variable-exists(text-muted) { + color: $text-muted; + } +} + +details > summary > p:only-child { + display: inline; +} + +// codeCopy +pre.sourceCode, +code.sourceCode { + position: relative; +} + +// Inline code should wrap +// See https://github.com/quarto-dev/quarto-cli/issues/2649 +dd code:not(.sourceCode), +p code:not(.sourceCode) { + white-space: pre-wrap; +} + +// default to scrolling output rather than wrapping, since +// multi-column tabular output (very common for R & Python) is +// unreadable when wrapped. +code { + white-space: pre; +} +@media print { + code { + white-space: pre-wrap; + } +} +pre > code { + display: block; +} + +pre > code.sourceCode { + white-space: $code-white-space; +} + +pre > code.sourceCode > span > a:first-child::before { + text-decoration: none; +} + +pre.code-overflow-wrap > code.sourceCode { + white-space: pre-wrap; +} + +pre.code-overflow-scroll > code.sourceCode { + white-space: pre; +} + +// code linking (pkgdown style) +code a:any-link { + color: inherit; + text-decoration: none; +} +code a:hover { + color: inherit; + text-decoration: underline; +} + +// task lists +ul.task-list { + padding-left: 1em; +} + +// tippy + +[data-tippy-root] { + display: inline-block; +} + +.tippy-content .footnote-back { + display: none; +} + +.footnote-back { + margin-left: 0.2em; +} + +.tippy-content { + overflow-x: auto; +} + +// embedded source code +.quarto-embedded-source-code { + display: none; +} + +// unresolved crossrefs +.quarto-unresolved-ref { + font-weight: 600; +} + +// html cover image injection +.quarto-cover-image { + max-width: 35%; + float: right; + margin-left: 30px; +} + +// provide margin below jupyter widgets +.cell-output-display .widget-subarea { + margin-bottom: 1em; +} + +// fix for selectize inputs getting their contents clipped +// this also works for knitr sql cells (see github issue #3497) +.cell-output-display:not(.no-overflow-x), +.knitsql-table:not(.no-overflow-x) { + overflow-x: auto; +} + +.panel-input { + margin-bottom: 1em; +} + +.panel-input > div, +.panel-input > div > div { + display: inline-block; + vertical-align: top; + padding-right: 12px; +} + +.panel-input > p:last-child { + margin-bottom: 0; +} + +.layout-sidebar { + margin-bottom: 1em; +} + +.layout-sidebar .tab-content { + border: none; +} + +.tab-content > .page-columns.active { + display: grid; +} + +// default styling for .code-preview=".." iframes +div.sourceCode > iframe { + width: 100%; + height: 300px; + + // this negative-margin hack works around the rendering issue with + // iframes and parent elements with rounded corners if the border + // radius for (eg) div.sourceCode is changed, this is likely going + // to need changing as well. + @if variable-exists(code-preview-margin-bottom) { + margin-bottom: $code-preview-margin-bottom; + } @else { + margin-bottom: -0.5em; + } + @if variable-exists(code-preview-border-color) { + border: $code-preview-border-color; + } +} + +// link styling +a { + text-underline-offset: 3px; +} + +/* Callout styling */ + +.callout pre.sourceCode { + padding-left: 0; +} + +// ansi escaping +div.ansi-escaped-output { + font-family: monospace; + display: block; +} + +/*! +* +* ansi colors from IPython notebook's +* +* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since +* that seems to be what ansi_up emits +* +*/ +/* CSS font colors for translated ANSI escape sequences */ +/* The color values are a mix of + http://www.xcolors.net/dl/baskerville-ivorylight and + http://www.xcolors.net/dl/euphrasia */ +.ansi-black-fg { + color: #3e424d; +} +.ansi-black-bg { + background-color: #3e424d; +} +.ansi-black-intense-black, +.ansi-bright-black-fg { + color: #282c36; +} +.ansi-black-intense-black, +.ansi-bright-black-bg { + background-color: #282c36; +} +.ansi-red-fg { + color: #e75c58; +} +.ansi-red-bg { + background-color: #e75c58; +} +.ansi-red-intense-red, +.ansi-bright-red-fg { + color: #b22b31; +} +.ansi-red-intense-red, +.ansi-bright-red-bg { + background-color: #b22b31; +} +.ansi-green-fg { + color: #00a250; +} +.ansi-green-bg { + background-color: #00a250; +} +.ansi-green-intense-green, +.ansi-bright-green-fg { + color: #007427; +} +.ansi-green-intense-green, +.ansi-bright-green-bg { + background-color: #007427; +} +.ansi-yellow-fg { + color: #ddb62b; +} +.ansi-yellow-bg { + background-color: #ddb62b; +} +.ansi-yellow-intense-yellow, +.ansi-bright-yellow-fg { + color: #b27d12; +} +.ansi-yellow-intense-yellow, +.ansi-bright-yellow-bg { + background-color: #b27d12; +} +.ansi-blue-fg { + color: #208ffb; +} +.ansi-blue-bg { + background-color: #208ffb; +} +.ansi-blue-intense-blue, +.ansi-bright-blue-fg { + color: #0065ca; +} +.ansi-blue-intense-blue, +.ansi-bright-blue-bg { + background-color: #0065ca; +} +.ansi-magenta-fg { + color: #d160c4; +} +.ansi-magenta-bg { + background-color: #d160c4; +} +.ansi-magenta-intense-magenta, +.ansi-bright-magenta-fg { + color: #a03196; +} +.ansi-magenta-intense-magenta, +.ansi-bright-magenta-bg { + background-color: #a03196; +} +.ansi-cyan-fg { + color: #60c6c8; +} +.ansi-cyan-bg { + background-color: #60c6c8; +} +.ansi-cyan-intense-cyan, +.ansi-bright-cyan-fg { + color: #258f8f; +} +.ansi-cyan-intense-cyan, +.ansi-bright-cyan-bg { + background-color: #258f8f; +} +.ansi-white-fg { + color: #c5c1b4; +} +.ansi-white-bg { + background-color: #c5c1b4; +} +.ansi-white-intense-white, +.ansi-bright-white-fg { + color: #a1a6b2; +} +.ansi-white-intense-white, +.ansi-bright-white-bg { + background-color: #a1a6b2; +} +.ansi-default-inverse-fg { + color: #ffffff; +} +.ansi-default-inverse-bg { + background-color: #000000; +} +.ansi-bold { + font-weight: bold; +} +.ansi-underline { + text-decoration: underline; +} + +:root { + --quarto-body-bg: #{$body-bg}; + --quarto-body-color: #{$body-color}; + --quarto-text-muted: #{$text-muted}; + --quarto-border-color: #{$table-border-color}; + --quarto-border-width: #{$border-width}; + @if not variable-exists(enable-rounded) or $enable-rounded == true { + --quarto-border-radius: #{$border-radius}; + } +} + +/* rules to support GT table styling */ +table.gt_table { + color: var(--quarto-body-color); + font-size: 1em; + width: 100%; // to match other table styling + background-color: transparent; + border-top-width: inherit; + border-bottom-width: inherit; + border-color: var(--quarto-border-color); +} + +table.gt_table th.gt_column_spanner_outer { + color: var(--quarto-body-color); + background-color: transparent; + border-top-width: inherit; + border-bottom-width: inherit; + border-color: var(--quarto-border-color); +} + +table.gt_table th.gt_col_heading { + color: var(--quarto-body-color); + font-weight: bold; + background-color: transparent; +} + +table.gt_table thead.gt_col_headings { + border-bottom: 1px solid currentColor; + border-top-width: inherit; + border-top-color: var(--quarto-border-color); +} + +table.gt_table thead.gt_col_headings:not(:first-child) { + border-top-width: 1px; + border-top-color: var(--quarto-border-color); +} + +table.gt_table td.gt_row { + border-bottom-width: 1px; + border-bottom-color: var(--quarto-border-color); + border-top-width: 0px; +} + +table.gt_table tbody.gt_table_body { + border-top-width: 1px; + border-bottom-width: 1px; + border-bottom-color: var(--quarto-border-color); + border-top-color: currentColor; +} + +/* restore previous pandoc columns behavior + (too many reports of slide layout breaking) + see https://github.com/jgm/pandoc/pull/8237 +*/ +div.columns { + display: initial; + gap: initial; +} +div.column { + display: inline-block; + overflow-x: initial; + vertical-align: top; + width: 50%; +} + +// Code Annotation LayoutBoot +.code-annotation-tip-content { + word-wrap: break-word; +} + +.code-annotation-container-hidden { + display: none !important; +} + +dl.code-annotation-container-grid { + display: grid; + grid-template-columns: min-content auto; + dt { + grid-column: 1; + } + dd { + grid-column: 2; + } +} + +pre.sourceCode.code-annotation-code { + padding-right: 0; +} + +code.sourceCode .code-annotation-anchor { + z-index: 100; + position: relative; + float: right; + background-color: transparent; +} + +// Add a bit of margin to the right of a checkbox +// https://github.com/quarto-dev/quarto-cli/issues/6627 +input[type="checkbox"] { + margin-right: 0.5ch; +} + +// Mermaid Theming +// if none come from theme, we need these +$body-color: #222 !default; +$body-bg: #fff !default; +$primary: #468 !default; +$secondary: #999 !default; +$font-family-sans-serif: sans-serif !default; +$font-weight-base: 400 !default; + +/* SCSS variables + + These are documented in quarto-cli/quarto-web:docs/authoring/_mermaid-theming.qmd + + Make sure to update the docs if you change these. +*/ +$mermaid-bg-color: $body-bg !default; +$mermaid-edge-color: $secondary !default; +$mermaid-node-fg-color: $body-color !default; +$mermaid-fg-color: $body-color !default; +$mermaid-fg-color--lighter: lighten($body-color, 10%) !default; +$mermaid-fg-color--lightest: lighten($body-color, 20%) !default; +$mermaid-font-family: $font-family-sans-serif !default; +$mermaid-font-weight: $font-weight-base !default; +$mermaid-label-bg-color: $body-bg !default; +$mermaid-label-fg-color: $primary !default; +$mermaid-node-bg-color: rgba($primary, 0.1) !default; +$mermaid-node-fg-color: $primary !default; + +/* CSS variables */ +:root { + --mermaid-bg-color: #{$mermaid-bg-color}; + --mermaid-edge-color: #{$mermaid-edge-color}; + --mermaid-node-fg-color: #{$mermaid-node-fg-color}; + --mermaid-fg-color: #{$mermaid-fg-color}; + --mermaid-fg-color--lighter: #{$mermaid-fg-color--lighter}; + --mermaid-fg-color--lightest: #{$mermaid-fg-color--lightest}; + --mermaid-font-family: #{$mermaid-font-family}; + --mermaid-label-bg-color: #{$mermaid-label-bg-color}; + --mermaid-label-fg-color: #{$mermaid-label-fg-color}; + --mermaid-node-bg-color: #{$mermaid-node-bg-color}; + --mermaid-node-fg-color: #{$mermaid-node-fg-color}; +} + +@media print { + :root { + font-size: 11pt; + } + #quarto-sidebar, + #TOC, + .nav-page { + display: none; + } + .page-columns .content { + grid-column-start: page-start; + } + .fixed-top { + position: relative; + } + .panel-caption, + .figure-caption, + figcaption { + color: #666; + } +} + +.code-copy-button { + position: absolute; + top: 0; + right: 0; + border: 0; + margin-top: 5px; + margin-right: 5px; + background-color: transparent; + z-index: 3; +} + +.code-copy-button-tooltip { + font-size: 0.75em; +} + +#{$code-copy-selector} .code-copy-button > .bi::before { + display: inline-block; + height: 1rem; + width: 1rem; + content: ""; + vertical-align: -0.125em; + @if variable-exists(btn-code-copy-color) { + background-image: url('data:image/svg+xml,'); + } @else { + background-image: url('data:image/svg+xml,'); + } + background-repeat: no-repeat; + background-size: 1rem 1rem; +} + +#{$code-copy-selector} .code-copy-button-checked > .bi::before { + @if variable-exists(btn-code-copy-color) { + background-image: url('data:image/svg+xml,'); + } @else { + background-image: url('data:image/svg+xml,'); + } +} + +@if variable-exists(btn-code-copy-color-active) { + #{$code-copy-selector} .code-copy-button:hover > .bi::before { + background-image: url('data:image/svg+xml,'); + } + #{$code-copy-selector} .code-copy-button-checked:hover > .bi::before { + background-image: url('data:image/svg+xml,'); + } +} + +$body-bg: #fff !default; +$tabset-border-color: rgb(222, 226, 230) !default; + +.panel-tabset [role="tablist"] { + border-bottom: 1px solid $tabset-border-color; + list-style: none; + margin: 0; + padding: 0; + width: 100%; +} + +.panel-tabset [role="tablist"] * { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +@media (min-width: 30em) { + .panel-tabset [role="tablist"] li { + display: inline-block; + } +} + +.panel-tabset [role="tab"] { + border: 1px solid transparent; + border-top-color: $tabset-border-color; + display: block; + padding: 0.5em 1em; + text-decoration: none; +} + +@media (min-width: 30em) { + .panel-tabset [role="tab"] { + border-top-color: transparent; + display: inline-block; + margin-bottom: -1px; + } +} + +.panel-tabset [role="tab"][aria-selected="true"] { + background-color: $tabset-border-color; +} + +@media (min-width: 30em) { + .panel-tabset [role="tab"][aria-selected="true"] { + background-color: transparent; + border: 1px solid $tabset-border-color; + border-bottom-color: $body-bg; + } +} + +@media (min-width: 30em) { + .panel-tabset [role="tab"]:hover:not([aria-selected="true"]) { + border: 1px solid $tabset-border-color; + } +} + +.code-with-filename .code-with-filename-file { + margin-bottom: 0; + padding-bottom: 2px; + padding-top: 2px; + padding-left: 0.7em; + border: var(--quarto-border-width) solid var(--quarto-border-color); + border-radius: var(--quarto-border-radius); + border-bottom: 0; + border-bottom-left-radius: 0%; + border-bottom-right-radius: 0%; +} + +.code-with-filename div.sourceCode, +.reveal .code-with-filename div.sourceCode { + margin-top: 0; + border-top-left-radius: 0%; + border-top-right-radius: 0%; +} + +.code-with-filename .code-with-filename-file pre { + margin-bottom: 0; +} + +.code-with-filename .code-with-filename-file { + background-color: rgba(219, 219, 219, 0.8); +} + +.quarto-dark .code-with-filename .code-with-filename-file { + background-color: #555; +} + +.code-with-filename .code-with-filename-file strong { + font-weight: 400; +} + + +.reveal.center .slide aside, +.reveal.center .slide div.aside { + position: initial; +} + +section.has-light-background { + &, + h1, + h2, + h3, + h4, + h5, + h6 { + color: $light-bg-text-color; + } + a, + a:hover { + color: $light-bg-link-color; + } + code { + color: $light-bg-code-color; + } +} + +section.has-dark-background { + &, + h1, + h2, + h3, + h4, + h5, + h6 { + color: $dark-bg-text-color; + } + a, + a:hover { + color: $dark-bg-link-color; + } + code { + color: $dark-bg-code-color; + } +} + +#title-slide, +/* for when hash-type: number as identifier removed*/ +div.reveal div.slides section.quarto-title-block { + text-align: $presentation-title-slide-text-align; + .subtitle { + margin-bottom: 2.5rem; + } +} + +.reveal .slides { + text-align: $reveal-slide-text-align; +} + +.reveal .title-slide h1 { + font-size: $revealjs-h2-font-size; +} + +.reveal[data-navigation-mode="linear"] .title-slide h1 { + font-size: $revealjs-h1-font-size; +} + +.reveal div.sourceCode { + border: $border-width solid $code-block-border-color; + border-radius: $border-radius; +} + +.reveal pre { + width: 100%; + box-shadow: none; + background-color: $code-block-bg; + border: none; + margin: 0; + font-size: $revealjs-code-block-font-size; + line-height: $code-block-line-height; + font-family: $font-family-monospace-block; + + code { + background-color: $body-bg; // Insure we color output and code cell differently + font-size: inherit; + color: $code-block-color; + font-family: inherit; + } + + &.sourceCode code { + color: $code-block-color; + font-size: inherit; + background-color: inherit; + white-space: pre; + font-family: inherit; + padding: 6px 9px; + max-height: $code-block-height; + } +} + +// Inside code-file-name div, we want to use the same background color as decorated codeblock header +// https://github.com/quarto-dev/quarto-cli/issues/9560 +.reveal .code-with-filename .code-with-filename-file pre { + background-color: unset; +} + +.reveal code { + color: $code-color; + font-size: $revealjs-code-inline-font-size; + background-color: $code-bg; + white-space: pre-wrap; + font-family: $font-family-monospace-inline; +} + +.reveal .column-output-location { + display: flex; + align-items: stretch; +} + +.reveal .column-output-location .column:first-of-type div.sourceCode { + height: 100%; + background-color: $code-block-bg; +} + +.reveal blockquote { + display: block; + position: relative; + color: $border-color; + width: unset; + margin: var(--r-block-margin) auto; + padding: 0.625rem 1.75rem; + border-left: 0.25rem solid $text-muted; + font-style: normal; + background: none; + box-shadow: none; +} +.reveal blockquote p:first-child, +.reveal blockquote p:last-child { + display: block; +} + +.reveal .slide aside, +.reveal .slide div.aside { + position: absolute; + bottom: 20px; + font-size: #{$presentation-font-smaller}em; + color: $text-muted; +} + +.reveal .slide sup { + font-size: #{$presentation-font-smaller}em; +} + +.reveal .slide.scrollable aside, +.reveal .slide.scrollable div.aside { + position: relative; + margin-top: 1em; +} + +.reveal .slide aside .aside-footnotes { + margin-bottom: 0; +} + +.reveal .slide aside .aside-footnotes li:first-of-type { + margin-top: 0; +} + +$panel-sidebar-width: 270px; +$panel-sidebar-padding: 0.5em; + +.reveal .layout-sidebar { + display: flex; + width: 100%; + margin-top: 0.8em; +} + +.reveal .layout-sidebar .panel-sidebar { + width: $panel-sidebar-width; +} + +.reveal .layout-sidebar-left .panel-sidebar { + margin-right: calc(#{$panel-sidebar-padding} * 2); +} + +.reveal .layout-sidebar-right .panel-sidebar { + margin-left: calc(#{$panel-sidebar-padding} * 2); +} + +.reveal .layout-sidebar .panel-fill, +.reveal .layout-sidebar .panel-center, +.reveal .layout-sidebar .panel-tabset { + flex: 1; +} + +.reveal .panel-input, +.reveal .panel-sidebar { + font-size: 0.5em; + padding: $panel-sidebar-padding; + border-style: solid; + border-color: $input-panel-border-color; + border-width: $input-panel-border-width; + border-radius: $input-panel-border-radius; + background-color: $input-panel-bg; +} + +.reveal .panel-sidebar :first-child, +.reveal .panel-fill :first-child { + margin-top: 0; +} + +.reveal .panel-sidebar :last-child, +.reveal .panel-fill :last-child { + margin-bottom: 0; +} + +.panel-input > div, +.panel-input > div > div { + vertical-align: middle; + padding-right: 1em; +} + +.reveal p, +.reveal .slides section, +.reveal .slides section > section { + line-height: $revealjs-line-height; +} + +// Smaller font size logic +.reveal { + // When smaller is set globally + &.smaller { + .slides { + // We make the all slide font-size smaller by a factor of $presentation-font-smaller + section { + font-size: #{$presentation-font-smaller}em; + + // avoid applying twice the reduction when using nested section + section { + font-size: inherit; + } + } + + // But we don't want headers to change size and they are in em + h1 { + @include undo-smaller-font-size($revealjs-h1-font-size); + } + h2 { + @include undo-smaller-font-size($revealjs-h2-font-size); + } + h3 { + @include undo-smaller-font-size($revealjs-h3-font-size); + } + } + } + + .slides section { + // when smaller is set on slide + &.smaller { + font-size: #{$presentation-font-smaller}em; + + // But we don't want headers to change size and they are in em + h1 { + @include undo-smaller-font-size($revealjs-h1-font-size); + } + h2 { + @include undo-smaller-font-size($revealjs-h2-font-size); + } + h3 { + @include undo-smaller-font-size($revealjs-h3-font-size); + } + } + + // On callout we want to make the font-size smaller too + div.callout { + font-size: #{$presentation-font-smaller}em; + + // But we don't want headers to change size and they are in em + h1 { + @include undo-smaller-font-size($revealjs-h1-font-size); + } + h2 { + @include undo-smaller-font-size($revealjs-h2-font-size); + } + h3 { + @include undo-smaller-font-size($revealjs-h3-font-size); + } + } + } +} + +.reveal .columns > .column > :not(ul, ol) { + margin-left: 0.25rem; + margin-right: 0.25rem; +} + +.reveal .columns > .column:first-child > :not(ul, ol) { + margin-right: 0.5rem; + margin-left: 0; +} +.reveal .columns > .column:last-child > :not(ul, ol) { + margin-right: 0; + margin-left: 0.5rem; +} + +.reveal .slide-number { + color: $linkColorHover; + background-color: $body-bg; +} + +.reveal .footer { + color: $text-muted; + + a { + color: $linkColor; + } + + &.has-dark-background { + color: quarto-color.scale($dark-bg-text-color, $whiteness: 30%); + + a { + color: quarto-color.scale($dark-bg-link-color, $whiteness: 30%); + } + } + + &.has-light-background { + color: quarto-color.scale($light-bg-text-color, $whiteness: 30%); + + a { + color: quarto-color.scale($light-bg-link-color, $whiteness: 30%); + } + } +} + +.reveal .slide-number { + color: $text-muted; + + &.has-dark-background { + color: quarto-color.scale($dark-bg-text-color, $whiteness: 30%); + } + + &.has-light-background { + color: quarto-color.scale($light-bg-text-color, $whiteness: 30%); + } +} + +// handle caption for figures +.reveal .slide { + figure > figcaption, + img.stretch + p.caption, + img.r-stretch + p.caption { + font-size: #{$presentation-font-smaller}em; + } +} + +@media screen and (min-width: 500px) { + $arrow-spacing: 0.2em; + $control-arrow-spacing: 1.4em; + + .reveal .controls[data-controls-layout="edges"] .navigate-left { + left: $arrow-spacing; + } + + .reveal .controls[data-controls-layout="edges"] .navigate-right { + right: $arrow-spacing; + } + + .reveal .controls[data-controls-layout="edges"] .navigate-up { + top: $arrow-spacing * 2; + } + + .reveal .controls[data-controls-layout="edges"] .navigate-down { + bottom: $arrow-spacing - $control-arrow-spacing + 3.5em; + } +} + +.tippy-box[data-theme~="light-border"] { + background-color: $backgroundColor; + color: $mainColor; + border-radius: $border-radius; + border: solid $border-width $border-color; + font-size: 0.6em; +} + +.tippy-box[data-theme~="light-border"] .tippy-arrow { + color: $border-color; +} + +.tippy-box[data-placement^="bottom"] > .tippy-content { + padding: 7px 10px; + z-index: 1; +} + +.reveal .panel-tabset [role="tab"] { + padding: 0.25em 0.7em; +} + +.reveal .slide-menu-button .fa-bars::before { + background-image: url('data:image/svg+xml,'); +} + +.reveal .slide-chalkboard-buttons .fa-easel2::before { + background-image: url('data:image/svg+xml,'); +} + +.reveal .slide-chalkboard-buttons .fa-brush::before { + background-image: url('data:image/svg+xml,'); +} + +// This is a sentinel value that renderers can use to determine +// whether the theme is dark or light +@if ( + quarto-color.blackness($backgroundColor) > $code-block-theme-dark-threshhold +) { + /*! dark */ +} @else { + /*! light */ +} + +/* override theme.scss style for the default styles + + Note the need for both the case sensitive flag and the + case-oblivious selectors. This is a workaround for what's + apparently a Chrome and Safari bug: + + https://github.com/quarto-dev/quarto-cli/issues/1902#issuecomment-1219783059 + */ + +.reveal ol[type="a"] { + list-style-type: lower-alpha; +} + +.reveal ol[type="a" s] { + list-style-type: lower-alpha; +} + +.reveal ol[type="A" s] { + list-style-type: upper-alpha; +} + +.reveal ol[type="i"] { + list-style-type: lower-roman; +} + +.reveal ol[type="i" s] { + list-style-type: lower-roman; +} + +.reveal ol[type="I" s] { + list-style-type: upper-roman; +} + +.reveal ol[type="1"] { + list-style-type: decimal; +} + +// https://github.com/quarto-dev/quarto-cli/issues/2834 +// temporary workaround while we come up with a pure CSS solution + +.reveal ul.task-list { + list-style: none; +} +.reveal ul.task-list li input[type="checkbox"] { + width: 2em; + height: 2em; + margin: 0 1em 0.5em -1.6em; + vertical-align: middle; +} + +// https://github.com/quarto-dev/quarto-cli/issues/3380 + +div.cell-output-display div.pagedtable-wrapper table.table { + font-size: 0.6em; +} + +.reveal .code-annotation-container-hidden { + display: none; +} + +.reveal code.sourceCode button.code-annotation-anchor, +.reveal code.sourceCode .code-annotation-anchor { + font-family: $font-family-monospace; + color: var(--quarto-hl-co-color); + border: solid var(--quarto-hl-co-color) 1px; + border-radius: 50%; + font-size: 0.7em; + line-height: 1.2em; + margin-top: 2px; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; +} + +.reveal code.sourceCode button.code-annotation-anchor { + cursor: pointer; +} + +.reveal code.sourceCode a.code-annotation-anchor { + text-align: center; + vertical-align: middle; + text-decoration: none; + cursor: default; + height: 1.2em; + width: 1.2em; +} + +.reveal code.sourceCode.fragment a.code-annotation-anchor { + left: auto; +} + +.reveal #code-annotation-line-highlight-gutter { + width: 100%; + border-top: solid var(--quarto-hl-co-color) 1px; + border-bottom: solid var(--quarto-hl-co-color) 1px; + z-index: 2; +} + +.reveal #code-annotation-line-highlight { + margin-left: -8em; + width: calc(100% + 4em); + border-top: solid var(--quarto-hl-co-color) 1px; + border-bottom: solid var(--quarto-hl-co-color) 1px; + z-index: 2; + margin-bottom: -2px; +} + +.reveal code.sourceCode .code-annotation-anchor.code-annotation-active { + background-color: var(--quarto-hl-normal-color, #aaaaaa); + border: solid var(--quarto-hl-normal-color, #aaaaaa) 1px; + color: rgb(red($code-block-bg), green($code-block-bg), blue($code-block-bg)); + font-weight: bolder; +} + +.reveal pre.code-annotation-code { + padding-top: 0; + padding-bottom: 0; + code { + z-index: 3; + padding-left: 0px; + } +} + +.reveal dl.code-annotation-container-grid { + margin-left: 0.1em; + dt { + margin-top: 0.65rem; + font-family: $font-family-monospace; + border: solid $body-color 1px; + border-radius: 50%; + height: 1.3em; + width: 1.3em; + line-height: 1.3em; + font-size: 0.5em; + text-align: center; + vertical-align: middle; + + text-decoration: none; + } + + dd { + margin-left: 0.25em; + } +} + +/* + + https://github.com/quarto-dev/quarto-cli/issues/4283 + + The trick itself is from here: + + https://stackoverflow.com/questions/8720931/can-css-detect-the-number-of-children-an-element-has + +*/ + +.reveal .scrollable ol li:first-child:nth-last-child(n + 10), +.reveal .scrollable ol li:first-child:nth-last-child(n + 10) ~ li { + margin-left: 1em; +} + +/* kbd rules */ + +kbd { + font-family: $font-family-monospace; + font-size: $kbd-font-size; + color: $kbd-color; + @include shift_to_dark( + "background-color", + shift-color($kbd-bg, 70%), + $kbd-bg + ); + border: 1px solid; + border-color: $code-block-border-color; + border-radius: 5px; + padding: $kbd-padding-y $kbd-padding-x; +} + +:root { + --r-inline-code-font: #{$font-family-monospace-inline}; + --r-block-code-font: #{$font-family-monospace-block}; + --r-inline-code-font-size: #{$revealjs-code-inline-font-size}; + --r-block-code-font-size: #{$revealjs-code-block-font-size}; +} + +// _brand.yml rules + +.reveal a { + font-weight: $link-weight; + background-color: $link-color-bg; + text-decoration: $link-decoration; +} + +/* Callout styles */ + +.reveal div.callout { + margin-top: $callout-margin-top; + margin-bottom: $callout-margin-bottom; + border-radius: $border-radius; + overflow-wrap: break-word; + + // Rules for both styles + &.callout-style-simple, + &.callout-style-default { + border-left: $callout-border-width solid #acacac; + border-right: solid 1px $table-border-color; + border-top: solid 1px $table-border-color; + border-bottom: solid 1px $table-border-color; + + div { + &.callout-body, + &.callout-title { + // Font size is inherited from the parent div.callout + // which is scaled down like .smaller + font-size: inherit; + border-bottom: none; + font-weight: 600; + } + + &.callout-title { + display: flex; + align-items: center; + + p { + margin-top: 0.5em; + margin-bottom: 0.5em; + color: var(--r-main-color); + } + } + } + + .callout-icon::before { + height: 1.25em; + width: 1.25em; + background-size: 1.25em 1.25em; + } + + &.callout-titled { + .callout-body { + > .callout-content { + > :last-child { + margin-bottom: var(--r-block-margin); + } + > :last-child:not(div.sourceCode) { + padding-bottom: 0.5rem; + margin-bottom: 0; + } + } + } + .callout-icon::before { + margin-top: 0.25em; + padding-right: 0.25em; + } + } + + &.no-icon::before { + display: none !important; + } + } + + // Apply only to simple callout style which could have + // - a title or not + // - an icon or not + &.callout-style-simple { + padding: 0em 0.5em; + display: flex; + + &.callout-titled { + .callout-body { + margin-top: 0.2em; + } + &:not(.no-icon) { + .callout-content { + padding-left: 1.6em; + } + } + .callout-content { + p { + margin-top: 0; + } + } + } + + &:not(.callout-titled) { + .callout-body { + display: flex; + } + .callout-icon::before { + margin-top: var(--r-block-margin); + padding-right: 0.5em; + } + .callout-body { + > .callout-content { + // Margin needs to be added when last child is div.sourceCode + // Other code cell border is mixed with callout border + > div.sourceCode:last-child { + margin-bottom: 1rem; + } + > :first-child { + margin-top: var(--r-block-margin); + } + } + } + } + + .callout-icon::before { + display: inline-block; + content: ""; + background-repeat: no-repeat; + } + + div { + &.callout-title { + opacity: 75%; + } + &.callout-body { + font-weight: 400; + } + } + } + + // Apply only to default callout style which could have + // - a title (can't have no title) + // - an icon or not + &.callout-style-default { + &.callout-titled { + .callout-content { + p { + margin-top: 0.7em; + } + } + } + + .callout-icon::before { + display: inline-block; + content: ""; + background-repeat: no-repeat; + } + + div { + &.callout-body { + font-weight: 400; + } + &.callout-title { + opacity: 85%; + padding-left: 0.5em; + padding-right: 0.5em; + } + &.callout-content { + padding-left: 0.5em; + padding-right: 0.5em; + } + } + } + + // FIXME: There is no body-container in revealjs so remove but before find what it was suppose to do + .callout-body-container { + flex-grow: 1; + } +} + +/* Callout Types */ + +// Generate per callout type css to customize their appearance +// Define the callouts for which we should define styles +$callouts: ( + // NOTE + "note": + ( + "color": $callout-color-note, + "icon": + '', + ), + // TIP + "tip": + ( + "color": $callout-color-tip, + "icon": + '', + ), + // WARNING + "warning": + ( + "color": $callout-color-warning, + "icon": + '', + ), + // CAUTION + "caution": + ( + "color": $callout-color-caution, + "icon": + '', + ), + // IMPORTANT + "important": + ( + "color": $callout-color-important, + "icon": + '', + ) +); + +@each $name, $info in $callouts { + $shifted-color: #{shift-color( + quarto-map.get($info, "color"), + $callout-icon-scale + )}; + $shifted-color-svg: str-replace($shifted-color, "#", "%23"); + + .reveal div.callout { + &.callout-#{$name} { + border-left-color: shift-color( + quarto-map.get($info, "color"), + $callout-border-scale + ); + &.callout-style-default { + .callout-title { + @include shift_to_dark( + "background-color", + shift-color(quarto-map.get($info, "color"), 70%), + shift-color(quarto-map.get($info, "color"), -90%) + ); + } + } + .callout-icon::before { + background-image: #{"url('data:image/svg+xml," + + str-replace( + quarto-map.get($info, "icon"), + 'fill="currentColor"', + 'style="fill: #{$shifted-color-svg}"' + ) + + "');"}; + } + } + } +} + + +// quarto-scss-analysis-annotation { "origin": "'rules' section from user-defined SCSS" } + +$presentation-author-block-padding-left: if( + $presentation-title-slide-text-align != left, + 0.5em, + 0 +); +$presentation-author-block-padding-right: if( + $presentation-title-slide-text-align != right, + 0.5em, + 0 +); + +.reveal { + .quarto-title-block { + .quarto-title-authors { + display: flex; + justify-content: $presentation-title-slide-text-align; + + .quarto-title-author { + padding-left: $presentation-author-block-padding-left; + padding-right: $presentation-author-block-padding-right; + + a, + a:hover, + a:visited, + a:active { + color: inherit; + text-decoration: none; + } + + .quarto-title-author-name { + margin-bottom: 0.1rem; + } + + .quarto-title-author-email { + margin-top: 0px; + margin-bottom: 0.4em; + font-size: 0.6em; + } + + .quarto-title-author-orcid { + img { + margin-bottom: 4px; + } + } + + .quarto-title-affiliation { + font-size: 0.7em; + margin-top: 0px; + margin-bottom: 8px; + } + + .quarto-title-affiliation:first { + margin-top: 12px; + } + } + } + } +} + + +.reveal a { + line-height: 1.5em; + color: #e84a27; + font-weight: 300; +} + +.reveal .footer a { + color: #e84a27 !important; +} + +.reveal p { + font-weight: 300; +} + +.reveal .slide ul li, +.reveal .slide ol li { + font-weight: 300; +} + +// maximum height of code blocks before scrolling is used +.reveal pre.sourceCode code { + max-height: 700px; // default 500 +} + +// title slide +.title-slide { + background-color: #fafafa; + //border-top: 80px solid #fafafa; // do not change this, it implements a bumper +} + +h1.title { + color: #1a292c; + font-size: 45px; + text-shadow: none; + font-weight: 400; + text-align: left; + margin-left: 15px; + // padding-top: 80px; // not a huge fan of the 80px drop +} +p.subtitle { + // margin-top: -10px; + // padding-bottom: -20px; + color: #1a292c; + text-shadow: none; + font-weight: 300; + font-size: 40px; + text-align: left; + margin-left: 15px; +} +p.author { + color: #1a292c; + text-shadow: none; + font-weight: 300; + font-size: 30px; + text-align: left; + margin-left: 15px; + margin-bottom: -10px; + margin-top: 0px; +} + +p.date { + color: #1a292c; + text-shadow: none; + font-weight: 300; + font-size: 30px; + text-align: left; + margin-left: 15px; + // margin-bottom: -30px; +} + +p.subtitle:after { + content: ""; + display: block; + border: none; + background-color: #eb811b; + color: #eb811b; + height: 1px; + margin: 25px 0 25px; +} + +// Section break slide +hr, +h1::after { + content: ""; + display: block; + border: none; + background-color: #eb811b; + color: #eb811b; + height: 1px; + margin: 1em 10px 0 10px; +} + +// Override h1 style for title slide (remove section break slide style) +hr, +h1.title::after { + content: ""; + display: block; + border: none; + background-color: transparent !important; + color: transparent !important; + height: 0px; + margin: 0px !important; +} + +// Custom class to allow for blank slides +.empty h1::after, .empty h2 { + content: ""; + display: none; + border: none; + // background-color: #eb811b; + // color: #eb811b; + height: 0px; + margin: 0 auto; //reset +} + +h2::after.title { + margin: 10px 15px 35px 0; +} + +.reveal .slide-number a { + font-size: 120%; + background-color: #fafafa; + border-radius: 12px; + padding: 5px; +} + +// inline +.reveal code { + font-size: 70%; + background-color: #afb8c133; + color: #000; + padding: 4px; + border-radius: 6px; +} + +// code blocks +.reveal div.sourceCode pre code { + font-size: 100%; +} + +// code output +.reveal pre code { + font-size: 100%; + padding-top: 15px; +} + +.colored-column { + border: 2px solid red; + border-radius: 6px !important; + padding: 10px; + margin: 5px; +} + +.column { + // #column; + // border: 2px solid red; + border-radius: 10px !important; + padding: 10px; + margin: 5px; + // background-color: #ededed; + // background-color: #eeeeee; // not background color in columns +} + +.reveal h2 { + background-color: #13294b; //#23373b; + padding: 5px 0px 5px 10px; + color: #fafafa; + //border-radius: 12px; // not a fan of rounded borders +} + +.reveal h2:before { + position: absolute; + content: ""; + height: 35px; + width: 120px; + top: 18px; + right: -75px; + background-image: url(../../../../../logo-illinois-block-i.png); /* Better than using an absolute path, though this can't be the best way to include an image! */ + background-repeat: no-repeat; + background-size: contain; +} + +/* Add special removal classes */ +h2.heading-output.removed:before{ + position: absolute; + content: ""; + height: 0; + width: 0; + top: 0; + right: 0; + background-image: none; +} + +h2.heading-output.removed{ + background-color: transparent; + padding: 0px; + color: #000000; +} + +h1.heading-output.removed::after { + content: ""; + display: block; + border: none; + background-color: transparent; + color: #000000; + height: 0px; + margin: 0; +} + +/* Custom size */ +h5.heading-output { + font-size: 0.7em; +} + +h6.heading-output { + font-size: 0.4em; +} + +.small-font { + font-size: 70%; +} + +iframe { + display: block; + margin-right: auto; + margin-left: auto; +} + +.center { + text-align: center; +} + +// Custom hack to center contents of the table cell in the middle.background; +.reveal table td { + vertical-align: middle; +} + +// +.reveal .slide-menu-button .fa-bars::before { + background-image: url('data:image/svg+xml,'); +} + +.reveal .slide-chalkboard-buttons .fa-easel2::before { + padding-bottom: 6px; + background-image: url('data:image/svg+xml,'); +} + +.reveal .slide-chalkboard-buttons .fa-brush::before { + padding-bottom: 6px; + background-image: url('data:image/svg+xml,'); +} + +.reveal .progress { + color: #23373b; +} +:root { + --r-background-color: #fff; + --r-main-font: Source Sans Pro, simhei, microsoft yahei; + --r-main-font-size: 28px; + --r-main-color: #222; + --r-block-margin: 12px; + --r-heading-margin: 0 0 12px 0; + --r-heading-font: Source Sans Pro, microsoft yahei, simhei; + --r-heading-color: #0c4c8a; + --r-heading-line-height: 1.2em; + --r-heading-letter-spacing: normal; + --r-heading-text-transform: none; + --r-heading-text-shadow: none; + --r-heading-font-weight: 900; + --r-heading1-text-shadow: none; + --r-heading1-size: 2.5em; + --r-heading2-size: 1.6em; + --r-heading3-size: 1.3em; + --r-heading4-size: 1em; + --r-code-font: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, + Courier New, monospace; + --r-link-color: #ef562d; + --r-link-color-dark: #ef562d; + --r-link-color-hover: #d13076; + --r-selection-background-color: #98bdef; + --r-selection-color: #fff; + --quarto-hl-fu-color: #c53800; +} + +.reveal .title-slide h1 { + text-align: center; + line-height: var(--r-heading-line-height); +} + +section#title-slide p.author, +section#title-slide p.institute, +section#title-slide p.date { + font-size: var(--r-heading2-size); + color: gray; +} + +section#title-slide h1.title:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: underline; + color: gray; +} + +section#title-slide a { + color: gray; +} + +.reveal .slide-number a { + color: #bbbbbb; + font-size: 10pt; +} + +section#title-slide a:hover { + color: var(--r-link-color-hover); +} + +.reveal[data-navigation-mode="linear"] .title-slide h1 { + font-size: var(--r-heading2-size); +} + +section#TOC { + vertical-align: middle; + text-align: center; +} + +section#TOC h2 { + font-size: var(--r-heading2-size); + font-weight: bold; + text-align: center; +} + +section#TOC h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#TOC ul { + text-align: left; + vertical-align: middle; + margin-top: 3em; + line-height: 1.6em; +} + +section#TOC ol li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: number; + line-height: 1.6em; +} + +section#TOC strong, +section#TOC b { + color: black; +} + +section#TOC ul li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: circle; + line-height: 1.6em; +} + +section#TOC a { + color: black; +} + +section#TOC a:hover { + color: var(--r-link-color-hover); +} + +.reveal h2 { + text-align: left; + margin-top: 0px; + line-height: var(--r-heading-line-height); +} + +.reveal .title-slide h1:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.reveal h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, var(--r-heading-color), white) 1; + border-radius: 1px; +} + +.reveal ul { + list-style-type: circle; +} + +li:hover { + font-weight: bold; +} + +.reveal p:hover { + font-weight: bold; +} + +.reveal ul li { + line-height: 1.2em; +} + +.reveal .thank h2 { + font-size: var(--r-heading1-size); + line-height: var(--r-heading-line-height); +} + +.reveal .thank { + text-align: center; +} + +.reveal .thank h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.panel-tabset [role="tab"] { + border-bottom: 1px solid red; +} + +.panel-tabset [role="tab"][aria-selected="true"] { + background-color: #ffdddd; + border-bottom: 1px solid red; +} + +.white { + color: #ffffff; +} +.orange { + color: #e09a25; +} +.green { + color: #006e51; +} +.pink { + color: #d13076; +} + +.dusty { + color: #ad5d5d; +} + +.flame { + color: #ef562d; +} +.kale { + color: #5c7148; +} +.blue { + color: #0c4c8a; +} +.red { + color: #b93a32; +} +.clay { + color: #9e4624; +} +.bodacious { + color: #b76ba3; +} +.serenity { + color: #91a8d0; +} + +.cognac { + color: #60413c; +} +.sangria { + color: #760030; +} + +.alumium { + color: #75796a; +} + +.marsala { + color: #964f4c; +} +.purple { + color: #702fa8; +} + +.blank { + background-color: "Yellow"; + width: 100%; + color: red; +} + +.reveal .slide aside { + position: absolute; + margin: 0 auto; + left: 2%; + font-size: 0.7em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.ref { + position: absolute; + margin: 0 auto; + right: 2%; + font-size: 1em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.con { + position: absolute; + margin: 0 auto; + font-size: 1.4em; + text-align: center; + font-family: inherit; + max-width: 100%; + width: fit-content; + color: #023047; + bottom: -2%; +} + +.center { + text-align: center; +} + +.tiny { + font-size: 60%; +} + +figure > figcaption { + margin-top: -0.5em; +} + +.reveal .slide figure > figcaption, +.reveal .slide img.stretch + p.caption, +.reveal .slide img.r-stretch + p.caption { + font-size: 0.9em; + text-align: center; +} + +.reveal strong, .reveal b { + font-weight: bold; + color: crimson; +} + +.reveal pre code { + background-color: #554433; + line-height: 1.2em; + color: #fff; + /* font-size: x-large; */ +} + +.reveal pre code:hover{ + font-size: x-large; + line-height: 120%; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: none; + color: gray; +} + +.reveal div.sourceCode pre code { + background-color: #002233; + min-height: 100%; + /* font-size: x-large; */ +} + +.reveal div.sourceCode pre code:hover { + font-size: x-large; +} + + +// quarto-scss-analysis-annotation { "origin": null } \ No newline at end of file diff --git a/dwsd/dwsd.css b/dwsd/dwsd.css new file mode 100644 index 0000000..027d271 --- /dev/null +++ b/dwsd/dwsd.css @@ -0,0 +1,374 @@ +/*-- scss:defaults --*/ + +/* Modified version of the metropolis theme ported into Quarto by Patrick Schwartz */ + +// fonts +@import url("https://fonts.googleapis.com/css?family=Fira+Sans:300,300i,400,400i,500,500i,700,700i"); +@import url("https://fonts.googleapis.com/css?family=Fira+Code:300,300i,400,400i,500,500i,700,700i"); +@import url("https://fonts.googleapis.com/css?family=Roboto+Mono|JetBrains+Mono&display=swap"); +@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"); + +$font-family-sans-serif: "Fira Sans", "Roboto", "Droid Serif", serif !default; +$font-family-monospace: "Fira Code", "JetBrains Mono", monospace; +$presentation-font-size-root: 32px; +$presentation-line-height: 1.5em; +$presentation-heading-font-weight: 400; + +// colors +$body-bg: #fafafa !default; +$body-color: #000 !default; +// $link-color: #EB811B !default; +$selection-bg: #26351c; + +// headings +// $presentation-heading-font: "Palatino Linotype", "Book Antiqua", Palatino, +// FreeSerif, serif !default; +// $presentation-heading-color: #383d3d !default; + +/*-- scss:rules --*/ + +:root { + --r-background-color: #fff; + --r-main-font: Source Sans Pro, simhei, microsoft yahei; + --r-main-font-size: 28px; + --r-main-color: #222; + --r-block-margin: 12px; + --r-heading-margin: 0 0 12px 0; + --r-heading-font: Source Sans Pro, microsoft yahei, simhei; + --r-heading-color: #0c4c8a; + --r-heading-line-height: 1.2em; + --r-heading-letter-spacing: normal; + --r-heading-text-transform: none; + --r-heading-text-shadow: none; + --r-heading-font-weight: 900; + --r-heading1-text-shadow: none; + --r-heading1-size: 2.5em; + --r-heading2-size: 1.6em; + --r-heading3-size: 1.3em; + --r-heading4-size: 1em; + --r-code-font: SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, + Courier New, monospace; + --r-link-color: #ef562d; + --r-link-color-dark: #ef562d; + --r-link-color-hover: #d13076; + --r-selection-background-color: #98bdef; + --r-selection-color: #fff; + --quarto-hl-fu-color: #c53800; +} + +.reveal .title-slide h1 { + text-align: center; + line-height: var(--r-heading-line-height); +} + +section#title-slide p.author, +section#title-slide p.institute, +section#title-slide p.date { + font-size: var(--r-heading2-size); + color: gray; +} + +section#title-slide h1.title:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: underline; + color: gray; +} + +section#title-slide a { + color: gray; +} + +.reveal .slide-number a { + color: #bbbbbb; + font-size: 10pt; +} + +section#title-slide a:hover { + color: var(--r-link-color-hover); +} + +.reveal[data-navigation-mode="linear"] .title-slide h1 { + font-size: var(--r-heading2-size); +} + +section#TOC { + vertical-align: middle; + text-align: center; +} + +section#TOC h2 { + font-size: var(--r-heading2-size); + font-weight: bold; + text-align: center; +} + +section#TOC h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +section#TOC ul { + text-align: left; + vertical-align: middle; + margin-top: 3em; + line-height: 1.6em; +} + +section#TOC ol li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: number; + line-height: 1.6em; +} + +section#TOC strong, +section#TOC b { + color: black; +} + +section#TOC ul li { + font-size: var(--r-heading3-size); + font-weight: bold; + color: gray; + list-style-type: circle; + line-height: 1.6em; +} + +section#TOC a { + color: black; +} + +section#TOC a:hover { + color: var(--r-link-color-hover); +} + +.reveal h2 { + text-align: left; + margin-top: 0px; + line-height: var(--r-heading-line-height); +} + +.reveal .title-slide h1:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.reveal h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, var(--r-heading-color), white) 1; + border-radius: 1px; +} + +.reveal ul { + list-style-type: circle; +} + +li:hover { + font-weight: bold; +} + +.reveal p:hover { + font-weight: bold; +} + +.reveal ul li { + line-height: 1.2em; +} + +.reveal .thank h2 { + font-size: var(--r-heading1-size); + line-height: var(--r-heading-line-height); +} + +.reveal .thank { + text-align: center; +} + +.reveal .thank h2:after { + content: " "; + display: block; + border: 3px solid; + border-image: linear-gradient(to right, white, var(--r-heading-color), white) + 1; + border-radius: 1px; +} + +.panel-tabset [role="tab"] { + border-bottom: 1px solid red; +} + +.panel-tabset [role="tab"][aria-selected="true"] { + background-color: #ffdddd; + border-bottom: 1px solid red; +} + +.white { + color: #ffffff; +} +.orange { + color: #e09a25; +} +.green { + color: #006e51; +} +.pink { + color: #d13076; +} + +.dusty { + color: #ad5d5d; +} + +.flame { + color: #ef562d; +} +.kale { + color: #5c7148; +} +.blue { + color: #0c4c8a; +} +.red { + color: #b93a32; +} +.clay { + color: #9e4624; +} +.bodacious { + color: #b76ba3; +} +.serenity { + color: #91a8d0; +} + +.cognac { + color: #60413c; +} +.sangria { + color: #760030; +} + +.alumium { + color: #75796a; +} + +.marsala { + color: #964f4c; +} +.purple { + color: #702fa8; +} + +.blank { + background-color: "Yellow"; + width: 100%; + color: red; +} + +.reveal .slide aside { + position: absolute; + margin: 0 auto; + left: 2%; + font-size: 0.7em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.ref { + position: absolute; + margin: 0 auto; + right: 2%; + font-size: 1em; + text-align: end; + max-width: 90%; + width: fit-content; + color: gray; + bottom: -6%; +} + +.con { + position: absolute; + margin: 0 auto; + font-size: 1.4em; + text-align: center; + font-family: inherit; + max-width: 100%; + width: fit-content; + color: #023047; + bottom: -2%; +} + +.center { + text-align: center; +} + +.tiny { + font-size: 60%; +} + +figure > figcaption { + margin-top: -0.5em; +} + +.reveal .slide figure > figcaption, +.reveal .slide img.stretch + p.caption, +.reveal .slide img.r-stretch + p.caption { + font-size: 0.9em; + text-align: center; +} + +.reveal strong, .reveal b { + font-weight: bold; + color: crimson; +} + +.reveal pre code { + background-color: #554433; + line-height: 1.2em; + color: #fff; + /* font-size: x-large; */ +} + +.reveal pre code:hover{ + font-size: x-large; + line-height: 120%; +} + +section#title-slide p.subtitle { + font-size: var(--r-heading3-size); + text-decoration: none; + color: gray; +} + +.reveal div.sourceCode pre code { + background-color: #002233; + min-height: 100%; + /* font-size: x-large; */ +} + +.reveal div.sourceCode pre code:hover { + font-size: x-large; +} diff --git a/dwsd/template.qmd b/dwsd/template.qmd new file mode 100644 index 0000000..e96fffb --- /dev/null +++ b/dwsd/template.qmd @@ -0,0 +1,35 @@ +--- +title: "〇、R语言实践前篇" +subtitle: 《区域水环境污染数据分析实践》
Data analysis practice of regional water environment pollution +author: 苏命、王为东
中国科学院大学资源与环境学院
中国科学院生态环境研究中心 +date: today +lang: zh +format: + dwsd-revealjs: default +--- + +```{r} +#| include: false +#| cache: false +lang <- "cn" +require(tidyverse) +knitr::opts_chunk$set(echo = TRUE) +``` + +## R语言实践部分课程简介 + +**接下来的课程由我来带着大家一起学习、实践基于R语言的数据分析。** + +### 自我介绍 + +- 苏命:来自中国科学院生态环境研究中心 +- 主要从事**水源水质水生态**方面的研究 + + + + + +## 欢迎讨论!{.center} + + +`r rmdify::slideend(wechat = FALSE, type = "public", tel = FALSE, thislink = "../")`