update
|
@ -0,0 +1,38 @@
|
|||
title: Academic Letter Template
|
||||
authors:
|
||||
- name: Ming Su
|
||||
affiliation: drwater
|
||||
version: 0.1.0
|
||||
quarto-required: ">=1.3.0"
|
||||
resources:
|
||||
- dwcl.tex
|
||||
contributes:
|
||||
affliction: Key Laboratory of Environmental Aquatic Chemistry, State Key Laboratory of Regional Environment and Sustainability, Research Center for Eco-Environmental Sciences, Chinese Academy of Sciences
|
||||
from_email: "mingsu@rcees.ac.cn"
|
||||
from_phone: "+86 (10) 62843038"
|
||||
from_institution_logo: "inst/rceeslonglogo.png"
|
||||
from_sign: "inst/signms.png"
|
||||
from_position: "Professor"
|
||||
from_professional_title: "Ph.D."
|
||||
from_institution: "Chinese Academy of Sciences"
|
||||
from_department: "Research Center for Eco-Environmental Sciences"
|
||||
from_address: "P.O. Box 2871, Beijing"
|
||||
to_professional_title: ""
|
||||
to_name: "Editor-in-Chief"
|
||||
opening_greeting: "Dear Editor,"
|
||||
closing_greeting: "Yours Sincerely,"
|
||||
formats:
|
||||
html:
|
||||
css: style.css
|
||||
pdf:
|
||||
template: dwcl.tex
|
||||
documentclass: letter
|
||||
papersize: letter
|
||||
latex_engine: xelatex
|
||||
keep-tex: false
|
||||
keep-md: false
|
||||
geometry:
|
||||
- margin=1in
|
||||
toc: false
|
||||
number-sections: false
|
||||
lang: en
|
|
@ -0,0 +1,240 @@
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Academic Letter LaTeX and RMarkdown Structure %
|
||||
% Author: Pedro Henrique Pereira Braga %
|
||||
% %
|
||||
% License: %
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% Set the font size (11pt, for now) and paper size (e.g. letterpaper, a4paper)
|
||||
\documentclass[11pt, letterpaper]{letter}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
||||
%----------------------------------------------------------------------
|
||||
|
||||
\usepackage{graphicx} % Required for including pictures
|
||||
\usepackage{fancyhdr} % Allows the use of fancy headers and footers
|
||||
|
||||
\usepackage{microtype} % For typography improvement
|
||||
|
||||
\usepackage{url} % Allows the use of hyperlinks
|
||||
\urlstyle{same} % Allows hyperlink fonts to be the same as the mainfont
|
||||
\usepackage[hidelinks]{hyperref} % Allows the use of hyperlinks and
|
||||
% removes the blue boxes around the link
|
||||
|
||||
\pagestyle{empty} % Removes headers and footers
|
||||
|
||||
\usepackage{setspace} % Allows the use of double spacing in the letter body
|
||||
|
||||
\setlength\parindent{1cm} % Paragraph indentation
|
||||
|
||||
% Create a new command for the horizontal rule in the document which allows
|
||||
% thickness specification
|
||||
\makeatletter
|
||||
\def\@texttop{} % force the address to start above
|
||||
\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
|
||||
\thispagestyle{firstpage}%
|
||||
{\raggedleft\@date\par}%
|
||||
\else % home address
|
||||
\thispagestyle{empty}%
|
||||
{\raggedleft\begin{tabular}{l@{}}\ignorespaces
|
||||
\fromaddress \\*[2\parskip]%
|
||||
\@date \end{tabular}\par}%
|
||||
\fi
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
%{\raggedright \toname \\ \toaddress \par}% <-- Removed
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
#1\par\nobreak}
|
||||
\let\ps@empty\ps@plain
|
||||
\let\ps@firstpage\ps@plain
|
||||
\makeatother
|
||||
|
||||
%--------------------------------------------------------------------------
|
||||
% FONTS
|
||||
%--------------------------------------------------------------------------
|
||||
|
||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
||||
% \usepackage[utf8]{inputenc} % Required for inputting international characters
|
||||
\usepackage[quiet]{fontspec} % Allows the use of fontspec
|
||||
\setmainfont{Calibri}
|
||||
% \usepackage{txfonts} % Allows the use of Lato fonts
|
||||
|
||||
|
||||
%----------------------------------------------------------------------------
|
||||
% DOCUMENT MARGINS
|
||||
%----------------------------------------------------------------------------
|
||||
|
||||
\usepackage{geometry} % Required for adjusting page dimensions
|
||||
|
||||
\geometry{
|
||||
headheight = 0.7in, % Header height
|
||||
top=1.5in, % Top margin
|
||||
bottom=1.5cm, % Bottom margin
|
||||
left=3cm, % Left margin
|
||||
right=3cm, % Right margin
|
||||
% showframe, % Uncomment to show how the type block is set on the page
|
||||
}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% AUTHOR AND RECIPIENTS NEW COMMANDS AND DETAILS STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\newcommand{\authordetails}[1]{\renewcommand{\authordetails}{#1}}
|
||||
\newcommand{\recipientdetails}[1]{\renewcommand{\recipientdetails}{#1}}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% HEADER STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\address{
|
||||
% Include the author's details on the right side of the page under the line
|
||||
\raggedleft{
|
||||
\footnotesize{ % Use a smaller font size
|
||||
$author$\\ % Author name
|
||||
\authordetails\\
|
||||
\hspace{1mm}
|
||||
}
|
||||
}
|
||||
\vspace{-0.05\textheight} % Move the date and letter content up
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% COMPOSE THE ENTIRE HEADER
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\renewcommand{\opening}[1]{
|
||||
{\fromaddress
|
||||
\vspace{0.05\textheight}\\ % Print the sender's address here and add some whitespace to allow the printing of the date
|
||||
\raggedleft{$date$} % Include the date, aligned to the right
|
||||
\par % par
|
||||
}
|
||||
{\raggedright
|
||||
\toname\\
|
||||
\toaddress
|
||||
\par} % Print the recipient's name and adress
|
||||
\vspace{0.25cm} % White vertical space after recipient's address
|
||||
\noindent #1 % Following this, insert the opening info
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% SIGNATURE STRUCTURE
|
||||
%------------------------------------------------------------------------------
|
||||
% The signature is a combination of the author's name, title and institution
|
||||
\signature{$author$, on behalf of all authors\\
|
||||
Email: $from_email$}
|
||||
|
||||
% I will later combine the option of inserting a signature within it
|
||||
|
||||
\renewcommand{\closing}[1]{
|
||||
\vspace{2.5mm} % Some whitespace after the letter content and before the signature
|
||||
\noindent % Stop paragraph indentation
|
||||
% \hspace*{\longindentation} % Move the signature right to the value of \longindentation
|
||||
\parbox{\indentedwidth}{
|
||||
\raggedright
|
||||
#1 % Print the signature text
|
||||
% \vskip 1.65cm % Whitespace between the closing text and author's name for a physical signature
|
||||
\\\includegraphics[height=0.6in, keepaspectratio=true]{$from_sign$}\\
|
||||
\fromsig % Prints the value of \signature{}, i.e. author name and title
|
||||
}
|
||||
}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% AUTHOR'S INFORMATION
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
\authordetails{
|
||||
$from_position$\\
|
||||
$from_department$\\ % Sender's department/institution
|
||||
$from_institution$\\
|
||||
$from_address$ % Sender's address
|
||||
% $from_city$, $from_state_province$\\ % Sender's city, state or province,
|
||||
% $from_postalcode$\\ % postal code
|
||||
% $from_country$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% RECIPIENT'S INFORMATION
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\recipientdetails{
|
||||
$to_professional_title$ $to_name$\\
|
||||
$if(to_journal)$
|
||||
\textit{$to_journal$}
|
||||
$endif$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% HEADER CONTENTS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\fancypagestyle{firstpage}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{empty}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
\pagestyle{plain}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% TO ADDRESS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\begin{letter}{\recipientdetails}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% LETTER CONTENT
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\opening{$opening_greeting$}
|
||||
% \begin{doublespacing}
|
||||
|
||||
$body$
|
||||
|
||||
% \end{doublespacing}
|
||||
\closing{$closing_greeting$}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\end{letter}
|
||||
\end{document}
|
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 150 KiB |
|
@ -0,0 +1,109 @@
|
|||
.udot {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(50, 50, 50);
|
||||
text-decoration-style: dashed;
|
||||
text-decoration-thickness: 1px;
|
||||
}
|
||||
|
||||
.good {
|
||||
background-color: forestgreen;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.bad {
|
||||
background-color: orangered;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.5px;
|
||||
}
|
||||
|
||||
|
||||
.todo {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.com {
|
||||
background-color: #0025ff;
|
||||
font-weight: bold;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.add {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.0px;
|
||||
}
|
||||
|
||||
|
||||
ins {
|
||||
text-decoration-color: rgb(222 93 93);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
.clab {
|
||||
background-color: rgb(255, 245, 240);
|
||||
}
|
||||
|
||||
.rem {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
#criticnav {
|
||||
position: fixed;
|
||||
z-index: 1100;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 120px;
|
||||
border-bottom: solid 1px #ffffff;
|
||||
margin: 0;
|
||||
padding: 10;
|
||||
background-color: rgb(143 38 38 / 95%);
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
font-family: "Helvetica Neue", helvetica, arial, sans-serif !important
|
||||
}
|
||||
|
||||
#criticnav ul {
|
||||
list-style-type: none;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
#criticnav ul li {
|
||||
display: block;
|
||||
width: 100px;
|
||||
min-width: 80px;
|
||||
text-align: center;
|
||||
padding: 5px 0 3px !important;
|
||||
margin: 5px 2px !important;
|
||||
line-height: 1em;
|
||||
float: center;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
border-radius: 20px;
|
||||
border: 3px solid rgba(255,255,255,0);
|
||||
color: #fff !important
|
||||
}
|
||||
|
|
@ -0,0 +1,504 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="quarto-1.7.29" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
|
||||
<meta name="author" content="Ming Su" />
|
||||
<meta name="dcterms.date" content="2025-07-27" />
|
||||
|
||||
<title>a letter</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
ul.task-list{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- htmldependencies:E3FAD763 -->
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_extensions/inst/css/style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="quarto-content" class="page-columns page-rows-contents page-layout-article">
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
</div>
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">a letter</h1>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Author</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p>Ming Su </p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Published</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p class="date">July 27, 2025</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<p>We are pleased to submit our manuscript, <strong>“a letter”</strong>, for consideration at <strong><em><strong>?meta:submitjournal</strong></em></strong>.</p>
|
||||
<p>Among all algal-derived taste-and-odor compounds, 2-methylisoborneol (MIB) stands out as the most notorious and widespread offender. Since its initial identification, nearly 300 documented MIB-related odor outbreaks have been reported globally. With an exceptionally low odor threshold (10 ng L<sup>-1</sup>), MIB imparts a distinct earthy-musty smell that is immediately detectable in drinking water—transforming it from a mere water quality parameter into a critical public concern capable of triggering widespread complaints during outbreaks.</p>
|
||||
<p>The partitioning of MIB between intracellular and extracellular compartments critically determines treatment strategy selection. When MIB is primarily intracellular, conventional treatment processes such as coagulation-sedimentation can achieve cost-effective removal. However, when MIB becomes predominantly extracellular, utilities must implement advanced treatment options like ozone-activated carbon - a significantly more expensive approach that remains unavailable at many facilities. This fundamental distinction creates a critical decision point for water treatment optimization, where accurate prediction of MIB partitioning directly impacts both operational efficiency and treatment costs.</p>
|
||||
<p>Yet, current research and monitoring practices overlook a key limitation: most studies and water treatment plants measure only total MIB concentrations, assuming a fixed intracellular/extracellular ratio. This oversimplification leads to suboptimal process selection, unstable removal efficiency, and, in some cases, exacerbates MIB release through inappropriate treatment.</p>
|
||||
<p>Our study systematically investigates the dynamic partitioning of MIB between intracellular and extracellular compartments through controlled experiments with two major MIB-producing cyanobacteria (<em>Pseudanabaena</em> and <em>Planktothricoides</em>). We demonstrate that the extracellular fraction exhibits distinct growth phase-dependent patterns, where crowding effects during rapid growth phases trigger substantial MIB release. Building on these observations, we developed a <strong>mechanistic model</strong> based on logistic growth dynamics that quantitatively predicts MIB release patterns across the complete cyanobacterial life cycle.</p>
|
||||
<p>Our model’s application to Lake Taihu’s MIB outbreaks uncovered novel spatiotemporal patterns in cyanobacterial populations responsible for odorant production. More significantly, we established a predictive risk assessment framework that pinpoints key environmental drivers controlling both MIB occurrence and its release dynamics. This framework enables proactive identification of high-risk conditions preceding major release events.</p>
|
||||
<p>Key Findings of this study include:</p>
|
||||
<ol type="1">
|
||||
<li><p>Crowding effects during cellular growth govern MIB partitioning.</p></li>
|
||||
<li><p>The model successfully forecasts large-scale MIB release events.</p></li>
|
||||
<li><p>It provides actionable guidance for optimizing water treatment processes.</p></li>
|
||||
</ol>
|
||||
<p>To our knowledge, this is the first mechanistic framework explaining growth-dependent MIB release dynamics. Importantly, our approach shows promise for modeling other algal metabolites (e.g., geosmin, cyanotoxins), offering broader implications for water quality management.</p>
|
||||
<p>We believe this study will interest researchers working on algal metabolites, water treatment engineers, and resource managers addressing cyanobacterial blooms. The combination of fundamental insights and practical applications aligns well with <strong><em><strong>?meta:submitjournal</strong></em></strong>’s mission to bridge scientific discovery and environmental technology.</p>
|
||||
<p>To ensure a thorough and expert evaluation of our manuscript, we suggest the following potential reviewers with specialized expertise in algal metabolites, water treatment technologies, and cyanobacterial ecology. Additional information about each candidate reviewer is available via the <em>Web link</em> provided.</p>
|
||||
<p><strong>Potential Reviewers:</strong></p>
|
||||
<ol type="1">
|
||||
<li><p><strong>Tsair-Fuh Lin</strong>: National Cheng Kung University. Email: <a href="mailto:tflin@mail.ncku.edu.tw" class="email">tflin@mail.ncku.edu.tw</a>; <em><a href="https://researchoutput.ncku.edu.tw/en/persons/tsair-fuh-lin">Web Link</a></em></p></li>
|
||||
<li><p><strong>Arash Zamyadi</strong>: Civil & Environmental Engineering, Monash University. Email: <a href="mailto:Arash.Zamyadi@monash.edu" class="email">Arash.Zamyadi@monash.edu</a>; <em><a href="https://research.monash.edu/en/persons/arash-zamyadi">Web Link</a></em></p></li>
|
||||
<li><p><strong>Xuwei Deng</strong>: Institute of hydrobiology, Chinese Academy of Sciences. Email: <a href="mailto:dengxuwei@ihb.ac.cn" class="email">dengxuwei@ihb.ac.cn</a>; <em><a href="https://www.researchgate.net/profile/Deng-Xuwei">Web Link</a></em></p></li>
|
||||
<li><p><strong>Shushi Peng</strong>: Peking University. Email: <a href="mailto:speng@pku.edu.cn" class="email">speng@pku.edu.cn</a>; <em><a href="https://www.researchgate.net/profile/Shushi-Peng">Web Link</a></em></p></li>
|
||||
<li><p><strong>Tom Andersen</strong>: University of Oslo. Email: <a href="mailto:tom.andersen@ibv.uio.no" class="email">tom.andersen@ibv.uio.no</a>; <em><a href="https://www.mn.uio.no/ibv/english/people/aca/tomand/">Web Link</a></em></p></li>
|
||||
<li><p><strong>Muhe Diao</strong>: University of Calgray. Email: <a href="mailto:muhe.diao@ucalgary.ca" class="email">muhe.diao@ucalgary.ca</a>; <em><a href="https://www.ucalgary.ca/labs/ebg/people/muhe-diao">Web Link</a></em></p></li>
|
||||
</ol>
|
||||
<p>Thank you for considering our work. We would be pleased to address any questions or suggestions during the review process.</p>
|
||||
|
||||
</main>
|
||||
<!-- /main column -->
|
||||
<script id = "quarto-html-after-body" type="application/javascript">
|
||||
window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
const icon = "";
|
||||
const anchorJS = new window.AnchorJS();
|
||||
anchorJS.options = {
|
||||
placement: 'right',
|
||||
icon: icon
|
||||
};
|
||||
anchorJS.add('.anchored');
|
||||
const isCodeAnnotation = (el) => {
|
||||
for (const clz of el.classList) {
|
||||
if (clz.startsWith('code-annotation-')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
const onCopySuccess = function(e) {
|
||||
// button target
|
||||
const button = e.trigger;
|
||||
// don't keep focus
|
||||
button.blur();
|
||||
// flash "checked"
|
||||
button.classList.add('code-copy-button-checked');
|
||||
var currentTitle = button.getAttribute("title");
|
||||
button.setAttribute("title", "Copied!");
|
||||
let tooltip;
|
||||
if (window.bootstrap) {
|
||||
button.setAttribute("data-bs-toggle", "tooltip");
|
||||
button.setAttribute("data-bs-placement", "left");
|
||||
button.setAttribute("data-bs-title", "Copied!");
|
||||
tooltip = new bootstrap.Tooltip(button,
|
||||
{ trigger: "manual",
|
||||
customClass: "code-copy-button-tooltip",
|
||||
offset: [0, -8]});
|
||||
tooltip.show();
|
||||
}
|
||||
setTimeout(function() {
|
||||
if (tooltip) {
|
||||
tooltip.hide();
|
||||
button.removeAttribute("data-bs-title");
|
||||
button.removeAttribute("data-bs-toggle");
|
||||
button.removeAttribute("data-bs-placement");
|
||||
}
|
||||
button.setAttribute("title", currentTitle);
|
||||
button.classList.remove('code-copy-button-checked');
|
||||
}, 1000);
|
||||
// clear code selection
|
||||
e.clearSelection();
|
||||
}
|
||||
const getTextToCopy = function(trigger) {
|
||||
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
||||
for (const childEl of codeEl.children) {
|
||||
if (isCodeAnnotation(childEl)) {
|
||||
childEl.remove();
|
||||
}
|
||||
}
|
||||
return codeEl.innerText;
|
||||
}
|
||||
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
|
||||
text: getTextToCopy
|
||||
});
|
||||
clipboard.on('success', onCopySuccess);
|
||||
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
|
||||
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
|
||||
text: getTextToCopy,
|
||||
container: window.document.getElementById('quarto-embedded-source-code-modal')
|
||||
});
|
||||
clipboardModal.on('success', onCopySuccess);
|
||||
}
|
||||
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
|
||||
var mailtoRegex = new RegExp(/^mailto:/);
|
||||
var filterRegex = new RegExp('/' + window.location.host + '/');
|
||||
var isInternal = (href) => {
|
||||
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
|
||||
}
|
||||
// Inspect non-navigation links and adorn them if external
|
||||
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
|
||||
for (var i=0; i<links.length; i++) {
|
||||
const link = links[i];
|
||||
if (!isInternal(link.href)) {
|
||||
// undo the damage that might have been done by quarto-nav.js in the case of
|
||||
// links that we want to consider external
|
||||
if (link.dataset.originalHref !== undefined) {
|
||||
link.href = link.dataset.originalHref;
|
||||
}
|
||||
}
|
||||
}
|
||||
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
|
||||
const config = {
|
||||
allowHTML: true,
|
||||
maxWidth: 500,
|
||||
delay: 100,
|
||||
arrow: false,
|
||||
appendTo: function(el) {
|
||||
return el.parentElement;
|
||||
},
|
||||
interactive: true,
|
||||
interactiveBorder: 10,
|
||||
theme: 'quarto',
|
||||
placement: 'bottom-start',
|
||||
};
|
||||
if (contentFn) {
|
||||
config.content = contentFn;
|
||||
}
|
||||
if (onTriggerFn) {
|
||||
config.onTrigger = onTriggerFn;
|
||||
}
|
||||
if (onUntriggerFn) {
|
||||
config.onUntrigger = onUntriggerFn;
|
||||
}
|
||||
window.tippy(el, config);
|
||||
}
|
||||
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
||||
for (var i=0; i<noterefs.length; i++) {
|
||||
const ref = noterefs[i];
|
||||
tippyHover(ref, function() {
|
||||
// use id or data attribute instead here
|
||||
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
||||
try { href = new URL(href).hash; } catch {}
|
||||
const id = href.replace(/^#\/?/, "");
|
||||
const note = window.document.getElementById(id);
|
||||
if (note) {
|
||||
return note.innerHTML;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
});
|
||||
}
|
||||
const xrefs = window.document.querySelectorAll('a.quarto-xref');
|
||||
const processXRef = (id, note) => {
|
||||
// Strip column container classes
|
||||
const stripColumnClz = (el) => {
|
||||
el.classList.remove("page-full", "page-columns");
|
||||
if (el.children) {
|
||||
for (const child of el.children) {
|
||||
stripColumnClz(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
stripColumnClz(note)
|
||||
if (id === null || id.startsWith('sec-')) {
|
||||
// Special case sections, only their first couple elements
|
||||
const container = document.createElement("div");
|
||||
if (note.children && note.children.length > 2) {
|
||||
container.appendChild(note.children[0].cloneNode(true));
|
||||
for (let i = 1; i < note.children.length; i++) {
|
||||
const child = note.children[i];
|
||||
if (child.tagName === "P" && child.innerText === "") {
|
||||
continue;
|
||||
} else {
|
||||
container.appendChild(child.cloneNode(true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(container);
|
||||
}
|
||||
return container.innerHTML
|
||||
} else {
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(note);
|
||||
}
|
||||
return note.innerHTML;
|
||||
}
|
||||
} else {
|
||||
// Remove any anchor links if they are present
|
||||
const anchorLink = note.querySelector('a.anchorjs-link');
|
||||
if (anchorLink) {
|
||||
anchorLink.remove();
|
||||
}
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(note);
|
||||
}
|
||||
if (note.classList.contains("callout")) {
|
||||
return note.outerHTML;
|
||||
} else {
|
||||
return note.innerHTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i=0; i<xrefs.length; i++) {
|
||||
const xref = xrefs[i];
|
||||
tippyHover(xref, undefined, function(instance) {
|
||||
instance.disable();
|
||||
let url = xref.getAttribute('href');
|
||||
let hash = undefined;
|
||||
if (url.startsWith('#')) {
|
||||
hash = url;
|
||||
} else {
|
||||
try { hash = new URL(url).hash; } catch {}
|
||||
}
|
||||
if (hash) {
|
||||
const id = hash.replace(/^#\/?/, "");
|
||||
const note = window.document.getElementById(id);
|
||||
if (note !== null) {
|
||||
try {
|
||||
const html = processXRef(id, note.cloneNode(true));
|
||||
instance.setContent(html);
|
||||
} finally {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
}
|
||||
} else {
|
||||
// See if we can fetch this
|
||||
fetch(url.split('#')[0])
|
||||
.then(res => res.text())
|
||||
.then(html => {
|
||||
const parser = new DOMParser();
|
||||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||||
const note = htmlDoc.getElementById(id);
|
||||
if (note !== null) {
|
||||
const html = processXRef(id, note);
|
||||
instance.setContent(html);
|
||||
}
|
||||
}).finally(() => {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// See if we can fetch a full url (with no hash to target)
|
||||
// This is a special case and we should probably do some content thinning / targeting
|
||||
fetch(url)
|
||||
.then(res => res.text())
|
||||
.then(html => {
|
||||
const parser = new DOMParser();
|
||||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||||
const note = htmlDoc.querySelector('main.content');
|
||||
if (note !== null) {
|
||||
// This should only happen for chapter cross references
|
||||
// (since there is no id in the URL)
|
||||
// remove the first header
|
||||
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
|
||||
note.children[0].remove();
|
||||
}
|
||||
const html = processXRef(null, note);
|
||||
instance.setContent(html);
|
||||
}
|
||||
}).finally(() => {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
});
|
||||
}
|
||||
}, function(instance) {
|
||||
});
|
||||
}
|
||||
let selectedAnnoteEl;
|
||||
const selectorForAnnotation = ( cell, annotation) => {
|
||||
let cellAttr = 'data-code-cell="' + cell + '"';
|
||||
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
||||
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
||||
return selector;
|
||||
}
|
||||
const selectCodeLines = (annoteEl) => {
|
||||
const doc = window.document;
|
||||
const targetCell = annoteEl.getAttribute("data-target-cell");
|
||||
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
||||
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
||||
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
||||
const lineIds = lines.map((line) => {
|
||||
return targetCell + "-" + line;
|
||||
})
|
||||
let top = null;
|
||||
let height = null;
|
||||
let parent = null;
|
||||
if (lineIds.length > 0) {
|
||||
//compute the position of the single el (top and bottom and make a div)
|
||||
const el = window.document.getElementById(lineIds[0]);
|
||||
top = el.offsetTop;
|
||||
height = el.offsetHeight;
|
||||
parent = el.parentElement.parentElement;
|
||||
if (lineIds.length > 1) {
|
||||
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
||||
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
||||
height = bottom - top;
|
||||
}
|
||||
if (top !== null && height !== null && parent !== null) {
|
||||
// cook up a div (if necessary) and position it
|
||||
let div = window.document.getElementById("code-annotation-line-highlight");
|
||||
if (div === null) {
|
||||
div = window.document.createElement("div");
|
||||
div.setAttribute("id", "code-annotation-line-highlight");
|
||||
div.style.position = 'absolute';
|
||||
parent.appendChild(div);
|
||||
}
|
||||
div.style.top = top - 2 + "px";
|
||||
div.style.height = height + 4 + "px";
|
||||
div.style.left = 0;
|
||||
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
||||
if (gutterDiv === null) {
|
||||
gutterDiv = window.document.createElement("div");
|
||||
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
||||
gutterDiv.style.position = 'absolute';
|
||||
const codeCell = window.document.getElementById(targetCell);
|
||||
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
||||
gutter.appendChild(gutterDiv);
|
||||
}
|
||||
gutterDiv.style.top = top - 2 + "px";
|
||||
gutterDiv.style.height = height + 4 + "px";
|
||||
}
|
||||
selectedAnnoteEl = annoteEl;
|
||||
}
|
||||
};
|
||||
const unselectCodeLines = () => {
|
||||
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
||||
elementsIds.forEach((elId) => {
|
||||
const div = window.document.getElementById(elId);
|
||||
if (div) {
|
||||
div.remove();
|
||||
}
|
||||
});
|
||||
selectedAnnoteEl = undefined;
|
||||
};
|
||||
// Handle positioning of the toggle
|
||||
window.addEventListener(
|
||||
"resize",
|
||||
throttle(() => {
|
||||
elRect = undefined;
|
||||
if (selectedAnnoteEl) {
|
||||
selectCodeLines(selectedAnnoteEl);
|
||||
}
|
||||
}, 10)
|
||||
);
|
||||
function throttle(fn, ms) {
|
||||
let throttle = false;
|
||||
let timer;
|
||||
return (...args) => {
|
||||
if(!throttle) { // first call gets through
|
||||
fn.apply(this, args);
|
||||
throttle = true;
|
||||
} else { // all the others get throttled
|
||||
if(timer) clearTimeout(timer); // cancel #2
|
||||
timer = setTimeout(() => {
|
||||
fn.apply(this, args);
|
||||
timer = throttle = false;
|
||||
}, ms);
|
||||
}
|
||||
};
|
||||
}
|
||||
// Attach click handler to the DT
|
||||
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
||||
for (const annoteDlNode of annoteDls) {
|
||||
annoteDlNode.addEventListener('click', (event) => {
|
||||
const clickedEl = event.target;
|
||||
if (clickedEl !== selectedAnnoteEl) {
|
||||
unselectCodeLines();
|
||||
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
||||
if (activeEl) {
|
||||
activeEl.classList.remove('code-annotation-active');
|
||||
}
|
||||
selectCodeLines(clickedEl);
|
||||
clickedEl.classList.add('code-annotation-active');
|
||||
} else {
|
||||
// Unselect the line
|
||||
unselectCodeLines();
|
||||
clickedEl.classList.remove('code-annotation-active');
|
||||
}
|
||||
});
|
||||
}
|
||||
const findCites = (el) => {
|
||||
const parentEl = el.parentElement;
|
||||
if (parentEl) {
|
||||
const cites = parentEl.dataset.cites;
|
||||
if (cites) {
|
||||
return {
|
||||
el,
|
||||
cites: cites.split(' ')
|
||||
};
|
||||
} else {
|
||||
return findCites(el.parentElement)
|
||||
}
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
||||
for (var i=0; i<bibliorefs.length; i++) {
|
||||
const ref = bibliorefs[i];
|
||||
const citeInfo = findCites(ref);
|
||||
if (citeInfo) {
|
||||
tippyHover(citeInfo.el, function() {
|
||||
var popup = window.document.createElement('div');
|
||||
citeInfo.cites.forEach(function(cite) {
|
||||
var citeDiv = window.document.createElement('div');
|
||||
citeDiv.classList.add('hanging-indent');
|
||||
citeDiv.classList.add('csl-entry');
|
||||
var biblioDiv = window.document.getElementById('ref-' + cite);
|
||||
if (biblioDiv) {
|
||||
citeDiv.innerHTML = biblioDiv.innerHTML;
|
||||
}
|
||||
popup.appendChild(citeDiv);
|
||||
});
|
||||
return popup.innerHTML;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</div> <!-- /content -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,55 @@
|
|||
---
|
||||
title: "a letter"
|
||||
format:
|
||||
dwcl-html: default
|
||||
dwcl-pdf: default
|
||||
to_journal: "{{< meta submitjournal >}}"
|
||||
---
|
||||
|
||||
We are pleased to submit our manuscript, **“{{< meta title >}}”**, for consideration at ***{{< meta submitjournal >}}***.
|
||||
|
||||
|
||||
Among all algal-derived taste-and-odor compounds, 2-methylisoborneol (MIB) stands out as the most notorious and widespread offender. Since its initial identification, nearly 300 documented MIB-related odor outbreaks have been reported globally. With an exceptionally low odor threshold (10 ng L^-1^), MIB imparts a distinct earthy-musty smell that is immediately detectable in drinking water—transforming it from a mere water quality parameter into a critical public concern capable of triggering widespread complaints during outbreaks.
|
||||
|
||||
|
||||
The partitioning of MIB between intracellular and extracellular compartments critically determines treatment strategy selection. When MIB is primarily intracellular, conventional treatment processes such as coagulation-sedimentation can achieve cost-effective removal. However, when MIB becomes predominantly extracellular, utilities must implement advanced treatment options like ozone-activated carbon - a significantly more expensive approach that remains unavailable at many facilities. This fundamental distinction creates a critical decision point for water treatment optimization, where accurate prediction of MIB partitioning directly impacts both operational efficiency and treatment costs.
|
||||
|
||||
|
||||
Yet, current research and monitoring practices overlook a key limitation: most studies and water treatment plants measure only total MIB concentrations, assuming a fixed intracellular/extracellular ratio. This oversimplification leads to suboptimal process selection, unstable removal efficiency, and, in some cases, exacerbates MIB release through inappropriate treatment.
|
||||
|
||||
Our study systematically investigates the dynamic partitioning of MIB between intracellular and extracellular compartments through controlled experiments with two major MIB-producing cyanobacteria (*Pseudanabaena* and *Planktothricoides*). We demonstrate that the extracellular fraction exhibits distinct growth phase-dependent patterns, where crowding effects during rapid growth phases trigger substantial MIB release. Building on these observations, we developed a **mechanistic model** based on logistic growth dynamics that quantitatively predicts MIB release patterns across the complete cyanobacterial life cycle.
|
||||
|
||||
|
||||
Our model's application to Lake Taihu's MIB outbreaks uncovered novel spatiotemporal patterns in cyanobacterial populations responsible for odorant production. More significantly, we established a predictive risk assessment framework that pinpoints key environmental drivers controlling both MIB occurrence and its release dynamics. This framework enables proactive identification of high-risk conditions preceding major release events.
|
||||
|
||||
Key Findings of this study include:
|
||||
|
||||
1. Crowding effects during cellular growth govern MIB partitioning.
|
||||
|
||||
2. The model successfully forecasts large-scale MIB release events.
|
||||
|
||||
3. It provides actionable guidance for optimizing water treatment processes.
|
||||
|
||||
To our knowledge, this is the first mechanistic framework explaining growth-dependent MIB release dynamics. Importantly, our approach shows promise for modeling other algal metabolites (e.g., geosmin, cyanotoxins), offering broader implications for water quality management.
|
||||
|
||||
We believe this study will interest researchers working on algal metabolites, water treatment engineers, and resource managers addressing cyanobacterial blooms. The combination of fundamental insights and practical applications aligns well with ***{{< meta submitjournal >}}***'s mission to bridge scientific discovery and environmental technology.
|
||||
|
||||
To ensure a thorough and expert evaluation of our manuscript, we suggest the following potential reviewers with specialized expertise in algal metabolites, water treatment technologies, and cyanobacterial ecology. Additional information about each candidate reviewer is available via the *Web link* provided.
|
||||
|
||||
|
||||
**Potential Reviewers:**
|
||||
|
||||
1. **Tsair-Fuh Lin**: National Cheng Kung University. Email: <tflin@mail.ncku.edu.tw>; *[Web Link](https://researchoutput.ncku.edu.tw/en/persons/tsair-fuh-lin)*
|
||||
|
||||
2. **Arash Zamyadi**: Civil & Environmental Engineering, Monash University. Email: <Arash.Zamyadi@monash.edu>; *[Web Link](https://research.monash.edu/en/persons/arash-zamyadi)*
|
||||
|
||||
3. **Xuwei Deng**: Institute of hydrobiology, Chinese Academy of Sciences. Email: <dengxuwei@ihb.ac.cn>; *[Web Link](https://www.researchgate.net/profile/Deng-Xuwei)*
|
||||
|
||||
4. **Shushi Peng**: Peking University. Email: <speng@pku.edu.cn>; *[Web Link](https://www.researchgate.net/profile/Shushi-Peng)*
|
||||
|
||||
5. **Tom Andersen**: University of Oslo. Email: <tom.andersen@ibv.uio.no>; *[Web Link](https://www.mn.uio.no/ibv/english/people/aca/tomand/)*
|
||||
|
||||
6. **Muhe Diao**: University of Calgray. Email: <muhe.diao@ucalgary.ca>; *[Web Link](https://www.ucalgary.ca/labs/ebg/people/muhe-diao)*
|
||||
|
||||
Thank you for considering our work. We would be pleased to address any questions or suggestions during the review process.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
.Rproj.user
|
||||
.Rhistory
|
||||
.RData
|
||||
.Ruserdata
|
||||
site_libs/
|
||||
/.quarto/
|
||||
site_libs/
|
||||
BB/Ref.bib
|
||||
_variables.yml
|
||||
_freeze/
|
||||
www/
|
||||
.source_state
|
|
@ -0,0 +1,514 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="generator" content="quarto-1.7.29">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
|
||||
|
||||
<meta name="author" content="Ming Su">
|
||||
<meta name="dcterms.date" content="2025-07-27">
|
||||
|
||||
<title>MANUSCRIPT TITLE</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
ul.task-list{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src="CL1_files/libs/clipboard/clipboard.min.js"></script>
|
||||
<script src="CL1_files/libs/quarto-html/quarto.js" type="module"></script>
|
||||
<script src="CL1_files/libs/quarto-html/tabsets/tabsets.js" type="module"></script>
|
||||
<script src="CL1_files/libs/quarto-html/popper.min.js"></script>
|
||||
<script src="CL1_files/libs/quarto-html/tippy.umd.min.js"></script>
|
||||
<script src="CL1_files/libs/quarto-html/anchor.min.js"></script>
|
||||
<link href="CL1_files/libs/quarto-html/tippy.css" rel="stylesheet">
|
||||
<link href="CL1_files/libs/quarto-html/quarto-syntax-highlighting-0815c480559380816a4d1ea211a47e91.css" rel="stylesheet" id="quarto-text-highlighting-styles">
|
||||
<script src="CL1_files/libs/bootstrap/bootstrap.min.js"></script>
|
||||
<link href="CL1_files/libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
|
||||
<link href="CL1_files/libs/bootstrap/bootstrap-81267100e462c21b3d6c0d5bf76a3417.min.css" rel="stylesheet" append-hash="true" id="quarto-bootstrap" data-mode="light">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_extensions/drwater/dwcl/style.css">
|
||||
</head>
|
||||
|
||||
<body class="quarto-light">
|
||||
|
||||
<div id="quarto-content" class="page-columns page-rows-contents page-layout-article">
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
<div class="quarto-alternate-formats"><h2>Other Formats</h2><ul><li><a href="CL1.pdf"><i class="bi bi-file-pdf"></i>PDF (dwcl)</a></li></ul></div></div>
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">MANUSCRIPT TITLE</h1>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Author</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p>Ming Su </p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Published</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p class="date">July 27, 2025</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<p>We are pleased to submit our manuscript, <strong>“MANUSCRIPT TITLE”</strong>, for consideration at <strong><em>JOURNAL</em></strong>.</p>
|
||||
<p>Among all algal-derived taste-and-odor compounds, 2-methylisoborneol (MIB) stands out as the most notorious and widespread offender. Since its initial identification, nearly 300 documented MIB-related odor outbreaks have been reported globally. With an exceptionally low odor threshold (10 ng L<sup>-1</sup>), MIB imparts a distinct earthy-musty smell that is immediately detectable in drinking water—transforming it from a mere water quality parameter into a critical public concern capable of triggering widespread complaints during outbreaks.</p>
|
||||
<p>The partitioning of MIB between intracellular and extracellular compartments critically determines treatment strategy selection. When MIB is primarily intracellular, conventional treatment processes such as coagulation-sedimentation can achieve cost-effective removal. However, when MIB becomes predominantly extracellular, utilities must implement advanced treatment options like ozone-activated carbon - a significantly more expensive approach that remains unavailable at many facilities. This fundamental distinction creates a critical decision point for water treatment optimization, where accurate prediction of MIB partitioning directly impacts both operational efficiency and treatment costs.</p>
|
||||
<p>Yet, current research and monitoring practices overlook a key limitation: most studies and water treatment plants measure only total MIB concentrations, assuming a fixed intracellular/extracellular ratio. This oversimplification leads to suboptimal process selection, unstable removal efficiency, and, in some cases, exacerbates MIB release through inappropriate treatment.</p>
|
||||
<p>Our study systematically investigates the dynamic partitioning of MIB between intracellular and extracellular compartments through controlled experiments with two major MIB-producing cyanobacteria (<em>Pseudanabaena</em> and <em>Planktothricoides</em>). We demonstrate that the extracellular fraction exhibits distinct growth phase-dependent patterns, where crowding effects during rapid growth phases trigger substantial MIB release. Building on these observations, we developed a <strong>mechanistic model</strong> based on logistic growth dynamics that quantitatively predicts MIB release patterns across the complete cyanobacterial life cycle.</p>
|
||||
<p>Our model’s application to Lake Taihu’s MIB outbreaks uncovered novel spatiotemporal patterns in cyanobacterial populations responsible for odorant production. More significantly, we established a predictive risk assessment framework that pinpoints key environmental drivers controlling both MIB occurrence and its release dynamics. This framework enables proactive identification of high-risk conditions preceding major release events.</p>
|
||||
<p>Key Findings of this study include:</p>
|
||||
<ol type="1">
|
||||
<li><p>Crowding effects during cellular growth govern MIB partitioning.</p></li>
|
||||
<li><p>The model successfully forecasts large-scale MIB release events.</p></li>
|
||||
<li><p>It provides actionable guidance for optimizing water treatment processes.</p></li>
|
||||
</ol>
|
||||
<p>To our knowledge, this is the first mechanistic framework explaining growth-dependent MIB release dynamics. Importantly, our approach shows promise for modeling other algal metabolites (e.g., geosmin, cyanotoxins), offering broader implications for water quality management.</p>
|
||||
<p>We believe this study will interest researchers working on algal metabolites, water treatment engineers, and resource managers addressing cyanobacterial blooms. The combination of fundamental insights and practical applications aligns well with <strong><em>JOURNAL</em></strong>’s mission to bridge scientific discovery and environmental technology.</p>
|
||||
<p>To ensure a thorough and expert evaluation of our manuscript, we suggest the following potential reviewers with specialized expertise in algal metabolites, water treatment technologies, and cyanobacterial ecology. Additional information about each candidate reviewer is available via the <em>Web link</em> provided.</p>
|
||||
<p><strong>Potential Reviewers:</strong></p>
|
||||
<ol type="1">
|
||||
<li><p><strong>Tsair-Fuh Lin</strong>: National Cheng Kung University. Email: <a href="mailto:tflin@mail.ncku.edu.tw" class="email">tflin@mail.ncku.edu.tw</a>; <em><a href="https://researchoutput.ncku.edu.tw/en/persons/tsair-fuh-lin">Web Link</a></em></p></li>
|
||||
<li><p><strong>Arash Zamyadi</strong>: Civil & Environmental Engineering, Monash University. Email: <a href="mailto:Arash.Zamyadi@monash.edu" class="email">Arash.Zamyadi@monash.edu</a>; <em><a href="https://research.monash.edu/en/persons/arash-zamyadi">Web Link</a></em></p></li>
|
||||
<li><p><strong>Xuwei Deng</strong>: Institute of hydrobiology, Chinese Academy of Sciences. Email: <a href="mailto:dengxuwei@ihb.ac.cn" class="email">dengxuwei@ihb.ac.cn</a>; <em><a href="https://www.researchgate.net/profile/Deng-Xuwei">Web Link</a></em></p></li>
|
||||
<li><p><strong>Shushi Peng</strong>: Peking University. Email: <a href="mailto:speng@pku.edu.cn" class="email">speng@pku.edu.cn</a>; <em><a href="https://www.researchgate.net/profile/Shushi-Peng">Web Link</a></em></p></li>
|
||||
<li><p><strong>Tom Andersen</strong>: University of Oslo. Email: <a href="mailto:tom.andersen@ibv.uio.no" class="email">tom.andersen@ibv.uio.no</a>; <em><a href="https://www.mn.uio.no/ibv/english/people/aca/tomand/">Web Link</a></em></p></li>
|
||||
<li><p><strong>Muhe Diao</strong>: University of Calgray. Email: <a href="mailto:muhe.diao@ucalgary.ca" class="email">muhe.diao@ucalgary.ca</a>; <em><a href="https://www.ucalgary.ca/labs/ebg/people/muhe-diao">Web Link</a></em></p></li>
|
||||
</ol>
|
||||
<p>Thank you for considering our work. We would be pleased to address any questions or suggestions during the review process.</p>
|
||||
|
||||
</main>
|
||||
<!-- /main column -->
|
||||
<script id="quarto-html-after-body" type="application/javascript">
|
||||
window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
const icon = "";
|
||||
const anchorJS = new window.AnchorJS();
|
||||
anchorJS.options = {
|
||||
placement: 'right',
|
||||
icon: icon
|
||||
};
|
||||
anchorJS.add('.anchored');
|
||||
const isCodeAnnotation = (el) => {
|
||||
for (const clz of el.classList) {
|
||||
if (clz.startsWith('code-annotation-')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
const onCopySuccess = function(e) {
|
||||
// button target
|
||||
const button = e.trigger;
|
||||
// don't keep focus
|
||||
button.blur();
|
||||
// flash "checked"
|
||||
button.classList.add('code-copy-button-checked');
|
||||
var currentTitle = button.getAttribute("title");
|
||||
button.setAttribute("title", "Copied!");
|
||||
let tooltip;
|
||||
if (window.bootstrap) {
|
||||
button.setAttribute("data-bs-toggle", "tooltip");
|
||||
button.setAttribute("data-bs-placement", "left");
|
||||
button.setAttribute("data-bs-title", "Copied!");
|
||||
tooltip = new bootstrap.Tooltip(button,
|
||||
{ trigger: "manual",
|
||||
customClass: "code-copy-button-tooltip",
|
||||
offset: [0, -8]});
|
||||
tooltip.show();
|
||||
}
|
||||
setTimeout(function() {
|
||||
if (tooltip) {
|
||||
tooltip.hide();
|
||||
button.removeAttribute("data-bs-title");
|
||||
button.removeAttribute("data-bs-toggle");
|
||||
button.removeAttribute("data-bs-placement");
|
||||
}
|
||||
button.setAttribute("title", currentTitle);
|
||||
button.classList.remove('code-copy-button-checked');
|
||||
}, 1000);
|
||||
// clear code selection
|
||||
e.clearSelection();
|
||||
}
|
||||
const getTextToCopy = function(trigger) {
|
||||
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
||||
for (const childEl of codeEl.children) {
|
||||
if (isCodeAnnotation(childEl)) {
|
||||
childEl.remove();
|
||||
}
|
||||
}
|
||||
return codeEl.innerText;
|
||||
}
|
||||
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
|
||||
text: getTextToCopy
|
||||
});
|
||||
clipboard.on('success', onCopySuccess);
|
||||
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
|
||||
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
|
||||
text: getTextToCopy,
|
||||
container: window.document.getElementById('quarto-embedded-source-code-modal')
|
||||
});
|
||||
clipboardModal.on('success', onCopySuccess);
|
||||
}
|
||||
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
|
||||
var mailtoRegex = new RegExp(/^mailto:/);
|
||||
var filterRegex = new RegExp('/' + window.location.host + '/');
|
||||
var isInternal = (href) => {
|
||||
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
|
||||
}
|
||||
// Inspect non-navigation links and adorn them if external
|
||||
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
|
||||
for (var i=0; i<links.length; i++) {
|
||||
const link = links[i];
|
||||
if (!isInternal(link.href)) {
|
||||
// undo the damage that might have been done by quarto-nav.js in the case of
|
||||
// links that we want to consider external
|
||||
if (link.dataset.originalHref !== undefined) {
|
||||
link.href = link.dataset.originalHref;
|
||||
}
|
||||
}
|
||||
}
|
||||
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
|
||||
const config = {
|
||||
allowHTML: true,
|
||||
maxWidth: 500,
|
||||
delay: 100,
|
||||
arrow: false,
|
||||
appendTo: function(el) {
|
||||
return el.parentElement;
|
||||
},
|
||||
interactive: true,
|
||||
interactiveBorder: 10,
|
||||
theme: 'quarto',
|
||||
placement: 'bottom-start',
|
||||
};
|
||||
if (contentFn) {
|
||||
config.content = contentFn;
|
||||
}
|
||||
if (onTriggerFn) {
|
||||
config.onTrigger = onTriggerFn;
|
||||
}
|
||||
if (onUntriggerFn) {
|
||||
config.onUntrigger = onUntriggerFn;
|
||||
}
|
||||
window.tippy(el, config);
|
||||
}
|
||||
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
||||
for (var i=0; i<noterefs.length; i++) {
|
||||
const ref = noterefs[i];
|
||||
tippyHover(ref, function() {
|
||||
// use id or data attribute instead here
|
||||
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
||||
try { href = new URL(href).hash; } catch {}
|
||||
const id = href.replace(/^#\/?/, "");
|
||||
const note = window.document.getElementById(id);
|
||||
if (note) {
|
||||
return note.innerHTML;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
});
|
||||
}
|
||||
const xrefs = window.document.querySelectorAll('a.quarto-xref');
|
||||
const processXRef = (id, note) => {
|
||||
// Strip column container classes
|
||||
const stripColumnClz = (el) => {
|
||||
el.classList.remove("page-full", "page-columns");
|
||||
if (el.children) {
|
||||
for (const child of el.children) {
|
||||
stripColumnClz(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
stripColumnClz(note)
|
||||
if (id === null || id.startsWith('sec-')) {
|
||||
// Special case sections, only their first couple elements
|
||||
const container = document.createElement("div");
|
||||
if (note.children && note.children.length > 2) {
|
||||
container.appendChild(note.children[0].cloneNode(true));
|
||||
for (let i = 1; i < note.children.length; i++) {
|
||||
const child = note.children[i];
|
||||
if (child.tagName === "P" && child.innerText === "") {
|
||||
continue;
|
||||
} else {
|
||||
container.appendChild(child.cloneNode(true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(container);
|
||||
}
|
||||
return container.innerHTML
|
||||
} else {
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(note);
|
||||
}
|
||||
return note.innerHTML;
|
||||
}
|
||||
} else {
|
||||
// Remove any anchor links if they are present
|
||||
const anchorLink = note.querySelector('a.anchorjs-link');
|
||||
if (anchorLink) {
|
||||
anchorLink.remove();
|
||||
}
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(note);
|
||||
}
|
||||
if (note.classList.contains("callout")) {
|
||||
return note.outerHTML;
|
||||
} else {
|
||||
return note.innerHTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i=0; i<xrefs.length; i++) {
|
||||
const xref = xrefs[i];
|
||||
tippyHover(xref, undefined, function(instance) {
|
||||
instance.disable();
|
||||
let url = xref.getAttribute('href');
|
||||
let hash = undefined;
|
||||
if (url.startsWith('#')) {
|
||||
hash = url;
|
||||
} else {
|
||||
try { hash = new URL(url).hash; } catch {}
|
||||
}
|
||||
if (hash) {
|
||||
const id = hash.replace(/^#\/?/, "");
|
||||
const note = window.document.getElementById(id);
|
||||
if (note !== null) {
|
||||
try {
|
||||
const html = processXRef(id, note.cloneNode(true));
|
||||
instance.setContent(html);
|
||||
} finally {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
}
|
||||
} else {
|
||||
// See if we can fetch this
|
||||
fetch(url.split('#')[0])
|
||||
.then(res => res.text())
|
||||
.then(html => {
|
||||
const parser = new DOMParser();
|
||||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||||
const note = htmlDoc.getElementById(id);
|
||||
if (note !== null) {
|
||||
const html = processXRef(id, note);
|
||||
instance.setContent(html);
|
||||
}
|
||||
}).finally(() => {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// See if we can fetch a full url (with no hash to target)
|
||||
// This is a special case and we should probably do some content thinning / targeting
|
||||
fetch(url)
|
||||
.then(res => res.text())
|
||||
.then(html => {
|
||||
const parser = new DOMParser();
|
||||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||||
const note = htmlDoc.querySelector('main.content');
|
||||
if (note !== null) {
|
||||
// This should only happen for chapter cross references
|
||||
// (since there is no id in the URL)
|
||||
// remove the first header
|
||||
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
|
||||
note.children[0].remove();
|
||||
}
|
||||
const html = processXRef(null, note);
|
||||
instance.setContent(html);
|
||||
}
|
||||
}).finally(() => {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
});
|
||||
}
|
||||
}, function(instance) {
|
||||
});
|
||||
}
|
||||
let selectedAnnoteEl;
|
||||
const selectorForAnnotation = ( cell, annotation) => {
|
||||
let cellAttr = 'data-code-cell="' + cell + '"';
|
||||
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
||||
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
||||
return selector;
|
||||
}
|
||||
const selectCodeLines = (annoteEl) => {
|
||||
const doc = window.document;
|
||||
const targetCell = annoteEl.getAttribute("data-target-cell");
|
||||
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
||||
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
||||
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
||||
const lineIds = lines.map((line) => {
|
||||
return targetCell + "-" + line;
|
||||
})
|
||||
let top = null;
|
||||
let height = null;
|
||||
let parent = null;
|
||||
if (lineIds.length > 0) {
|
||||
//compute the position of the single el (top and bottom and make a div)
|
||||
const el = window.document.getElementById(lineIds[0]);
|
||||
top = el.offsetTop;
|
||||
height = el.offsetHeight;
|
||||
parent = el.parentElement.parentElement;
|
||||
if (lineIds.length > 1) {
|
||||
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
||||
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
||||
height = bottom - top;
|
||||
}
|
||||
if (top !== null && height !== null && parent !== null) {
|
||||
// cook up a div (if necessary) and position it
|
||||
let div = window.document.getElementById("code-annotation-line-highlight");
|
||||
if (div === null) {
|
||||
div = window.document.createElement("div");
|
||||
div.setAttribute("id", "code-annotation-line-highlight");
|
||||
div.style.position = 'absolute';
|
||||
parent.appendChild(div);
|
||||
}
|
||||
div.style.top = top - 2 + "px";
|
||||
div.style.height = height + 4 + "px";
|
||||
div.style.left = 0;
|
||||
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
||||
if (gutterDiv === null) {
|
||||
gutterDiv = window.document.createElement("div");
|
||||
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
||||
gutterDiv.style.position = 'absolute';
|
||||
const codeCell = window.document.getElementById(targetCell);
|
||||
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
||||
gutter.appendChild(gutterDiv);
|
||||
}
|
||||
gutterDiv.style.top = top - 2 + "px";
|
||||
gutterDiv.style.height = height + 4 + "px";
|
||||
}
|
||||
selectedAnnoteEl = annoteEl;
|
||||
}
|
||||
};
|
||||
const unselectCodeLines = () => {
|
||||
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
||||
elementsIds.forEach((elId) => {
|
||||
const div = window.document.getElementById(elId);
|
||||
if (div) {
|
||||
div.remove();
|
||||
}
|
||||
});
|
||||
selectedAnnoteEl = undefined;
|
||||
};
|
||||
// Handle positioning of the toggle
|
||||
window.addEventListener(
|
||||
"resize",
|
||||
throttle(() => {
|
||||
elRect = undefined;
|
||||
if (selectedAnnoteEl) {
|
||||
selectCodeLines(selectedAnnoteEl);
|
||||
}
|
||||
}, 10)
|
||||
);
|
||||
function throttle(fn, ms) {
|
||||
let throttle = false;
|
||||
let timer;
|
||||
return (...args) => {
|
||||
if(!throttle) { // first call gets through
|
||||
fn.apply(this, args);
|
||||
throttle = true;
|
||||
} else { // all the others get throttled
|
||||
if(timer) clearTimeout(timer); // cancel #2
|
||||
timer = setTimeout(() => {
|
||||
fn.apply(this, args);
|
||||
timer = throttle = false;
|
||||
}, ms);
|
||||
}
|
||||
};
|
||||
}
|
||||
// Attach click handler to the DT
|
||||
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
||||
for (const annoteDlNode of annoteDls) {
|
||||
annoteDlNode.addEventListener('click', (event) => {
|
||||
const clickedEl = event.target;
|
||||
if (clickedEl !== selectedAnnoteEl) {
|
||||
unselectCodeLines();
|
||||
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
||||
if (activeEl) {
|
||||
activeEl.classList.remove('code-annotation-active');
|
||||
}
|
||||
selectCodeLines(clickedEl);
|
||||
clickedEl.classList.add('code-annotation-active');
|
||||
} else {
|
||||
// Unselect the line
|
||||
unselectCodeLines();
|
||||
clickedEl.classList.remove('code-annotation-active');
|
||||
}
|
||||
});
|
||||
}
|
||||
const findCites = (el) => {
|
||||
const parentEl = el.parentElement;
|
||||
if (parentEl) {
|
||||
const cites = parentEl.dataset.cites;
|
||||
if (cites) {
|
||||
return {
|
||||
el,
|
||||
cites: cites.split(' ')
|
||||
};
|
||||
} else {
|
||||
return findCites(el.parentElement)
|
||||
}
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
||||
for (var i=0; i<bibliorefs.length; i++) {
|
||||
const ref = bibliorefs[i];
|
||||
const citeInfo = findCites(ref);
|
||||
if (citeInfo) {
|
||||
tippyHover(citeInfo.el, function() {
|
||||
var popup = window.document.createElement('div');
|
||||
citeInfo.cites.forEach(function(cite) {
|
||||
var citeDiv = window.document.createElement('div');
|
||||
citeDiv.classList.add('hanging-indent');
|
||||
citeDiv.classList.add('csl-entry');
|
||||
var biblioDiv = window.document.getElementById('ref-' + cite);
|
||||
if (biblioDiv) {
|
||||
citeDiv.innerHTML = biblioDiv.innerHTML;
|
||||
}
|
||||
popup.appendChild(citeDiv);
|
||||
});
|
||||
return popup.innerHTML;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</div> <!-- /content -->
|
||||
|
||||
|
||||
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1,69 @@
|
|||
---
|
||||
format:
|
||||
dwcl-html: default
|
||||
dwcl-pdf:
|
||||
keep-tex: true
|
||||
date: today
|
||||
author: "Ming Su"
|
||||
affliction: Key Laboratory of Environmental Aquatic Chemistry, State Key Laboratory of Regional Environment and Sustainability, Research Center for Eco-Environmental Sciences, Chinese Academy of Sciences
|
||||
from_email: "mingsu@rcees.ac.cn"
|
||||
from_phone: "+86 (10) 62843038"
|
||||
from_institution_logo: "_extensions/drwater/dwcl/inst/rceeslonglogo.png"
|
||||
from_sign: "_extensions/drwater/dwcl/inst/signms.png"
|
||||
from_position: "Professor"
|
||||
from_professional_title: "Ph.D."
|
||||
from_institution: "Chinese Academy of Sciences"
|
||||
from_department: "Research Center for Eco-Environmental Sciences"
|
||||
from_address: "P.O. Box 2871, Beijing"
|
||||
to_professional_title: ""
|
||||
to_name: "Editor-in-Chief"
|
||||
to_journal: "{{< meta submitjournal >}}"
|
||||
opening_greeting: "Dear Editor,"
|
||||
closing_greeting: "Yours Sincerely,"
|
||||
---
|
||||
|
||||
We are pleased to submit our manuscript, **“{{< meta title >}}”**, for consideration at ***{{< meta submitjournal >}}***.
|
||||
|
||||
Among all algal-derived taste-and-odor compounds, 2-methylisoborneol (MIB) stands out as the most notorious and widespread offender. Since its initial identification, nearly 300 documented MIB-related odor outbreaks have been reported globally. With an exceptionally low odor threshold (10 ng L^-1^), MIB imparts a distinct earthy-musty smell that is immediately detectable in drinking water—transforming it from a mere water quality parameter into a critical public concern capable of triggering widespread complaints during outbreaks.
|
||||
|
||||
|
||||
The partitioning of MIB between intracellular and extracellular compartments critically determines treatment strategy selection. When MIB is primarily intracellular, conventional treatment processes such as coagulation-sedimentation can achieve cost-effective removal. However, when MIB becomes predominantly extracellular, utilities must implement advanced treatment options like ozone-activated carbon - a significantly more expensive approach that remains unavailable at many facilities. This fundamental distinction creates a critical decision point for water treatment optimization, where accurate prediction of MIB partitioning directly impacts both operational efficiency and treatment costs.
|
||||
|
||||
|
||||
Yet, current research and monitoring practices overlook a key limitation: most studies and water treatment plants measure only total MIB concentrations, assuming a fixed intracellular/extracellular ratio. This oversimplification leads to suboptimal process selection, unstable removal efficiency, and, in some cases, exacerbates MIB release through inappropriate treatment.
|
||||
|
||||
Our study systematically investigates the dynamic partitioning of MIB between intracellular and extracellular compartments through controlled experiments with two major MIB-producing cyanobacteria (*Pseudanabaena* and *Planktothricoides*). We demonstrate that the extracellular fraction exhibits distinct growth phase-dependent patterns, where crowding effects during rapid growth phases trigger substantial MIB release. Building on these observations, we developed a **mechanistic model** based on logistic growth dynamics that quantitatively predicts MIB release patterns across the complete cyanobacterial life cycle.
|
||||
|
||||
|
||||
Our model's application to Lake Taihu's MIB outbreaks uncovered novel spatiotemporal patterns in cyanobacterial populations responsible for odorant production. More significantly, we established a predictive risk assessment framework that pinpoints key environmental drivers controlling both MIB occurrence and its release dynamics. This framework enables proactive identification of high-risk conditions preceding major release events.
|
||||
|
||||
Key Findings of this study include:
|
||||
|
||||
1. Crowding effects during cellular growth govern MIB partitioning.
|
||||
|
||||
2. The model successfully forecasts large-scale MIB release events.
|
||||
|
||||
3. It provides actionable guidance for optimizing water treatment processes.
|
||||
|
||||
To our knowledge, this is the first mechanistic framework explaining growth-dependent MIB release dynamics. Importantly, our approach shows promise for modeling other algal metabolites (e.g., geosmin, cyanotoxins), offering broader implications for water quality management.
|
||||
|
||||
We believe this study will interest researchers working on algal metabolites, water treatment engineers, and resource managers addressing cyanobacterial blooms. The combination of fundamental insights and practical applications aligns well with ***{{< meta submitjournal >}}***'s mission to bridge scientific discovery and environmental technology.
|
||||
|
||||
To ensure a thorough and expert evaluation of our manuscript, we suggest the following potential reviewers with specialized expertise in algal metabolites, water treatment technologies, and cyanobacterial ecology. Additional information about each candidate reviewer is available via the *Web link* provided.
|
||||
|
||||
|
||||
**Potential Reviewers:**
|
||||
|
||||
1. **Tsair-Fuh Lin**: National Cheng Kung University. Email: <tflin@mail.ncku.edu.tw>; *[Web Link](https://researchoutput.ncku.edu.tw/en/persons/tsair-fuh-lin)*
|
||||
|
||||
2. **Arash Zamyadi**: Civil & Environmental Engineering, Monash University. Email: <Arash.Zamyadi@monash.edu>; *[Web Link](https://research.monash.edu/en/persons/arash-zamyadi)*
|
||||
|
||||
3. **Xuwei Deng**: Institute of hydrobiology, Chinese Academy of Sciences. Email: <dengxuwei@ihb.ac.cn>; *[Web Link](https://www.researchgate.net/profile/Deng-Xuwei)*
|
||||
|
||||
4. **Shushi Peng**: Peking University. Email: <speng@pku.edu.cn>; *[Web Link](https://www.researchgate.net/profile/Shushi-Peng)*
|
||||
|
||||
5. **Tom Andersen**: University of Oslo. Email: <tom.andersen@ibv.uio.no>; *[Web Link](https://www.mn.uio.no/ibv/english/people/aca/tomand/)*
|
||||
|
||||
6. **Muhe Diao**: University of Calgray. Email: <muhe.diao@ucalgary.ca>; *[Web Link](https://www.ucalgary.ca/labs/ebg/people/muhe-diao)*
|
||||
|
||||
Thank you for considering our work. We would be pleased to address any questions or suggestions during the review process.
|
|
@ -0,0 +1,359 @@
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Academic Letter LaTeX and RMarkdown Structure %
|
||||
% Author: Pedro Henrique Pereira Braga %
|
||||
% %
|
||||
% License: %
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% Set the font size (11pt, for now) and paper size (e.g. letterpaper, a4paper)
|
||||
\documentclass[11pt, letterpaper]{letter}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
||||
%----------------------------------------------------------------------
|
||||
|
||||
\usepackage{graphicx} % Required for including pictures
|
||||
\usepackage{fancyhdr} % Allows the use of fancy headers and footers
|
||||
|
||||
\usepackage{microtype} % For typography improvement
|
||||
|
||||
\usepackage{url} % Allows the use of hyperlinks
|
||||
\urlstyle{same} % Allows hyperlink fonts to be the same as the mainfont
|
||||
\usepackage[hidelinks]{hyperref} % Allows the use of hyperlinks and
|
||||
% removes the blue boxes around the link
|
||||
|
||||
\pagestyle{empty} % Removes headers and footers
|
||||
|
||||
\usepackage{setspace} % Allows the use of double spacing in the letter body
|
||||
|
||||
\setlength\parindent{1cm} % Paragraph indentation
|
||||
|
||||
% Create a new command for the horizontal rule in the document which allows
|
||||
% thickness specification
|
||||
\makeatletter
|
||||
\def\@texttop{} % force the address to start above
|
||||
\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
|
||||
\thispagestyle{firstpage}%
|
||||
{\raggedleft\@date\par}%
|
||||
\else % home address
|
||||
\thispagestyle{empty}%
|
||||
{\raggedleft\begin{tabular}{l@{}}\ignorespaces
|
||||
\fromaddress \\*[2\parskip]%
|
||||
\@date \end{tabular}\par}%
|
||||
\fi
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
%{\raggedright \toname \\ \toaddress \par}% <-- Removed
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
#1\par\nobreak}
|
||||
\let\ps@empty\ps@plain
|
||||
\let\ps@firstpage\ps@plain
|
||||
\makeatother
|
||||
|
||||
%--------------------------------------------------------------------------
|
||||
% FONTS
|
||||
%--------------------------------------------------------------------------
|
||||
|
||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
||||
% \usepackage[utf8]{inputenc} % Required for inputting international characters
|
||||
\usepackage[quiet]{fontspec} % Allows the use of fontspec
|
||||
\setmainfont{Calibri}
|
||||
% \usepackage{txfonts} % Allows the use of Lato fonts
|
||||
|
||||
|
||||
%----------------------------------------------------------------------------
|
||||
% DOCUMENT MARGINS
|
||||
%----------------------------------------------------------------------------
|
||||
|
||||
\usepackage{geometry} % Required for adjusting page dimensions
|
||||
|
||||
\geometry{
|
||||
headheight = 0.7in, % Header height
|
||||
top=1.5in, % Top margin
|
||||
bottom=1.5cm, % Bottom margin
|
||||
left=3cm, % Left margin
|
||||
right=3cm, % Right margin
|
||||
% showframe, % Uncomment to show how the type block is set on the page
|
||||
}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% AUTHOR AND RECIPIENTS NEW COMMANDS AND DETAILS STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\newcommand{\authordetails}[1]{\renewcommand{\authordetails}{#1}}
|
||||
\newcommand{\recipientdetails}[1]{\renewcommand{\recipientdetails}{#1}}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% HEADER STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\address{
|
||||
% Include the author's details on the right side of the page under the line
|
||||
\raggedleft{
|
||||
\footnotesize{ % Use a smaller font size
|
||||
Ming Su\\ % Author name
|
||||
\authordetails\\
|
||||
\hspace{1mm}
|
||||
}
|
||||
}
|
||||
\vspace{-0.05\textheight} % Move the date and letter content up
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% COMPOSE THE ENTIRE HEADER
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\renewcommand{\opening}[1]{
|
||||
{\fromaddress
|
||||
\vspace{0.05\textheight}\\ % Print the sender's address here and add some whitespace to allow the printing of the date
|
||||
\raggedleft{2025-07-27} % Include the date, aligned to the right
|
||||
\par % par
|
||||
}
|
||||
{\raggedright
|
||||
\toname\\
|
||||
\toaddress
|
||||
\par} % Print the recipient's name and adress
|
||||
\vspace{0.25cm} % White vertical space after recipient's address
|
||||
\noindent #1 % Following this, insert the opening info
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% SIGNATURE STRUCTURE
|
||||
%------------------------------------------------------------------------------
|
||||
% The signature is a combination of the author's name, title and institution
|
||||
\signature{Ming Su, on behalf of all authors\\
|
||||
Email: mingsu@rcees.ac.cn}
|
||||
|
||||
% I will later combine the option of inserting a signature within it
|
||||
|
||||
\renewcommand{\closing}[1]{
|
||||
\vspace{2.5mm} % Some whitespace after the letter content and before the signature
|
||||
\noindent % Stop paragraph indentation
|
||||
% \hspace*{\longindentation} % Move the signature right to the value of \longindentation
|
||||
\parbox{\indentedwidth}{
|
||||
\raggedright
|
||||
#1 % Print the signature text
|
||||
% \vskip 1.65cm % Whitespace between the closing text and author's name for a physical signature
|
||||
\\\includegraphics[height=0.6in, keepaspectratio=true]{\_extensions/drwater/dwcl/inst/signmy.png}\\
|
||||
\fromsig % Prints the value of \signature{}, i.e. author name and title
|
||||
}
|
||||
}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% AUTHOR'S INFORMATION
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
\authordetails{
|
||||
Professor\\
|
||||
Research Center for Eco-Environmental
|
||||
Sciences\\ % Sender's department/institution
|
||||
Chinese Academy of Sciences\\
|
||||
P.O. Box 2871, Beijing % Sender's address
|
||||
% , \\ % Sender's city, state or province,
|
||||
% \\ % postal code
|
||||
%
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% RECIPIENT'S INFORMATION
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\recipientdetails{
|
||||
Editor-in-Chief\\
|
||||
\textit{JOURNAL}
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% HEADER CONTENTS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\fancypagestyle{firstpage}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{\_extensions/drwater/dwcl/inst/rceeslonglogo.png}
|
||||
}
|
||||
\fancyhead[R]{Ming Su\\
|
||||
\footnotesize{
|
||||
mingsu@rcees.ac.cn\\ % Sender's email address
|
||||
% \\ % Sender's URL
|
||||
+86 (10) 62843038 % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{\_extensions/drwater/dwcl/inst/rceeslonglogo.png}
|
||||
}
|
||||
\fancyhead[R]{Ming Su\\
|
||||
\footnotesize{
|
||||
mingsu@rcees.ac.cn\\ % Sender's email address
|
||||
% \\ % Sender's URL
|
||||
+86 (10) 62843038 % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{empty}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{\_extensions/drwater/dwcl/inst/rceeslonglogo.png}
|
||||
}
|
||||
\fancyhead[R]{Ming Su\\
|
||||
\footnotesize{
|
||||
mingsu@rcees.ac.cn\\ % Sender's email address
|
||||
% \\ % Sender's URL
|
||||
+86 (10) 62843038 % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
\pagestyle{plain}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% TO ADDRESS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\begin{letter}{\recipientdetails}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% LETTER CONTENT
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\opening{Dear Editor,}
|
||||
% \begin{doublespacing}
|
||||
|
||||
We are pleased to submit our manuscript, \textbf{``MANUSCRIPT TITLE''},
|
||||
for consideration at \textbf{\emph{JOURNAL}}.
|
||||
|
||||
Among all algal-derived taste-and-odor compounds, 2-methylisoborneol
|
||||
(MIB) stands out as the most notorious and widespread offender. Since
|
||||
its initial identification, nearly 300 documented MIB-related odor
|
||||
outbreaks have been reported globally. With an exceptionally low odor
|
||||
threshold (10 ng L\textsuperscript{-1}), MIB imparts a distinct
|
||||
earthy-musty smell that is immediately detectable in drinking
|
||||
water---transforming it from a mere water quality parameter into a
|
||||
critical public concern capable of triggering widespread complaints
|
||||
during outbreaks.
|
||||
|
||||
The partitioning of MIB between intracellular and extracellular
|
||||
compartments critically determines treatment strategy selection. When
|
||||
MIB is primarily intracellular, conventional treatment processes such as
|
||||
coagulation-sedimentation can achieve cost-effective removal. However,
|
||||
when MIB becomes predominantly extracellular, utilities must implement
|
||||
advanced treatment options like ozone-activated carbon - a significantly
|
||||
more expensive approach that remains unavailable at many facilities.
|
||||
This fundamental distinction creates a critical decision point for water
|
||||
treatment optimization, where accurate prediction of MIB partitioning
|
||||
directly impacts both operational efficiency and treatment costs.
|
||||
|
||||
Yet, current research and monitoring practices overlook a key
|
||||
limitation: most studies and water treatment plants measure only total
|
||||
MIB concentrations, assuming a fixed intracellular/extracellular ratio.
|
||||
This oversimplification leads to suboptimal process selection, unstable
|
||||
removal efficiency, and, in some cases, exacerbates MIB release through
|
||||
inappropriate treatment.
|
||||
|
||||
Our study systematically investigates the dynamic partitioning of MIB
|
||||
between intracellular and extracellular compartments through controlled
|
||||
experiments with two major MIB-producing cyanobacteria
|
||||
(\emph{Pseudanabaena} and \emph{Planktothricoides}). We demonstrate that
|
||||
the extracellular fraction exhibits distinct growth phase-dependent
|
||||
patterns, where crowding effects during rapid growth phases trigger
|
||||
substantial MIB release. Building on these observations, we developed a
|
||||
\textbf{mechanistic model} based on logistic growth dynamics that
|
||||
quantitatively predicts MIB release patterns across the complete
|
||||
cyanobacterial life cycle.
|
||||
|
||||
Our model's application to Lake Taihu's MIB outbreaks uncovered novel
|
||||
spatiotemporal patterns in cyanobacterial populations responsible for
|
||||
odorant production. More significantly, we established a predictive risk
|
||||
assessment framework that pinpoints key environmental drivers
|
||||
controlling both MIB occurrence and its release dynamics. This framework
|
||||
enables proactive identification of high-risk conditions preceding major
|
||||
release events.
|
||||
|
||||
Key Findings of this study include:
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\item
|
||||
Crowding effects during cellular growth govern MIB partitioning.
|
||||
\item
|
||||
The model successfully forecasts large-scale MIB release events.
|
||||
\item
|
||||
It provides actionable guidance for optimizing water treatment
|
||||
processes.
|
||||
\end{enumerate}
|
||||
|
||||
To our knowledge, this is the first mechanistic framework explaining
|
||||
growth-dependent MIB release dynamics. Importantly, our approach shows
|
||||
promise for modeling other algal metabolites (e.g., geosmin,
|
||||
cyanotoxins), offering broader implications for water quality
|
||||
management.
|
||||
|
||||
We believe this study will interest researchers working on algal
|
||||
metabolites, water treatment engineers, and resource managers addressing
|
||||
cyanobacterial blooms. The combination of fundamental insights and
|
||||
practical applications aligns well with \textbf{\emph{JOURNAL}}'s
|
||||
mission to bridge scientific discovery and environmental technology.
|
||||
|
||||
To ensure a thorough and expert evaluation of our manuscript, we suggest
|
||||
the following potential reviewers with specialized expertise in algal
|
||||
metabolites, water treatment technologies, and cyanobacterial ecology.
|
||||
Additional information about each candidate reviewer is available via
|
||||
the \emph{Web link} provided.
|
||||
|
||||
\textbf{Potential Reviewers:}
|
||||
|
||||
\begin{enumerate}
|
||||
\def\labelenumi{\arabic{enumi}.}
|
||||
\item
|
||||
\textbf{Tsair-Fuh Lin}: National Cheng Kung University. Email:
|
||||
\href{mailto:tflin@mail.ncku.edu.tw}{\nolinkurl{tflin@mail.ncku.edu.tw}};
|
||||
\emph{\href{https://researchoutput.ncku.edu.tw/en/persons/tsair-fuh-lin}{Web
|
||||
Link}}
|
||||
\item
|
||||
\textbf{Arash Zamyadi}: Civil \& Environmental Engineering, Monash
|
||||
University. Email:
|
||||
\href{mailto:Arash.Zamyadi@monash.edu}{\nolinkurl{Arash.Zamyadi@monash.edu}};
|
||||
\emph{\href{https://research.monash.edu/en/persons/arash-zamyadi}{Web
|
||||
Link}}
|
||||
\item
|
||||
\textbf{Xuwei Deng}: Institute of hydrobiology, Chinese Academy of
|
||||
Sciences. Email:
|
||||
\href{mailto:dengxuwei@ihb.ac.cn}{\nolinkurl{dengxuwei@ihb.ac.cn}};
|
||||
\emph{\href{https://www.researchgate.net/profile/Deng-Xuwei}{Web
|
||||
Link}}
|
||||
\item
|
||||
\textbf{Shushi Peng}: Peking University. Email:
|
||||
\href{mailto:speng@pku.edu.cn}{\nolinkurl{speng@pku.edu.cn}};
|
||||
\emph{\href{https://www.researchgate.net/profile/Shushi-Peng}{Web
|
||||
Link}}
|
||||
\item
|
||||
\textbf{Tom Andersen}: University of Oslo. Email:
|
||||
\href{mailto:tom.andersen@ibv.uio.no}{\nolinkurl{tom.andersen@ibv.uio.no}};
|
||||
\emph{\href{https://www.mn.uio.no/ibv/english/people/aca/tomand/}{Web
|
||||
Link}}
|
||||
\item
|
||||
\textbf{Muhe Diao}: University of Calgray. Email:
|
||||
\href{mailto:muhe.diao@ucalgary.ca}{\nolinkurl{muhe.diao@ucalgary.ca}};
|
||||
\emph{\href{https://www.ucalgary.ca/labs/ebg/people/muhe-diao}{Web
|
||||
Link}}
|
||||
\end{enumerate}
|
||||
|
||||
Thank you for considering our work. We would be pleased to address any
|
||||
questions or suggestions during the review process.
|
||||
|
||||
% \end{doublespacing}
|
||||
\closing{Yours Sincerely,}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\end{letter}
|
||||
\end{document}
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
format:
|
||||
dwcl-html: default
|
||||
dwcl-pdf:
|
||||
keep-tex: true
|
||||
date: today
|
||||
author: "Min Yang"
|
||||
affliction: State Key Laboratory of Environmental Aquatic Chemistry, Research Center for Eco-Environmental Sciences, Chinese Academy of Sciences
|
||||
from_email: "yangmin@rcees.ac.cn"
|
||||
from_phone: "+86 (10) 62843038"
|
||||
from_institution_logo: "_extensions/drwater/dwcl/inst/rceeslonglogo.png"
|
||||
from_sign: "_extensions/drwater/dwcl/inst/signmy.png"
|
||||
from_position: "Vice Director, Professor"
|
||||
from_professional_title: "Ph.D."
|
||||
from_institution: "Chinese Academy of Sciences"
|
||||
from_department: "Research Center for Eco-Environmental Sciences"
|
||||
from_address: "P.O. Box 2871, Beijing"
|
||||
to_professional_title: ""
|
||||
to_name: "Editor-in-Chief"
|
||||
to_journal: "Water Research"
|
||||
opening_greeting: "Dear Editor,"
|
||||
closing_greeting: "Yours Sincerely,"
|
||||
---
|
||||
|
||||
Thank you for your consideration our manuscript (`{{< meta submitid >}}`) in publishing in {{< meta submitjournal >}}, and we also thank the reviewers for their kind and valuable comments.
|
||||
|
||||
We have carefully revised the manuscript according to each comment from the reviewers. As requested, revision note with point to point responses and actions, change tracking manuscript and revised manuscript have been prepared and included in the revision submission.
|
||||
|
||||
We believe that the paper has been greatly improved. Looking forward to your further instruction regarding its publication.
|
|
@ -5,23 +5,13 @@ authors:
|
|||
version: 0.1.0
|
||||
quarto-required: ">=1.3.0"
|
||||
resources:
|
||||
- header.tex
|
||||
- partials/title.tex
|
||||
- partials/before-body.tex
|
||||
- partials/after-body.tex
|
||||
- dwcl.tex
|
||||
contributes:
|
||||
formats:
|
||||
html:
|
||||
css: style.css
|
||||
pdf:
|
||||
template-partials:
|
||||
- partials/title.tex
|
||||
- partials/before-body.tex
|
||||
- partials/after-body.tex
|
||||
include-in-header:
|
||||
- header.tex
|
||||
documentclass: letter
|
||||
papersize: letter
|
||||
geometry:
|
||||
- margin=1in
|
||||
toc: false
|
||||
number-sections: false
|
||||
lang: en
|
||||
latex_engine: xelatex
|
||||
template: dwcl.tex
|
||||
keep-tex: false
|
||||
keep-md: false
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
title: Academic Letter Template
|
||||
authors:
|
||||
- name: Ming Su
|
||||
affiliation: drwater
|
||||
version: 0.1.0
|
||||
quarto-required: ">=1.3.0"
|
||||
resources:
|
||||
- dwcl.tex
|
||||
- style.css
|
||||
contributes:
|
||||
formats:
|
||||
html:
|
||||
css: style.css
|
||||
pdf:
|
||||
latex_engine: xelatex
|
||||
template: dwcl.tex
|
||||
keep-tex: false
|
||||
keep-md: false
|
|
@ -0,0 +1,240 @@
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Academic Letter LaTeX and RMarkdown Structure %
|
||||
% Author: Pedro Henrique Pereira Braga %
|
||||
% %
|
||||
% License: %
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% Set the font size (11pt, for now) and paper size (e.g. letterpaper, a4paper)
|
||||
\documentclass[11pt, letterpaper]{letter}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
||||
%----------------------------------------------------------------------
|
||||
|
||||
\usepackage{graphicx} % Required for including pictures
|
||||
\usepackage{fancyhdr} % Allows the use of fancy headers and footers
|
||||
|
||||
\usepackage{microtype} % For typography improvement
|
||||
|
||||
\usepackage{url} % Allows the use of hyperlinks
|
||||
\urlstyle{same} % Allows hyperlink fonts to be the same as the mainfont
|
||||
\usepackage[hidelinks]{hyperref} % Allows the use of hyperlinks and
|
||||
% removes the blue boxes around the link
|
||||
|
||||
\pagestyle{empty} % Removes headers and footers
|
||||
|
||||
\usepackage{setspace} % Allows the use of double spacing in the letter body
|
||||
|
||||
\setlength\parindent{1cm} % Paragraph indentation
|
||||
|
||||
% Create a new command for the horizontal rule in the document which allows
|
||||
% thickness specification
|
||||
\makeatletter
|
||||
\def\@texttop{} % force the address to start above
|
||||
\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
|
||||
\thispagestyle{firstpage}%
|
||||
{\raggedleft\@date\par}%
|
||||
\else % home address
|
||||
\thispagestyle{empty}%
|
||||
{\raggedleft\begin{tabular}{l@{}}\ignorespaces
|
||||
\fromaddress \\*[2\parskip]%
|
||||
\@date \end{tabular}\par}%
|
||||
\fi
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
%{\raggedright \toname \\ \toaddress \par}% <-- Removed
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
#1\par\nobreak}
|
||||
\let\ps@empty\ps@plain
|
||||
\let\ps@firstpage\ps@plain
|
||||
\makeatother
|
||||
|
||||
%--------------------------------------------------------------------------
|
||||
% FONTS
|
||||
%--------------------------------------------------------------------------
|
||||
|
||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
||||
% \usepackage[utf8]{inputenc} % Required for inputting international characters
|
||||
\usepackage[quiet]{fontspec} % Allows the use of fontspec
|
||||
\setmainfont{Calibri}
|
||||
% \usepackage{txfonts} % Allows the use of Lato fonts
|
||||
|
||||
|
||||
%----------------------------------------------------------------------------
|
||||
% DOCUMENT MARGINS
|
||||
%----------------------------------------------------------------------------
|
||||
|
||||
\usepackage{geometry} % Required for adjusting page dimensions
|
||||
|
||||
\geometry{
|
||||
headheight = 0.7in, % Header height
|
||||
top=1.5in, % Top margin
|
||||
bottom=1.5cm, % Bottom margin
|
||||
left=3cm, % Left margin
|
||||
right=3cm, % Right margin
|
||||
% showframe, % Uncomment to show how the type block is set on the page
|
||||
}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% AUTHOR AND RECIPIENTS NEW COMMANDS AND DETAILS STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\newcommand{\authordetails}[1]{\renewcommand{\authordetails}{#1}}
|
||||
\newcommand{\recipientdetails}[1]{\renewcommand{\recipientdetails}{#1}}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% HEADER STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\address{
|
||||
% Include the author's details on the right side of the page under the line
|
||||
\raggedleft{
|
||||
\footnotesize{ % Use a smaller font size
|
||||
$author$\\ % Author name
|
||||
\authordetails\\
|
||||
\hspace{1mm}
|
||||
}
|
||||
}
|
||||
\vspace{-0.05\textheight} % Move the date and letter content up
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% COMPOSE THE ENTIRE HEADER
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\renewcommand{\opening}[1]{
|
||||
{\fromaddress
|
||||
\vspace{0.05\textheight}\\ % Print the sender's address here and add some whitespace to allow the printing of the date
|
||||
\raggedleft{$date$} % Include the date, aligned to the right
|
||||
\par % par
|
||||
}
|
||||
{\raggedright
|
||||
\toname\\
|
||||
\toaddress
|
||||
\par} % Print the recipient's name and adress
|
||||
\vspace{0.25cm} % White vertical space after recipient's address
|
||||
\noindent #1 % Following this, insert the opening info
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% SIGNATURE STRUCTURE
|
||||
%------------------------------------------------------------------------------
|
||||
% The signature is a combination of the author's name, title and institution
|
||||
\signature{$author$, on behalf of all authors\\
|
||||
Email: $from_email$}
|
||||
|
||||
% I will later combine the option of inserting a signature within it
|
||||
|
||||
\renewcommand{\closing}[1]{
|
||||
\vspace{2.5mm} % Some whitespace after the letter content and before the signature
|
||||
\noindent % Stop paragraph indentation
|
||||
% \hspace*{\longindentation} % Move the signature right to the value of \longindentation
|
||||
\parbox{\indentedwidth}{
|
||||
\raggedright
|
||||
#1 % Print the signature text
|
||||
% \vskip 1.65cm % Whitespace between the closing text and author's name for a physical signature
|
||||
\\\includegraphics[height=0.6in, keepaspectratio=true]{$from_sign$}\\
|
||||
\fromsig % Prints the value of \signature{}, i.e. author name and title
|
||||
}
|
||||
}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% AUTHOR'S INFORMATION
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
\authordetails{
|
||||
$from_position$\\
|
||||
$from_department$\\ % Sender's department/institution
|
||||
$from_institution$\\
|
||||
$from_address$ % Sender's address
|
||||
% $from_city$, $from_state_province$\\ % Sender's city, state or province,
|
||||
% $from_postalcode$\\ % postal code
|
||||
% $from_country$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% RECIPIENT'S INFORMATION
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\recipientdetails{
|
||||
$to_professional_title$ $to_name$\\
|
||||
$if(to_journal)$
|
||||
\textit{$to_journal$}
|
||||
$endif$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% HEADER CONTENTS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\fancypagestyle{firstpage}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{empty}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
\pagestyle{plain}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% TO ADDRESS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\begin{letter}{\recipientdetails}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% LETTER CONTENT
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\opening{$opening_greeting$}
|
||||
% \begin{doublespacing}
|
||||
|
||||
$body$
|
||||
|
||||
% \end{doublespacing}
|
||||
\closing{$closing_greeting$}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\end{letter}
|
||||
\end{document}
|
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 150 KiB |
|
@ -0,0 +1,109 @@
|
|||
.udot {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(50, 50, 50);
|
||||
text-decoration-style: dashed;
|
||||
text-decoration-thickness: 1px;
|
||||
}
|
||||
|
||||
.good {
|
||||
background-color: forestgreen;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.bad {
|
||||
background-color: orangered;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.5px;
|
||||
}
|
||||
|
||||
|
||||
.todo {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.com {
|
||||
background-color: #0025ff;
|
||||
font-weight: bold;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.add {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.0px;
|
||||
}
|
||||
|
||||
|
||||
ins {
|
||||
text-decoration-color: rgb(222 93 93);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
.clab {
|
||||
background-color: rgb(255, 245, 240);
|
||||
}
|
||||
|
||||
.rem {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
#criticnav {
|
||||
position: fixed;
|
||||
z-index: 1100;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 120px;
|
||||
border-bottom: solid 1px #ffffff;
|
||||
margin: 0;
|
||||
padding: 10;
|
||||
background-color: rgb(143 38 38 / 95%);
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
font-family: "Helvetica Neue", helvetica, arial, sans-serif !important
|
||||
}
|
||||
|
||||
#criticnav ul {
|
||||
list-style-type: none;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
#criticnav ul li {
|
||||
display: block;
|
||||
width: 100px;
|
||||
min-width: 80px;
|
||||
text-align: center;
|
||||
padding: 5px 0 3px !important;
|
||||
margin: 5px 2px !important;
|
||||
line-height: 1em;
|
||||
float: center;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
border-radius: 20px;
|
||||
border: 3px solid rgba(255,255,255,0);
|
||||
color: #fff !important
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
title: "MANUSCRIPT TITLE"
|
||||
submitjournal: "JOURNAL"
|
||||
submitid:
|
||||
lang: en
|
||||
date: last-modified
|
||||
|
|
@ -0,0 +1,240 @@
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Academic Letter LaTeX and RMarkdown Structure %
|
||||
% Author: Pedro Henrique Pereira Braga %
|
||||
% %
|
||||
% License: %
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% Set the font size (11pt, for now) and paper size (e.g. letterpaper, a4paper)
|
||||
\documentclass[11pt, letterpaper]{letter}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
||||
%----------------------------------------------------------------------
|
||||
|
||||
\usepackage{graphicx} % Required for including pictures
|
||||
\usepackage{fancyhdr} % Allows the use of fancy headers and footers
|
||||
|
||||
\usepackage{microtype} % For typography improvement
|
||||
|
||||
\usepackage{url} % Allows the use of hyperlinks
|
||||
\urlstyle{same} % Allows hyperlink fonts to be the same as the mainfont
|
||||
\usepackage[hidelinks]{hyperref} % Allows the use of hyperlinks and
|
||||
% removes the blue boxes around the link
|
||||
|
||||
\pagestyle{empty} % Removes headers and footers
|
||||
|
||||
\usepackage{setspace} % Allows the use of double spacing in the letter body
|
||||
|
||||
\setlength\parindent{1cm} % Paragraph indentation
|
||||
|
||||
% Create a new command for the horizontal rule in the document which allows
|
||||
% thickness specification
|
||||
\makeatletter
|
||||
\def\@texttop{} % force the address to start above
|
||||
\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
|
||||
\thispagestyle{firstpage}%
|
||||
{\raggedleft\@date\par}%
|
||||
\else % home address
|
||||
\thispagestyle{empty}%
|
||||
{\raggedleft\begin{tabular}{l@{}}\ignorespaces
|
||||
\fromaddress \\*[2\parskip]%
|
||||
\@date \end{tabular}\par}%
|
||||
\fi
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
%{\raggedright \toname \\ \toaddress \par}% <-- Removed
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
#1\par\nobreak}
|
||||
\let\ps@empty\ps@plain
|
||||
\let\ps@firstpage\ps@plain
|
||||
\makeatother
|
||||
|
||||
%--------------------------------------------------------------------------
|
||||
% FONTS
|
||||
%--------------------------------------------------------------------------
|
||||
|
||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
||||
% \usepackage[utf8]{inputenc} % Required for inputting international characters
|
||||
\usepackage[quiet]{fontspec} % Allows the use of fontspec
|
||||
\setmainfont{Calibri}
|
||||
% \usepackage{txfonts} % Allows the use of Lato fonts
|
||||
|
||||
|
||||
%----------------------------------------------------------------------------
|
||||
% DOCUMENT MARGINS
|
||||
%----------------------------------------------------------------------------
|
||||
|
||||
\usepackage{geometry} % Required for adjusting page dimensions
|
||||
|
||||
\geometry{
|
||||
headheight = 0.7in, % Header height
|
||||
top=1.5in, % Top margin
|
||||
bottom=1.5cm, % Bottom margin
|
||||
left=3cm, % Left margin
|
||||
right=3cm, % Right margin
|
||||
% showframe, % Uncomment to show how the type block is set on the page
|
||||
}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% AUTHOR AND RECIPIENTS NEW COMMANDS AND DETAILS STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\newcommand{\authordetails}[1]{\renewcommand{\authordetails}{#1}}
|
||||
\newcommand{\recipientdetails}[1]{\renewcommand{\recipientdetails}{#1}}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% HEADER STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\address{
|
||||
% Include the author's details on the right side of the page under the line
|
||||
\raggedleft{
|
||||
\footnotesize{ % Use a smaller font size
|
||||
$author$\\ % Author name
|
||||
\authordetails\\
|
||||
\hspace{1mm}
|
||||
}
|
||||
}
|
||||
\vspace{-0.05\textheight} % Move the date and letter content up
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% COMPOSE THE ENTIRE HEADER
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\renewcommand{\opening}[1]{
|
||||
{\fromaddress
|
||||
\vspace{0.05\textheight}\\ % Print the sender's address here and add some whitespace to allow the printing of the date
|
||||
\raggedleft{$date$} % Include the date, aligned to the right
|
||||
\par % par
|
||||
}
|
||||
{\raggedright
|
||||
\toname\\
|
||||
\toaddress
|
||||
\par} % Print the recipient's name and adress
|
||||
\vspace{0.25cm} % White vertical space after recipient's address
|
||||
\noindent #1 % Following this, insert the opening info
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% SIGNATURE STRUCTURE
|
||||
%------------------------------------------------------------------------------
|
||||
% The signature is a combination of the author's name, title and institution
|
||||
\signature{$author$, on behalf of all authors\\
|
||||
Email: $from_email$}
|
||||
|
||||
% I will later combine the option of inserting a signature within it
|
||||
|
||||
\renewcommand{\closing}[1]{
|
||||
\vspace{2.5mm} % Some whitespace after the letter content and before the signature
|
||||
\noindent % Stop paragraph indentation
|
||||
% \hspace*{\longindentation} % Move the signature right to the value of \longindentation
|
||||
\parbox{\indentedwidth}{
|
||||
\raggedright
|
||||
#1 % Print the signature text
|
||||
% \vskip 1.65cm % Whitespace between the closing text and author's name for a physical signature
|
||||
\\\includegraphics[height=0.6in, keepaspectratio=true]{$from_sign$}\\
|
||||
\fromsig % Prints the value of \signature{}, i.e. author name and title
|
||||
}
|
||||
}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% AUTHOR'S INFORMATION
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
\authordetails{
|
||||
$from_position$\\
|
||||
$from_department$\\ % Sender's department/institution
|
||||
$from_institution$\\
|
||||
$from_address$ % Sender's address
|
||||
% $from_city$, $from_state_province$\\ % Sender's city, state or province,
|
||||
% $from_postalcode$\\ % postal code
|
||||
% $from_country$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% RECIPIENT'S INFORMATION
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\recipientdetails{
|
||||
$to_professional_title$ $to_name$\\
|
||||
$if(to_journal)$
|
||||
\textit{$to_journal$}
|
||||
$endif$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% HEADER CONTENTS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\fancypagestyle{firstpage}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{empty}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
\pagestyle{plain}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% TO ADDRESS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\begin{letter}{\recipientdetails}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% LETTER CONTENT
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\opening{$opening_greeting$}
|
||||
% \begin{doublespacing}
|
||||
|
||||
$body$
|
||||
|
||||
% \end{doublespacing}
|
||||
\closing{$closing_greeting$}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\end{letter}
|
||||
\end{document}
|
|
@ -1,59 +0,0 @@
|
|||
% Academic Letter Header Configuration
|
||||
\usepackage{graphicx}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{microtype}
|
||||
\usepackage{url}
|
||||
\usepackage[hidelinks]{hyperref}
|
||||
\usepackage{setspace}
|
||||
\usepackage{geometry}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[quiet]{fontspec}
|
||||
|
||||
\geometry{
|
||||
headheight = 0.7in,
|
||||
top=1.5in,
|
||||
bottom=1.5cm,
|
||||
left=3cm,
|
||||
right=3cm,
|
||||
}
|
||||
|
||||
\setmainfont{Calibri}
|
||||
|
||||
% Custom letter formatting
|
||||
%
|
||||
\makeatletter
|
||||
\renewcommand{\opening}[1]{%
|
||||
\thispagestyle{firstpage}%
|
||||
\par\nobreak\vspace{2\parskip}%
|
||||
\noindent\ignorespaces #1\par\nobreak
|
||||
\@afterheading
|
||||
}
|
||||
|
||||
\let\ps@empty\ps@plain
|
||||
\let\ps@firstpage\ps@plain
|
||||
|
||||
\newcommand{\authordetails}[1]{\renewcommand{\authordetails}{#1}}
|
||||
\newcommand{\recipientdetails}[1]{\renewcommand{\recipientdetails}{#1}}
|
||||
|
||||
\fancypagestyle{firstpage}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{$from_institution_logo$}}
|
||||
\fancyhead[R]{$author$\\\footnotesize{$from_email$\\$from_phone$}}
|
||||
}
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{$from_institution_logo$}}
|
||||
\fancyhead[R]{$author$\\\footnotesize{$from_email$\\$from_phone$}}
|
||||
}
|
||||
|
||||
\fancypagestyle{empty}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{\includegraphics[height=0.6in]{$from_institution_logo$}}
|
||||
\fancyhead[R]{$author$\\\footnotesize{$from_email$\\$from_phone$}}
|
||||
}
|
||||
\makeatother
|
||||
|
||||
|
||||
\newcommand{\forcelettermode}{\ifhmode\unskip\par\fi}
|
||||
|
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 150 KiB |
|
@ -1,2 +0,0 @@
|
|||
\closing{$closing_greeting$}
|
||||
\end{letter}
|
|
@ -1,2 +0,0 @@
|
|||
\begin{letter}{\recipientdetails}
|
||||
\opening{$opening_greeting$}
|
|
@ -1,25 +0,0 @@
|
|||
% Title page customization
|
||||
\address{
|
||||
\raggedleft{
|
||||
\footnotesize{
|
||||
$author$\\
|
||||
\authordetails\\
|
||||
\hspace{1mm}
|
||||
}
|
||||
}
|
||||
\vspace{-0.05\textheight}
|
||||
}
|
||||
|
||||
\authordetails{
|
||||
$from_position$\\
|
||||
$from_department$\\
|
||||
$from_institution$\\
|
||||
$from_address$
|
||||
}
|
||||
|
||||
\recipientdetails{
|
||||
$to_professional_title$ $to_name$\\
|
||||
$if(to_journal)$\textit{$to_journal$}$endif$
|
||||
}
|
||||
|
||||
\signature{$author$, on behalf of all authors\\Email: $from_email$}
|
|
@ -0,0 +1,109 @@
|
|||
.udot {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(50, 50, 50);
|
||||
text-decoration-style: dashed;
|
||||
text-decoration-thickness: 1px;
|
||||
}
|
||||
|
||||
.good {
|
||||
background-color: forestgreen;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.bad {
|
||||
background-color: orangered;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.5px;
|
||||
}
|
||||
|
||||
|
||||
.todo {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.com {
|
||||
background-color: #0025ff;
|
||||
font-weight: bold;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.add {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.0px;
|
||||
}
|
||||
|
||||
|
||||
ins {
|
||||
text-decoration-color: rgb(222 93 93);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
.clab {
|
||||
background-color: rgb(255, 245, 240);
|
||||
}
|
||||
|
||||
.rem {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
#criticnav {
|
||||
position: fixed;
|
||||
z-index: 1100;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 120px;
|
||||
border-bottom: solid 1px #ffffff;
|
||||
margin: 0;
|
||||
padding: 10;
|
||||
background-color: rgb(143 38 38 / 95%);
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
font-family: "Helvetica Neue", helvetica, arial, sans-serif !important
|
||||
}
|
||||
|
||||
#criticnav ul {
|
||||
list-style-type: none;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
#criticnav ul li {
|
||||
display: block;
|
||||
width: 100px;
|
||||
min-width: 80px;
|
||||
text-align: center;
|
||||
padding: 5px 0 3px !important;
|
||||
margin: 5px 2px !important;
|
||||
line-height: 1em;
|
||||
float: center;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
border-radius: 20px;
|
||||
border: 3px solid rgba(255,255,255,0);
|
||||
color: #fff !important
|
||||
}
|
||||
|
|
@ -2,11 +2,9 @@ title: PrettyPDF
|
|||
author: Nicola Rennie
|
||||
version: 0.0.5
|
||||
contributes:
|
||||
project:
|
||||
project:
|
||||
type: book
|
||||
formats:
|
||||
pdf:
|
||||
documentclass: scrartcl
|
||||
include-in-header:
|
||||
- "header.tex"
|
||||
include-before-body:
|
||||
|
|
|
@ -2,11 +2,9 @@ title: PrettyPDF
|
|||
author: Nicola Rennie
|
||||
version: 0.0.5
|
||||
contributes:
|
||||
project:
|
||||
project:
|
||||
type: book
|
||||
formats:
|
||||
pdf:
|
||||
documentclass: scrartcl
|
||||
include-in-header:
|
||||
- "header.tex"
|
||||
include-before-body:
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
---
|
||||
title: "Pretty PDFs with Quarto"
|
||||
format: dwen-pdf
|
||||
format:
|
||||
dwen-pdf:
|
||||
keep-tex: true
|
||||
# documentclass: scrbook
|
||||
# documentclass: scrreprt
|
||||
---
|
||||
|
||||
## Quarto
|
||||
# Quarto
|
||||
|
||||
Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see <https://quarto.org>.
|
||||
|
||||
### Running Code
|
||||
## 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:
|
||||
|
||||
|
|
|
@ -0,0 +1,318 @@
|
|||
% Options for packages loaded elsewhere
|
||||
% Options for packages loaded elsewhere
|
||||
\PassOptionsToPackage{unicode}{hyperref}
|
||||
\PassOptionsToPackage{hyphens}{url}
|
||||
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
|
||||
%
|
||||
\documentclass[
|
||||
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{color}
|
||||
\usepackage{fancyvrb}
|
||||
\newcommand{\VerbBar}{|}
|
||||
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
|
||||
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
||||
% Add ',fontsize=\small' for more characters per line
|
||||
\usepackage{framed}
|
||||
\definecolor{shadecolor}{RGB}{241,243,245}
|
||||
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
|
||||
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
|
||||
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
|
||||
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.40,0.45,0.13}{#1}}
|
||||
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
|
||||
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
|
||||
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
|
||||
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
|
||||
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{\textit{#1}}}
|
||||
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
|
||||
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{\textbf{#1}}}
|
||||
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
|
||||
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
|
||||
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{\textit{#1}}}
|
||||
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
|
||||
\newcommand{\ExtensionTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
|
||||
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
|
||||
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.28,0.35,0.67}{#1}}
|
||||
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.46,0.62}{#1}}
|
||||
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
|
||||
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{\textbf{#1}}}
|
||||
\newcommand{\NormalTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
|
||||
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
|
||||
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
|
||||
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
|
||||
\newcommand{\RegionMarkerTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
|
||||
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
|
||||
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
|
||||
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
|
||||
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.07,0.07,0.07}{#1}}
|
||||
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
|
||||
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{\textit{#1}}}
|
||||
|
||||
\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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
% 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
|
||||
|
||||
\KOMAoption{captions}{tableheading}
|
||||
\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{Figure}
|
||||
\else
|
||||
\newcommand\figurename{Figure}
|
||||
\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}}
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\@ifpackageloaded{caption}{}{\usepackage{caption}}
|
||||
\@ifpackageloaded{subcaption}{}{\usepackage{subcaption}}
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\@ifpackageloaded{tcolorbox}{}{\usepackage[skins,breakable]{tcolorbox}}
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\@ifundefined{shadecolor}{\definecolor{shadecolor}{rgb}{.97, .97, .97}}{}
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\@ifundefined{codebgcolor}{\definecolor{codebgcolor}{named}{light}}{}
|
||||
\makeatother
|
||||
\makeatletter
|
||||
\ifdefined\Shaded\renewenvironment{Shaded}{\begin{tcolorbox}[frame hidden, colback={codebgcolor}, boxrule=0pt, enhanced, sharp corners, breakable]}{\end{tcolorbox}}\fi
|
||||
\makeatother
|
||||
\usepackage{bookmark}
|
||||
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
||||
\urlstyle{same}
|
||||
\hypersetup{
|
||||
pdftitle={Pretty PDFs with Quarto},
|
||||
colorlinks=true,
|
||||
linkcolor={highlight},
|
||||
filecolor={Maroon},
|
||||
citecolor={Blue},
|
||||
urlcolor={highlight},
|
||||
pdfcreator={LaTeX via pandoc}}
|
||||
|
||||
|
||||
\title{Pretty PDFs with Quarto}
|
||||
\author{}
|
||||
\date{}
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\pagestyle{mystyle}
|
||||
|
||||
|
||||
\section{Quarto}\label{quarto}
|
||||
|
||||
Quarto enables you to weave together content and executable code into a
|
||||
finished document. To learn more about Quarto see
|
||||
\url{https://quarto.org}.
|
||||
|
||||
\subsection{Running Code}\label{running-code}
|
||||
|
||||
When you click the \textbf{Render} button a document will be generated
|
||||
that includes both content and the output of embedded code. You can
|
||||
embed code like this:
|
||||
|
||||
\begin{Shaded}
|
||||
\begin{Highlighting}[]
|
||||
\DecValTok{1} \SpecialCharTok{+} \DecValTok{1}
|
||||
\end{Highlighting}
|
||||
\end{Shaded}
|
||||
|
||||
\begin{verbatim}
|
||||
[1] 2
|
||||
\end{verbatim}
|
||||
|
||||
You can add options to executable code like this
|
||||
|
||||
\begin{verbatim}
|
||||
[1] 4
|
||||
\end{verbatim}
|
||||
|
||||
The \texttt{echo:\ false} option disables the printing of code (only
|
||||
output is displayed).
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
BIN
dwms/MS.pdf
|
@ -9,7 +9,7 @@
|
|||
english,
|
||||
12pt,
|
||||
letterpaper,
|
||||
]{article}
|
||||
]{scrartcl}
|
||||
\usepackage{xcolor}
|
||||
\usepackage[margin=1in]{geometry}
|
||||
\usepackage{amsmath,amssymb}
|
||||
|
@ -370,7 +370,7 @@
|
|||
\subtitle{Supplementary Information}
|
||||
\author{\footnotesize Xxxxx Yyyy \and \footnotesize Ming
|
||||
Su \and \footnotesize Min Yang}
|
||||
\date{2025-07-27}
|
||||
\date{}
|
||||
\begin{document}
|
||||
|
||||
% for some reason this does not work in header
|
||||
|
|