Fix unicode and escaping in review comments
This commit is contained in:
parent
8fa41ae2fc
commit
b2598d3092
@ -78,7 +78,7 @@ The creation of a HAHACS amounts to the construction of such a tuple together
|
|||||||
with proof artifacts demonstrating that the intended behavior of the control
|
with proof artifacts demonstrating that the intended behavior of the control
|
||||||
system is satisfied by its actual implementation. This approach is tractable now
|
system is satisfied by its actual implementation. This approach is tractable now
|
||||||
because the infrastructure for each component has matured. The novelty is not in
|
because the infrastructure for each component has matured. The novelty is not in
|
||||||
the individual pieces, but in the architecture that connects them.\splitnote{This is your key insight — the novelty is compositional, not component-level.} By defining
|
the individual pieces, but in the architecture that connects them.\splitnote{This is your key insight --- the novelty is compositional, not component-level.} By defining
|
||||||
entry, exit, and safety conditions at the discrete level first, we transform the
|
entry, exit, and safety conditions at the discrete level first, we transform the
|
||||||
intractable problem of global hybrid verification into a collection of local
|
intractable problem of global hybrid verification into a collection of local
|
||||||
verification problems with clear interfaces. Verification is performed per mode
|
verification problems with clear interfaces. Verification is performed per mode
|
||||||
@ -250,7 +250,7 @@ of the system is designed to be.
|
|||||||
Discrete mode transitions include predicates that are Boolean functions over the
|
Discrete mode transitions include predicates that are Boolean functions over the
|
||||||
continuous state space: $p_i: \mathcal{X} \rightarrow \{\text{true},
|
continuous state space: $p_i: \mathcal{X} \rightarrow \{\text{true},
|
||||||
\text{false}\}$. These predicates formalize conditions like ``coolant
|
\text{false}\}$. These predicates formalize conditions like ``coolant
|
||||||
temperature exceeds 315°C'' or ``pressurizer level is between 30\% and 60\%.''
|
temperature exceeds 315\textdegree{}C'' or ``pressurizer level is between 30\% and 60\%.''
|
||||||
Critically, we do not impose this discrete abstraction artificially. Operating
|
Critically, we do not impose this discrete abstraction artificially. Operating
|
||||||
procedures for nuclear systems already define go/no-go conditions as discrete
|
procedures for nuclear systems already define go/no-go conditions as discrete
|
||||||
predicates. These thresholds come from design basis safety analysis and have
|
predicates. These thresholds come from design basis safety analysis and have
|
||||||
@ -297,11 +297,11 @@ specifications for a HAHACS. This has two distinct benefits. First, it allows us
|
|||||||
to draw a direct link from design documentation to digital system
|
to draw a direct link from design documentation to digital system
|
||||||
implementation. Second, it clearly demonstrates where natural language documents
|
implementation. Second, it clearly demonstrates where natural language documents
|
||||||
are insufficient. These procedures may still be used by human operators, so any
|
are insufficient. These procedures may still be used by human operators, so any
|
||||||
room for interpretation is a weakness that must be addressed.\splitnote{FRET has been validated: Katis 2022 (pp.1-2, Section 0.3) demonstrates FRET's FRETish template system with 160 distinct patterns; Pressburger 2023 (pp.17, Section 1) shows successful application to Lift+Cruise case study with 53 requirements formalized and iteratively refined—strong evidence your approach is feasible.}
|
room for interpretation is a weakness that must be addressed.\splitnote{FRET has been validated: Katis 2022 (pp.1-2, Section 0.3) demonstrates FRET's FRETish template system with 160 distinct patterns; Pressburger 2023 (pp.17, Section 1) shows successful application to Lift+Cruise case study with 53 requirements formalized and iteratively refined---strong evidence your approach is feasible.}
|
||||||
|
|
||||||
(Some examples of where FRET has been used and why it will be successful here)
|
(Some examples of where FRET has been used and why it will be successful here)
|
||||||
%%% NOTES (Section 2):
|
%%% NOTES (Section 2):
|
||||||
% - Add concrete FRET example showing requirement → FRETish → LTL
|
% - Add concrete FRET example showing requirement $\rightarrow$ FRETish $\rightarrow$ LTL
|
||||||
% - Discuss hysteresis and how to prevent mode chattering near boundaries
|
% - Discuss hysteresis and how to prevent mode chattering near boundaries
|
||||||
% - Address sensor noise and measurement uncertainty in threshold definitions
|
% - Address sensor noise and measurement uncertainty in threshold definitions
|
||||||
% - Consider numerical precision issues when creating discrete automata
|
% - Consider numerical precision issues when creating discrete automata
|
||||||
@ -327,7 +327,7 @@ exists, the specification is called \emph{realizable}. The synthesis algorithm
|
|||||||
either produces a correct-by-construction controller or reports that no such
|
either produces a correct-by-construction controller or reports that no such
|
||||||
controller can exist. This realizability check is itself valuable: an
|
controller can exist. This realizability check is itself valuable: an
|
||||||
unrealizable specification indicates conflicting or impossible requirements in
|
unrealizable specification indicates conflicting or impossible requirements in
|
||||||
the original procedures.\splitnote{Realizability is proven valuable: Katis 2022 (pp.7-10) shows FRET diagnosis found 8 minimal unrealizable cores in infusion pump case; Pressburger 2023 (pp.19-21) shows unrealizability revealed under-specification (missing stay requirements in LPC aircraft), driving iterative refinement—this suggests your synthesis approach will help engineers catch requirement errors early.}
|
the original procedures.\splitnote{Realizability is proven valuable: Katis 2022 (pp.7-10) shows FRET diagnosis found 8 minimal unrealizable cores in infusion pump case; Pressburger 2023 (pp.19-21) shows unrealizability revealed under-specification (missing stay requirements in LPC aircraft), driving iterative refinement---this suggests your synthesis approach will help engineers catch requirement errors early.}
|
||||||
|
|
||||||
The main advantage of reactive synthesis is that at no point in the production
|
The main advantage of reactive synthesis is that at no point in the production
|
||||||
of the discrete automaton is human engineering of the implementation required.
|
of the discrete automaton is human engineering of the implementation required.
|
||||||
@ -343,11 +343,11 @@ human operator operating correctly. Humans are intrinsically probabilistic
|
|||||||
creatures who cannot eliminate human error. By defining the behavior of this
|
creatures who cannot eliminate human error. By defining the behavior of this
|
||||||
system using temporal logics and synthesizing the controller using deterministic
|
system using temporal logics and synthesizing the controller using deterministic
|
||||||
algorithms, we are assured that strategic decisions will always be made
|
algorithms, we are assured that strategic decisions will always be made
|
||||||
according to operating procedures.\splitnote{Strix (Luttenberger 2020, pp.1-3) is a practical reactive synthesis tool winning SYNTCOMP competitions; handles LTL specs for systems with large state spaces. Strix uses parity games and forward-explorative construction (pp.7-8) to scale—recommend as your synthesis backend for nuclear procedures.}\splitsuggest{Consider discussing scalability: Strix handles large alphabets better (v19.07 update, p.30), but still struggles with very large specifications. Document expected spec size for SmAHTR startup procedures to set expectations.}
|
according to operating procedures.\splitnote{Strix (Luttenberger 2020, pp.1-3) is a practical reactive synthesis tool winning SYNTCOMP competitions; handles LTL specs for systems with large state spaces. Strix uses parity games and forward-explorative construction (pp.7-8) to scale---recommend as your synthesis backend for nuclear procedures.}\splitsuggest{Consider discussing scalability: Strix handles large alphabets better (v19.07 update, p.30), but still struggles with very large specifications. Document expected spec size for SmAHTR startup procedures to set expectations.}
|
||||||
|
|
||||||
(Talk about how one would go from a discrete automaton to actual code)
|
(Talk about how one would go from a discrete automaton to actual code)
|
||||||
|
|
||||||
(Examples of reactive synthesis in the wild)\splitnote{GR(1) fragment (Maoz & Ringert 2015, pp.1-4) is tractable LTL subset for synthesis: wins SYNTCOMP competitions (p.13). Luttenberger 2020 (Strix tool, pp.1-3) handles full LTL via parity games, achieving 4000+ state specs efficiently (p.5). Your nuclear procedures should fit GR(1) since they're reactive (environment inputs = plant state, outputs = mode transitions). This suggests synthesis will be practical for SmAHTR scale.}\splitfix{Need to verify your LTL specs fit GR(1) or full LTL needed—if full LTL required, computational cost grows but Strix may handle it (confirm scalability claim with specific spec size estimates for startup/shutdown procedures).}
|
(Examples of reactive synthesis in the wild)\splitnote{GR(1) fragment (Maoz \& Ringert 2015, pp.1-4) is tractable LTL subset for synthesis: wins SYNTCOMP competitions (p.13). Luttenberger 2020 (Strix tool, pp.1-3) handles full LTL via parity games, achieving 4000+ state specs efficiently (p.5). Your nuclear procedures should fit GR(1) since they're reactive (environment inputs = plant state, outputs = mode transitions). This suggests synthesis will be practical for SmAHTR scale.}\splitfix{Need to verify your LTL specs fit GR(1) or full LTL needed---if full LTL required, computational cost grows but Strix may handle it (confirm scalability claim with specific spec size estimates for startup/shutdown procedures).}
|
||||||
|
|
||||||
%%% NOTES (Section 3):
|
%%% NOTES (Section 3):
|
||||||
% - Mention computational complexity of synthesis (doubly exponential worst case)
|
% - Mention computational complexity of synthesis (doubly exponential worst case)
|
||||||
@ -407,10 +407,10 @@ controller design:
|
|||||||
These sets come directly from the discrete controller synthesis and define
|
These sets come directly from the discrete controller synthesis and define
|
||||||
precise objectives for continuous control. The continuous controller for mode
|
precise objectives for continuous control. The continuous controller for mode
|
||||||
$q_i$ must drive the system from any state in $\mathcal{X}_{entry,i}$ to some
|
$q_i$ must drive the system from any state in $\mathcal{X}_{entry,i}$ to some
|
||||||
state in $\mathcal{X}_{exit,i}$ while remaining within $\mathcal{X}_{safe,i}$.\splitnote{This compositional approach is formalized in Kapuria 2025 (pp.17-24, Section 2.4): component proofs via differential cuts reduce state-space (DC rule, p.20), then system proof composes via differential invariants (DI rule, pp.22-24). Kapuria proves SmAHTR safety by verifying 6 components in isolation then system—your three-mode structure maps perfectly to this decomposition, reducing verification complexity from curse of dimensionality.}
|
state in $\mathcal{X}_{exit,i}$ while remaining within $\mathcal{X}_{safe,i}$.\splitnote{This compositional approach is formalized in Kapuria 2025 (pp.17-24, Section 2.4): component proofs via differential cuts reduce state-space (DC rule, p.20), then system proof composes via differential invariants (DI rule, pp.22-24). Kapuria proves SmAHTR safety by verifying 6 components in isolation then system---your three-mode structure maps perfectly to this decomposition, reducing verification complexity from curse of dimensionality.}
|
||||||
|
|
||||||
We classify continuous controllers into three types based on their objectives:
|
We classify continuous controllers into three types based on their objectives:
|
||||||
transitory, stabilizing, and expulsory.\splitnote{This three-mode taxonomy is elegant — maps verification tools to control objectives cleanly.} Each type has distinct verification
|
transitory, stabilizing, and expulsory.\splitnote{This three-mode taxonomy is elegant --- maps verification tools to control objectives cleanly.} Each type has distinct verification
|
||||||
requirements that determine which formal methods tools are appropriate.
|
requirements that determine which formal methods tools are appropriate.
|
||||||
|
|
||||||
%%% NOTES (Section 4):
|
%%% NOTES (Section 4):
|
||||||
@ -470,7 +470,7 @@ depends on the structure of the continuous dynamics. Linear systems admit
|
|||||||
efficient polyhedral or ellipsoidal reachability computations. Nonlinear
|
efficient polyhedral or ellipsoidal reachability computations. Nonlinear
|
||||||
systems require more conservative over-approximations using techniques such as
|
systems require more conservative over-approximations using techniques such as
|
||||||
Taylor models or polynomial zonotopes. For this work, we will select tools
|
Taylor models or polynomial zonotopes. For this work, we will select tools
|
||||||
appropriate to the fidelity of the reactor models available.\splitnote{Your toolset is well-justified: SpaceEx (Frehse 2011, pp.3-6) handles hybrid automata via support functions; Flow* (Chen 2013) uses Taylor models for nonlinear dynamics; JuliaReach (Bogomolov 2019, pp.1-2) offers flexible set representations (zonotopes, boxes). Kapuria 2025 (pp.11-12, Section 2.2) uses Flow* successfully for SmAHTR reachability with reactor models showing state-space constraints (e.g., temp 673–677°C, Figures 6, 16–20). This validates your tool choices for nuclear systems.}\splitnote{Critical finding from Kapuria 2025: decomposition-based verification (pp.17-24, Section 2.4) proves component safety in isolation using reachability, THEN composes to system proof via differential invariants—your three-mode taxonomy maps cleanly to component verification, reducing complexity from monolithic analysis.}
|
appropriate to the fidelity of the reactor models available.\splitnote{Your toolset is well-justified: SpaceEx (Frehse 2011, pp.3-6) handles hybrid automata via support functions; Flow* (Chen 2013) uses Taylor models for nonlinear dynamics; JuliaReach (Bogomolov 2019, pp.1-2) offers flexible set representations (zonotopes, boxes). Kapuria 2025 (pp.11-12, Section 2.2) uses Flow* successfully for SmAHTR reachability with reactor models showing state-space constraints (e.g., temp 673--677\textdegree{}C, Figures 6, 16--20). This validates your tool choices for nuclear systems.}\splitnote{Critical finding from Kapuria 2025: decomposition-based verification (pp.17-24, Section 2.4) proves component safety in isolation using reachability, THEN composes to system proof via differential invariants---your three-mode taxonomy maps cleanly to component verification, reducing complexity from monolithic analysis.}
|
||||||
|
|
||||||
%%% NOTES (Section 4.1):
|
%%% NOTES (Section 4.1):
|
||||||
% - Add timing constraints discussion: what if the transition takes too long?
|
% - Add timing constraints discussion: what if the transition takes too long?
|
||||||
@ -527,7 +527,7 @@ check that the result satisfies the required invariants. This also allows for
|
|||||||
the checking of control modes with different models than they are designed for.
|
the checking of control modes with different models than they are designed for.
|
||||||
For example, a lower fidelity model can be used for controller design, but a
|
For example, a lower fidelity model can be used for controller design, but a
|
||||||
higher fidelity model can be used for the actual validation of that stabilizing
|
higher fidelity model can be used for the actual validation of that stabilizing
|
||||||
controller.\splitnote{SOS methods proven effective: Papachristodoulou 2021 (SOSTOOLS v4, pp.1-2) solves barrier certificate optimization via SOS constraints—tool integrates with MATLAB. Borrmann 2015 (pp.4-8) demonstrates control barrier certificates for multi-agent systems, showing how discrete boundaries (mode guards) can inform barrier design. Your claim that discrete specs eliminate barrier search is novel and well-supported by these foundations.}\splitnote{Hauswirth 2024 (pp.1-3) shows optimization-based robust feedback controllers can serve as alternative verification method—suggests barrier certificates + reachability provide complementary guarantees for your stabilizing modes.}
|
controller.\splitnote{SOS methods proven effective: Papachristodoulou 2021 (SOSTOOLS v4, pp.1-2) solves barrier certificate optimization via SOS constraints---tool integrates with MATLAB. Borrmann 2015 (pp.4-8) demonstrates control barrier certificates for multi-agent systems, showing how discrete boundaries (mode guards) can inform barrier design. Your claim that discrete specs eliminate barrier search is novel and well-supported by these foundations.}\splitnote{Hauswirth 2024 (pp.1-3) shows optimization-based robust feedback controllers can serve as alternative verification method---suggests barrier certificates + reachability provide complementary guarantees for your stabilizing modes.}
|
||||||
|
|
||||||
%%% NOTES (Section 4.2):
|
%%% NOTES (Section 4.2):
|
||||||
% - Clarify relationship between barrier certificates and Lyapunov stability
|
% - Clarify relationship between barrier certificates and Lyapunov stability
|
||||||
@ -591,7 +591,7 @@ of $\Theta_{failure}$. Probabilistic risk assessment, FMEA, and design basis
|
|||||||
accident analysis identify credible failure scenarios and their effects on
|
accident analysis identify credible failure scenarios and their effects on
|
||||||
plant dynamics. The expulsory mode must handle the worst-case dynamics within
|
plant dynamics. The expulsory mode must handle the worst-case dynamics within
|
||||||
this envelope. This is where conservative controller design is appropriate as
|
this envelope. This is where conservative controller design is appropriate as
|
||||||
safety margins will matter more than performance during emergency shutdown.\splitnote{Parametric uncertainty approach validated: Kapuria 2025 (pp.82-120, Sections 5) verifies SmAHTR resiliency against UCAs with uncertain dynamics (e.g., PHX secondary flow shutdown, resonating turbine flow). Uses reachability + Z3 SMT solver (pp.23-24, Section 2.5 on δ-SAT) to handle nonlinear uncertainty—demonstrates your expulsory mode approach is sound for nuclear failures. Shows safety can be proven even when controller deviates from nominal (pp.85-107, UCA 1 analysis).}\splitsuggest{Kapuria 2025 reveals practical challenge: determining Θ_failure bounds is non-trivial. Recommend documenting failure mode selection process (FMEA → parametric bounds) to make expulsory mode design repeatable for other reactor sequences.}
|
safety margins will matter more than performance during emergency shutdown.\splitnote{Parametric uncertainty approach validated: Kapuria 2025 (pp.82-120, Sections 5) verifies SmAHTR resiliency against UCAs with uncertain dynamics (e.g., PHX secondary flow shutdown, resonating turbine flow). Uses reachability + Z3 SMT solver (pp.23-24, Section 2.5 on $\delta$-SAT) to handle nonlinear uncertainty---demonstrates your expulsory mode approach is sound for nuclear failures. Shows safety can be proven even when controller deviates from nominal (pp.85-107, UCA 1 analysis).}\splitsuggest{Kapuria 2025 reveals practical challenge: determining $\Theta_{\text{failure}}$ bounds is non-trivial. Recommend documenting failure mode selection process (FMEA $\rightarrow$ parametric bounds) to make expulsory mode design repeatable for other reactor sequences.}
|
||||||
|
|
||||||
%%% NOTES (Section 4.3):
|
%%% NOTES (Section 4.3):
|
||||||
% - Discuss sensor failures vs actual plant failures
|
% - Discuss sensor failures vs actual plant failures
|
||||||
@ -634,12 +634,12 @@ because we will have access to system experts at Emerson to help with the fine
|
|||||||
details of using the Ovation system. At the same time, we will have the benefit
|
details of using the Ovation system. At the same time, we will have the benefit
|
||||||
of transferring technology directly to industry with a direct collaboration in
|
of transferring technology directly to industry with a direct collaboration in
|
||||||
this research, while getting an excellent perspective of how our research
|
this research, while getting an excellent perspective of how our research
|
||||||
outcomes can align best with customer needs.\splitnote{Kapuria 2025 validates hybrid control on SmAHTR: formal verification (dℒ + reachability, pp.37-70) proved safe PHX maintenance scenario, then Simulink demo confirmed (pp.70-72). This two-tier approach (formal proof + simulation validation) strengthens your Emerson demo plan for credibility.}\splitsuggest{Consider documenting integration points: ARCADE interface must guarantee formal synthesis outputs map 1:1 to Ovation code. Pressburger 2023 (pp.22-23) notes manual integration risks—automate code generation from formal specs to minimize this gap.}
|
outcomes can align best with customer needs.\splitnote{Kapuria 2025 validates hybrid control on SmAHTR: formal verification (d$\mathcal{L}$ + reachability, pp.37-70) proved safe PHX maintenance scenario, then Simulink demo confirmed (pp.70-72). This two-tier approach (formal proof + simulation validation) strengthens your Emerson demo plan for credibility.}\splitsuggest{Consider documenting integration points: ARCADE interface must guarantee formal synthesis outputs map 1:1 to Ovation code. Pressburger 2023 (pp.22-23) notes manual integration risks---automate code generation from formal specs to minimize this gap.}
|
||||||
|
|
||||||
%%% NOTES (Section 5):
|
%%% NOTES (Section 5):
|
||||||
% - Get specific details on ARCADE interface from Emerson collaboration
|
% - Get specific details on ARCADE interface from Emerson collaboration
|
||||||
% - Mention what startup sequence will be demonstrated (cold shutdown →
|
% - Mention what startup sequence will be demonstrated (cold shutdown $\rightarrow$
|
||||||
% criticality → low power?)
|
% criticality $\rightarrow$ low power?)
|
||||||
% - Discuss how off-nominal scenarios will be tested (sensor failures,
|
% - Discuss how off-nominal scenarios will be tested (sensor failures,
|
||||||
% simulated component degradation)
|
% simulated component degradation)
|
||||||
% - Reference Westinghouse relationship if relevant
|
% - Reference Westinghouse relationship if relevant
|
||||||
|
|||||||
586
todonotes.sty
Normal file
586
todonotes.sty
Normal file
@ -0,0 +1,586 @@
|
|||||||
|
%%
|
||||||
|
%% This is file `todonotes.sty',
|
||||||
|
%% generated with the docstrip utility.
|
||||||
|
%%
|
||||||
|
%% The original source files were:
|
||||||
|
%%
|
||||||
|
%% todonotes.dtx (with options: `package')
|
||||||
|
%%
|
||||||
|
%% This is a generated file.
|
||||||
|
%%
|
||||||
|
%% Copyright (C) 2008 by Henrik Skov Midtiby <henrikmidtiby@gmail.com>
|
||||||
|
%%
|
||||||
|
%% This file may be distributed and/or modified under the conditions of
|
||||||
|
%% the LaTeX Project Public License, either version 1.2 of this license
|
||||||
|
%% or (at your option) any later version. The latest version of this
|
||||||
|
%% license is in:
|
||||||
|
%%
|
||||||
|
%% http://www.latex-project.org/lppl.txt
|
||||||
|
%%
|
||||||
|
%% and version 1.2 or later is part of all distributions of LaTeX version
|
||||||
|
%% 1999/12/01 or later.
|
||||||
|
%%
|
||||||
|
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
|
||||||
|
\ProvidesPackage{todonotes}
|
||||||
|
[2024/01/05 v1.1.7 Todonotes source and documentation.]
|
||||||
|
|
||||||
|
\ProvidesPackage{todonotes}[2024/01/05]
|
||||||
|
\RequirePackage{ifthen}
|
||||||
|
\RequirePackage{xkeyval}
|
||||||
|
\RequirePackage{xcolor}
|
||||||
|
\RequirePackage{tikz}
|
||||||
|
\usetikzlibrary{positioning}
|
||||||
|
\RequirePackage{calc}
|
||||||
|
\newcommand\setuptodonotes[1]{\presetkeys{todonotes}{#1}{}}
|
||||||
|
\newcommand{\@todonotes@text}{}%
|
||||||
|
\newcommand{\@todonotes@backgroundcolor}{orange}
|
||||||
|
\newcommand{\@todonotes@textcolor}{black}
|
||||||
|
\newcommand{\@todonotes@linecolor}{orange}
|
||||||
|
\newcommand{\@todonotes@bordercolor}{black}
|
||||||
|
\newcommand{\@todonotes@tickmarkheight}{unused value}
|
||||||
|
\newcommand{\@todonotes@textwidth}{\marginparwidth}
|
||||||
|
\newcommand{\@todonotes@textsize}{\normalsize}
|
||||||
|
\newcommand{\@todonotes@figwidth}{\linewidth}
|
||||||
|
\newcommand{\@todonotes@figheight}{4cm}
|
||||||
|
\newcommand{\@todonotes@figcolor}{black!40}
|
||||||
|
\AtBeginDocument{
|
||||||
|
\ifx\undefined\phantomsection
|
||||||
|
\newcommand{\phantomsection}{}
|
||||||
|
\fi
|
||||||
|
\ifdim \marginparwidth < 2cm
|
||||||
|
\PackageWarning{todonotes}{The length marginparwidth is
|
||||||
|
less than 2cm and will most likely cause issues with the
|
||||||
|
appearance of inserted todonotes.
|
||||||
|
The issue can be solved by adding a line like
|
||||||
|
\setlength{\marginparwidth}{2cm}
|
||||||
|
prior to loading the todonotes package.} \else\fi%
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\@todonotes@todolistname}{Todo list}
|
||||||
|
\newcommand{\@todonotes@MissingFigureText}{Figure}
|
||||||
|
\newcommand{\@todonotes@MissingFigureUp}{Missing}
|
||||||
|
\newcommand{\@todonotes@MissingFigureDown}{figure}
|
||||||
|
\newcommand{\@todonotes@SetTodoListName}[1]
|
||||||
|
{\renewcommand{\@todonotes@todolistname}{#1}}
|
||||||
|
\newcommand{\@todonotes@SetMissingFigureText}[1]
|
||||||
|
{\renewcommand{\@todonotes@MissingFigureText}{#1}}
|
||||||
|
\newcommand{\@todonotes@SetMissingFigureUp}[1]
|
||||||
|
{\renewcommand{\@todonotes@MissingFigureUp}{#1}}
|
||||||
|
\newcommand{\@todonotes@SetMissingFigureDown}[1]
|
||||||
|
{\renewcommand{\@todonotes@MissingFigureDown}{#1}}
|
||||||
|
\newif{\if@todonotes@reverseMissingFigureTriangle}
|
||||||
|
\DeclareOptionX{catalan}{
|
||||||
|
\@todonotes@SetTodoListName{Llista de feines pendents}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureDown{pendent}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{croatian}{%
|
||||||
|
\@todonotes@SetTodoListName{Popis obveza}%
|
||||||
|
\@todonotes@SetMissingFigureText{Slika}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Nedostaje}%
|
||||||
|
\@todonotes@SetMissingFigureDown{slika}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{danish}{%
|
||||||
|
\@todonotes@SetTodoListName{G\o{}rem\aa{}lsliste}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figur}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Manglende}%
|
||||||
|
\@todonotes@SetMissingFigureDown{figur}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{dutch}{%
|
||||||
|
\@todonotes@SetTodoListName{Lijst van onafgewerkte taken}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figuur}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Ontbrekende}%
|
||||||
|
\@todonotes@SetMissingFigureDown{figuur}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{english}{%
|
||||||
|
\@todonotes@SetTodoListName{Todo list}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figure}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Missing}%
|
||||||
|
\@todonotes@SetMissingFigureDown{figure}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{french}{%
|
||||||
|
\@todonotes@SetTodoListName{Liste des points \`a traiter}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figure}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Figure}%
|
||||||
|
\@todonotes@SetMissingFigureDown{manquante}%
|
||||||
|
\@todonotes@reverseMissingFigureTrianglefalse
|
||||||
|
}
|
||||||
|
\DeclareOptionX{german}{%
|
||||||
|
\@todonotes@SetTodoListName{Liste der noch zu erledigenden Punkte}%
|
||||||
|
\@todonotes@SetMissingFigureText{Abbildung}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Fehlende}%
|
||||||
|
\@todonotes@SetMissingFigureDown{Abbildung}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{italian}{
|
||||||
|
\@todonotes@SetTodoListName{Elenco delle cose da fare}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureDown{mancante}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{ngerman}{%
|
||||||
|
\@todonotes@SetTodoListName{Liste der noch zu erledigenden Punkte}%
|
||||||
|
\@todonotes@SetMissingFigureText{Abbildung}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Fehlende}%
|
||||||
|
\@todonotes@SetMissingFigureDown{Abbildung}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{portuguese}{
|
||||||
|
\@todonotes@SetTodoListName{Lista de tarefas pendentes}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureDown{pendente}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{spanish}{
|
||||||
|
\@todonotes@SetTodoListName{Lista de tareas pendientes}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Figura}%
|
||||||
|
\@todonotes@SetMissingFigureDown{pendiente}%
|
||||||
|
}
|
||||||
|
\DeclareOptionX{swedish}{%
|
||||||
|
\@todonotes@SetTodoListName{Att g\"{o}ra-lista}%
|
||||||
|
\@todonotes@SetMissingFigureText{Figur}%
|
||||||
|
\@todonotes@SetMissingFigureUp{Figur}%
|
||||||
|
\@todonotes@SetMissingFigureDown{saknas}%
|
||||||
|
}
|
||||||
|
\providecommand{\@tocrmarg}{2.55em}
|
||||||
|
\providecommand{\@dotsep}{4.5}
|
||||||
|
\providecommand{\@pnumwidth}{1.55em}
|
||||||
|
\newcounter{@todonotes@numberoftodonotes}
|
||||||
|
\newif{\if@todonotes@obeyDraft}
|
||||||
|
\DeclareOptionX{obeyDraft}{\@todonotes@obeyDrafttrue}
|
||||||
|
\newif{\if@todonotes@isDraft}
|
||||||
|
\DeclareOptionX{draft}{\@todonotes@isDrafttrue}
|
||||||
|
\DeclareOptionX{draftcls}{\@todonotes@isDrafttrue}
|
||||||
|
\DeclareOptionX{draftclsnofoot}{\@todonotes@isDrafttrue}
|
||||||
|
\newif{\if@todonotes@obeyFinal}
|
||||||
|
\DeclareOptionX{obeyFinal}{\@todonotes@obeyFinaltrue}
|
||||||
|
\newif{\if@todonotes@isFinal}
|
||||||
|
\DeclareOptionX{final}{\@todonotes@isFinaltrue}
|
||||||
|
\newif{\if@todonotes@disabled}
|
||||||
|
\DeclareOptionX{disable}{\@todonotes@disabledtrue}
|
||||||
|
\newif{\if@todonotes@colorinlistoftodos}
|
||||||
|
\DeclareOptionX{colorinlistoftodos}{\@todonotes@colorinlistoftodostrue}
|
||||||
|
\newif{\if@todonotes@dviStyle}
|
||||||
|
\DeclareOptionX{dvistyle}{\@todonotes@dviStyletrue}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{color}{
|
||||||
|
\renewcommand{\@todonotes@backgroundcolor}{#1}
|
||||||
|
\renewcommand{\@todonotes@linecolor}{#1}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{backgroundcolor}{\renewcommand{\@todonotes@backgroundcolor}{#1}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{textcolor}{\renewcommand{\@todonotes@textcolor}{#1}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{linecolor}{\renewcommand{\@todonotes@linecolor}{#1}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{bordercolor}{\renewcommand{\@todonotes@bordercolor}{#1}}
|
||||||
|
\newcommand{\@todonotes@defaulttickmarkheight}{0cm}
|
||||||
|
\define@key{todonotes.sty}{tickmarkheight}{%
|
||||||
|
\renewcommand{\@todonotes@defaulttickmarkheight}{#1}}%
|
||||||
|
\newif{\if@todonotes@prependcaptionglobal}
|
||||||
|
\@todonotes@prependcaptionglobalfalse
|
||||||
|
\DeclareOptionX{prependcaption}{\@todonotes@prependcaptionglobaltrue}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{textwidth}{\renewcommand{\@todonotes@textwidth}{#1}}
|
||||||
|
\newcommand{\todoformat}[1]{#1}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{format}{\renewcommand{\todoformat}{\@nameuse{#1}}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{textsize}{\renewcommand{\@todonotes@textsize}{#1}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{size}{\renewcommand{\@todonotes@textsize}{#1}}
|
||||||
|
\newif\if@todonotes@shadowlibraryloaded
|
||||||
|
\@todonotes@shadowlibraryloadedfalse
|
||||||
|
\DeclareOptionX{loadshadowlibrary}{%
|
||||||
|
\usetikzlibrary{shadows}%
|
||||||
|
\@todonotes@shadowlibraryloadedtrue}
|
||||||
|
\newcommand{\@todonotes@shadowenabledbydefault}{noshadow}
|
||||||
|
\DeclareOptionX{shadow}{%
|
||||||
|
\renewcommand{\@todonotes@shadowenabledbydefault}{shadow}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{figwidth}{\renewcommand{\@todonotes@figwidth}{#1}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{figheight}{\renewcommand{\@todonotes@figheight}{#1}}
|
||||||
|
\define@key{todonotes.sty}%
|
||||||
|
{figcolor}{\renewcommand{\@todonotes@figcolor}{#1}}
|
||||||
|
\ProcessOptionsX*
|
||||||
|
\if@todonotes@disabled
|
||||||
|
\else
|
||||||
|
\if@todonotes@obeyDraft
|
||||||
|
\@todonotes@disabledtrue
|
||||||
|
\if@todonotes@isDraft
|
||||||
|
\@todonotes@disabledfalse
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
\if@todonotes@obeyFinal
|
||||||
|
\@todonotes@disabledfalse
|
||||||
|
\if@todonotes@isFinal
|
||||||
|
\@todonotes@disabledtrue
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
|
||||||
|
\gdef\@todonotes@currentlinecolor{\@todonotes@linecolor}%
|
||||||
|
\gdef\@todonotes@currentbackgroundcolor{\@todonotes@backgroundcolor}%
|
||||||
|
\gdef\@todonotes@currenttextcolor{\@todonotes@textcolor}%
|
||||||
|
\gdef\@todonotes@currentbordercolor{\@todonotes@bordercolor}%
|
||||||
|
\define@key{todonotes}{color}{%
|
||||||
|
\gdef\@todonotes@currentlinecolor{#1}%
|
||||||
|
\gdef\@todonotes@currentbackgroundcolor{#1}}%
|
||||||
|
\define@key{todonotes}{linecolor}{%
|
||||||
|
\gdef\@todonotes@currentlinecolor{#1}}%
|
||||||
|
\define@key{todonotes}{backgroundcolor}{%
|
||||||
|
\gdef\@todonotes@currentbackgroundcolor{#1}}%
|
||||||
|
\define@key{todonotes}{textcolor}{%
|
||||||
|
\gdef\@todonotes@currenttextcolor{#1}}%
|
||||||
|
\define@key{todonotes}{bordercolor}{%
|
||||||
|
\gdef\@todonotes@currentbordercolor{#1}}%
|
||||||
|
\newif\if@todonotes@useshadow%
|
||||||
|
\define@key{todonotes}{shadow}[]{\@todonotes@useshadowtrue}%
|
||||||
|
\define@key{todonotes}{noshadow}[]{\@todonotes@useshadowfalse}%
|
||||||
|
\define@key{todonotes}{tickmarkheight}{%
|
||||||
|
\renewcommand{\@todonotes@tickmarkheight}{#1}}%
|
||||||
|
\newcommand{\@todonotes@format}{\todoformat}%
|
||||||
|
\define@key{todonotes}{format}{%
|
||||||
|
\renewcommand{\@todonotes@format}{\@nameuse{#1}}}%
|
||||||
|
\newcommand{\@todonotes@sizecommand}{}%
|
||||||
|
\define@key{todonotes}{size}{\renewcommand{\@todonotes@sizecommand}{#1}%
|
||||||
|
}%
|
||||||
|
\newif\if@todonotes@localdisable%
|
||||||
|
\define@key{todonotes}{disable}[]{\@todonotes@localdisabletrue}%
|
||||||
|
\define@key{todonotes}{nodisable}[]{\@todonotes@localdisablefalse}%
|
||||||
|
\newif\if@todonotes@appendtolistoftodos%
|
||||||
|
\define@key{todonotes}{list}[]{\@todonotes@appendtolistoftodostrue}%
|
||||||
|
\define@key{todonotes}{nolist}[]{\@todonotes@appendtolistoftodosfalse}%
|
||||||
|
\newif\if@todonotes@inlinenote%
|
||||||
|
\define@key{todonotes}{inline}[]{\@todonotes@inlinenotetrue}%
|
||||||
|
\define@key{todonotes}{noinline}[]{\@todonotes@inlinenotefalse}%
|
||||||
|
\newif\if@todonotes@prependcaption%
|
||||||
|
\define@key{todonotes}{prepend}[]{\@todonotes@prependcaptiontrue}%
|
||||||
|
\define@key{todonotes}{noprepend}[]{\@todonotes@prependcaptionfalse}%
|
||||||
|
\newif\if@todonotes@line%
|
||||||
|
\define@key{todonotes}{line}[]{\@todonotes@linetrue}%
|
||||||
|
\define@key{todonotes}{noline}[]{\@todonotes@linefalse}%
|
||||||
|
\newif\if@todonotes@fancyline\@todonotes@fancylinefalse%
|
||||||
|
\define@key{todonotes}{fancyline}[]{\@todonotes@fancylinetrue}%
|
||||||
|
\define@key{todonotes}{nofancyline}[]{\@todonotes@fancylinefalse}%
|
||||||
|
\newcommand{\@todonotes@author}{}%
|
||||||
|
\newif\if@todonotes@authorgiven%
|
||||||
|
\define@key{todonotes}{author}{%
|
||||||
|
\renewcommand{\@todonotes@author}{#1}%
|
||||||
|
\@todonotes@authorgiventrue}%
|
||||||
|
\define@key{todonotes}{noauthor}[]{\@todonotes@authorgivenfalse}%
|
||||||
|
\newcommand{\@todonotes@caption}{}%
|
||||||
|
\newif\if@todonotes@captiongiven%
|
||||||
|
\define@key{todonotes}{caption}%
|
||||||
|
{\renewcommand{\@todonotes@caption}{#1}%
|
||||||
|
\@todonotes@captiongiventrue}%
|
||||||
|
\define@key{todonotes}{nocaption}[]{\@todonotes@captiongivenfalse}%
|
||||||
|
\newcommand{\@todonotes@currentfigwidth}{\@todonotes@figwidth}
|
||||||
|
\define@key{todonotes}%
|
||||||
|
{figwidth}{\renewcommand{\@todonotes@currentfigwidth}{#1-2pt}}
|
||||||
|
\newcommand{\@todonotes@currentfigheight}{\@todonotes@figheight}
|
||||||
|
\define@key{todonotes}%
|
||||||
|
{figheight}{\renewcommand{\@todonotes@currentfigheight}{#1-2pt}}
|
||||||
|
\newcommand{\@todonotes@currentfigcolor}{\@todonotes@figcolor}
|
||||||
|
\define@key{todonotes}%
|
||||||
|
{figcolor}{\renewcommand{\@todonotes@currentfigcolor}{#1}}
|
||||||
|
\newcommand{\@todonotes@inlinewidth}{\linewidth}%
|
||||||
|
\define@key{todonotes}%
|
||||||
|
{inlinewidth}{\renewcommand{\@todonotes@inlinewidth}{#1}}
|
||||||
|
\newif\if@todonotes@inlinepar
|
||||||
|
\@todonotes@inlinepartrue
|
||||||
|
\define@key{todonotes}{inlinepar}[]{\@todonotes@inlinepartrue}%
|
||||||
|
\define@key{todonotes}{noinlinepar}[]{\@todonotes@inlineparfalse}%
|
||||||
|
\presetkeys%
|
||||||
|
{todonotes}%
|
||||||
|
{linecolor=\@todonotes@linecolor,%
|
||||||
|
backgroundcolor=\@todonotes@backgroundcolor,%
|
||||||
|
textcolor=\@todonotes@textcolor,%
|
||||||
|
bordercolor=\@todonotes@bordercolor,%
|
||||||
|
format=todoformat,%
|
||||||
|
tickmarkheight=\@todonotes@defaulttickmarkheight,%
|
||||||
|
nofancyline,%
|
||||||
|
nodisable,%
|
||||||
|
noinline,%
|
||||||
|
nocaption,%
|
||||||
|
noauthor,%
|
||||||
|
\@todonotes@shadowenabledbydefault,%
|
||||||
|
figwidth=\@todonotes@figwidth,%
|
||||||
|
figheight=\@todonotes@figheight,%
|
||||||
|
figcolor=\@todonotes@figcolor,%
|
||||||
|
line, list,%
|
||||||
|
inlinewidth=\linewidth,
|
||||||
|
inlinepar}{}%
|
||||||
|
\@temptokena\expandafter{\@todonotes@textsize}
|
||||||
|
\edef\next{\noexpand\presetkeys{todonotes}{size=\the\@temptokena}{}}
|
||||||
|
\next
|
||||||
|
\if@todonotes@disabled%
|
||||||
|
\newcommand{\listoftodos}[1][]{}
|
||||||
|
\newcommand{\@todo}[2][]{}
|
||||||
|
\newcommand{\missingfigure}[2][]{}
|
||||||
|
\else % \if@todonotes@disabled
|
||||||
|
\newcommand{\listoftodos}[1][\@todonotes@todolistname]
|
||||||
|
{\@ifundefined{chapter}{\section*{#1}}{\chapter*{#1}} \@starttoc{tdo}}
|
||||||
|
\newcommand{\l@todo}
|
||||||
|
{\@dottedtocline{1}{0em}{2.3em}}
|
||||||
|
\tikzstyle{notestyleraw} = [
|
||||||
|
draw=\@todonotes@currentbordercolor,
|
||||||
|
fill=\@todonotes@currentbackgroundcolor,
|
||||||
|
text=\@todonotes@currenttextcolor,
|
||||||
|
line width=0.5pt,
|
||||||
|
text width = \@todonotes@textwidth - 1.6 ex - 1pt,
|
||||||
|
inner sep = 0.8 ex,
|
||||||
|
rounded corners=4pt]
|
||||||
|
\newcommand{\@todo}[2][]{%
|
||||||
|
\if@todonotes@prependcaptionglobal%
|
||||||
|
\@todonotes@prependcaptiontrue%
|
||||||
|
\else%
|
||||||
|
\@todonotes@prependcaptionfalse%
|
||||||
|
\fi%
|
||||||
|
\renewcommand{\@todonotes@text}{#2}%
|
||||||
|
\renewcommand{\@todonotes@caption}{#2}%
|
||||||
|
\setkeys{todonotes}{#1}%
|
||||||
|
\if@todonotes@useshadow%
|
||||||
|
\if@todonotes@shadowlibraryloaded%
|
||||||
|
\tikzstyle{notestyle} = [notestyleraw,%
|
||||||
|
general shadow={shadow xshift=0.5ex, shadow yshift=-0.5ex,%
|
||||||
|
opacity=1,fill=black!50}]%
|
||||||
|
\else%
|
||||||
|
\PackageWarning{todonotes}{Trying to put a shadow below a todonote,%
|
||||||
|
but the loadshadowlibrary option was not given when loading%
|
||||||
|
the todonotes package}%
|
||||||
|
\tikzstyle{notestyle} = [notestyleraw]%
|
||||||
|
\fi%
|
||||||
|
\else%
|
||||||
|
\tikzstyle{notestyle} = [notestyleraw]%
|
||||||
|
\fi%
|
||||||
|
\tikzstyle{notestyleleft} = [%
|
||||||
|
notestyle,%
|
||||||
|
left]%
|
||||||
|
\tikzstyle{connectstyle} = [%
|
||||||
|
thick,%
|
||||||
|
draw=\@todonotes@currentlinecolor]%
|
||||||
|
\tikzstyle{inlinenotestyle} = [%
|
||||||
|
notestyle,%
|
||||||
|
text width=\@todonotes@inlinewidth - 1.6 ex - 1 pt]%
|
||||||
|
\if@todonotes@localdisable%
|
||||||
|
\else%
|
||||||
|
\addtocounter{@todonotes@numberoftodonotes}{1}%
|
||||||
|
\if@todonotes@appendtolistoftodos%
|
||||||
|
\phantomsection%
|
||||||
|
\if@todonotes@captiongiven%
|
||||||
|
\else%
|
||||||
|
\renewcommand{\@todonotes@caption}{#2}%
|
||||||
|
\fi%
|
||||||
|
\@todonotes@addElementToListOfTodos%
|
||||||
|
\fi%
|
||||||
|
\if@todonotes@captiongiven%
|
||||||
|
\if@todonotes@prependcaption%
|
||||||
|
\renewcommand{\@todonotes@text}{\@todonotes@caption: #2}%
|
||||||
|
\fi%
|
||||||
|
\fi%
|
||||||
|
\if@todonotes@inlinenote%
|
||||||
|
\@todonotes@drawInlineNote%
|
||||||
|
\else%
|
||||||
|
\@todonotes@drawMarginNoteWithLine%
|
||||||
|
\fi%\if@todonotes@inlinenote
|
||||||
|
\fi%\if@todonotes@localdisable
|
||||||
|
}%
|
||||||
|
\newcommand{\@todonotes@drawMarginNoteWithLine}{%
|
||||||
|
\ifvmode
|
||||||
|
\vspace*{-\parskip}% % backup if we are already in vertical mode
|
||||||
|
\vskip-\baselineskip % (and don't loose that space after a
|
||||||
|
% pagebreak ...
|
||||||
|
\noindent
|
||||||
|
\fi
|
||||||
|
\begin{tikzpicture}[remember picture, overlay, baseline=-0.75ex]%
|
||||||
|
\node [coordinate] (inText) {};%
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\marginpar[{% Draw note in left margin
|
||||||
|
\@todonotes@drawMarginNote%
|
||||||
|
\@todonotes@drawLineToLeftMargin%
|
||||||
|
}]{% Draw note in right margin
|
||||||
|
\@todonotes@drawMarginNote%
|
||||||
|
\@todonotes@drawLineToRightMargin%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
\newcommand{\@todonotes@addElementToListOfTodos}{%
|
||||||
|
\if@todonotes@colorinlistoftodos%
|
||||||
|
\addcontentsline{tdo}{todo}{%
|
||||||
|
\fcolorbox{\@todonotes@currentbordercolor}%
|
||||||
|
{\@todonotes@currentbackgroundcolor}%
|
||||||
|
{\textcolor{\@todonotes@currentbackgroundcolor}{o}}%
|
||||||
|
\ \@todonotes@caption}%
|
||||||
|
\else%
|
||||||
|
\addcontentsline{tdo}{todo}{\@todonotes@caption}%
|
||||||
|
\fi}%
|
||||||
|
\newcommand{\@todonotes@useSizeCommand}{%
|
||||||
|
\ifcsname \expandafter\string\@todonotes@sizecommand\endcsname
|
||||||
|
\csname \expandafter\string\@todonotes@sizecommand\endcsname%
|
||||||
|
\else
|
||||||
|
\@todonotes@sizecommand
|
||||||
|
\fi%
|
||||||
|
}%
|
||||||
|
\newcommand{\@todonotes@drawInlineNote}{%
|
||||||
|
\if@todonotes@dviStyle%
|
||||||
|
{\if@todonotes@inlinepar\par\noindent\fi%
|
||||||
|
\begin{tikzpicture}[remember picture]%
|
||||||
|
\draw node[inlinenotestyle] {};
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\if@todonotes@inlinepar\par\fi}%
|
||||||
|
\if@todonotes@authorgiven%
|
||||||
|
{\noindent \@todonotes@useSizeCommand \@todonotes@author:\,\@todonotes@format{\@todonotes@text}}%
|
||||||
|
\else%
|
||||||
|
{\noindent \@todonotes@useSizeCommand%
|
||||||
|
\@todonotes@format{\@todonotes@text}}%
|
||||||
|
\fi
|
||||||
|
{\if@todonotes@inlinepar\par\noindent\fi%
|
||||||
|
\begin{tikzpicture}[remember picture]%
|
||||||
|
\draw node[inlinenotestyle] {};
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\if@todonotes@inlinepar\par\fi}%
|
||||||
|
\else%
|
||||||
|
{\if@todonotes@inlinepar\par\noindent\fi%
|
||||||
|
\begin{tikzpicture}[remember picture]%
|
||||||
|
\draw node[inlinenotestyle,font=\@todonotes@useSizeCommand]{%
|
||||||
|
\if@todonotes@authorgiven%
|
||||||
|
{\noindent \@todonotes@author:\,%
|
||||||
|
\@todonotes@format{\@todonotes@text}}%
|
||||||
|
\else%
|
||||||
|
{\noindent \@todonotes@format{\@todonotes@text}}%
|
||||||
|
\fi};%
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\if@todonotes@inlinepar\par\fi}%
|
||||||
|
\fi}%
|
||||||
|
\newcommand{\@todonotes@drawMarginNote}{%
|
||||||
|
\if@todonotes@dviStyle%
|
||||||
|
\begin{tikzpicture}[remember picture]%
|
||||||
|
\draw node[notestyle] {};%
|
||||||
|
\end{tikzpicture}\\%
|
||||||
|
\begin{minipage}{\@todonotes@textwidth}%
|
||||||
|
\if@todonotes@authorgiven%
|
||||||
|
\@todonotes@useSizeCommand \@todonotes@author:\,
|
||||||
|
\@todonotes@format{\@todonotes@text}%
|
||||||
|
\else%
|
||||||
|
\@todonotes@useSizeCommand\@todonotes@format{\@todonotes@text}%
|
||||||
|
\fi%
|
||||||
|
\end{minipage}\\%
|
||||||
|
\begin{tikzpicture}[remember picture]%
|
||||||
|
\draw node[notestyle] (inNote) {};%
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\else%
|
||||||
|
\let\originalHbadness\hbadness%
|
||||||
|
\hbadness 100000%
|
||||||
|
\begin{tikzpicture}[remember picture,baseline=(X.base)]%
|
||||||
|
\node(X){\vphantom{\@todonotes@useSizeCommand X}};%
|
||||||
|
\if@todonotes@authorgiven%
|
||||||
|
\draw node[notestyle,font=\@todonotes@useSizeCommand,anchor=north] (inNote) at (X.north)%
|
||||||
|
{\@todonotes@author};%
|
||||||
|
\node(Y)[below=of X]{};%
|
||||||
|
\draw node[notestyle,font=\@todonotes@useSizeCommand,anchor=north] (inNote) at (X.south)%
|
||||||
|
{\@todonotes@format{\@todonotes@text}};%
|
||||||
|
\else%
|
||||||
|
\draw node[notestyle,font=\@todonotes@useSizeCommand,anchor=north] (inNote) at (X.north)%
|
||||||
|
{\@todonotes@format{\@todonotes@text}};%
|
||||||
|
\fi%
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\hbadness \originalHbadness%
|
||||||
|
\fi}%
|
||||||
|
\newcommand{\@todonotes@drawLineToRightMargin}{%
|
||||||
|
\if@todonotes@line%
|
||||||
|
\if@todonotes@fancyline%
|
||||||
|
\tikz[remember picture,overlay]{%
|
||||||
|
\tikzstyle{both}=[line width=3pt, draw, opacity=0.15]%
|
||||||
|
\tikzstyle{line}=[shorten >=5pt, line cap=round]%
|
||||||
|
\tikzstyle{head}=[shorten >=-1pt, dash pattern=on 0pt off 1pt, ->]%
|
||||||
|
\foreach \s in {line,head}{%
|
||||||
|
\draw[both,\s]%
|
||||||
|
(inNote.north west).. controls +(0:0) and +(90:1.5)..([yshift=1ex] inText);%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
\else%
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]%
|
||||||
|
\draw[connectstyle]%
|
||||||
|
([yshift=-0.2cm + \@todonotes@tickmarkheight] inText)%
|
||||||
|
-| ([yshift=-0.2cm] inText)%
|
||||||
|
-| ([xshift=-0.2cm] inNote.west)%
|
||||||
|
-| (inNote.west);%
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\fi%
|
||||||
|
\fi}%
|
||||||
|
\newcommand{\@todonotes@drawLineToLeftMargin}{%
|
||||||
|
\if@todonotes@line%
|
||||||
|
\if@todonotes@fancyline%
|
||||||
|
\tikz[remember picture,overlay]{%
|
||||||
|
\tikzstyle{both}=[line width=3pt, draw, opacity=0.15]%
|
||||||
|
\tikzstyle{line}=[shorten >=5pt, line cap=round]%
|
||||||
|
\tikzstyle{head}=[shorten >=-1pt, dash pattern=on 0pt off 1pt,->]%
|
||||||
|
\foreach \s in {line,head}{%
|
||||||
|
\draw[both,\s]%
|
||||||
|
(inNote.north east).. controls +(0:0) and +(90:1.5)..([yshift=1ex] inText);%
|
||||||
|
}%
|
||||||
|
}%
|
||||||
|
\else%
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]%
|
||||||
|
\draw[connectstyle]%
|
||||||
|
([yshift=-0.2cm + \@todonotes@tickmarkheight] inText)%
|
||||||
|
-| ([yshift=-0.2cm] inText)%
|
||||||
|
-| ([xshift=0.2cm] inNote.east)%
|
||||||
|
-| (inNote.east);%
|
||||||
|
\end{tikzpicture}%
|
||||||
|
\fi%
|
||||||
|
\fi}%
|
||||||
|
\newcommand{\missingfigure}[2][]{%
|
||||||
|
\setkeys{todonotes}{#1}%
|
||||||
|
\addcontentsline{tdo}{todo}{\@todonotes@MissingFigureText: #2}%
|
||||||
|
\par
|
||||||
|
\noindent
|
||||||
|
\hfill
|
||||||
|
\begin{tikzpicture}
|
||||||
|
\draw[fill=\@todonotes@currentfigcolor, draw = black!40, line width=2pt]
|
||||||
|
(-2, -0.5*\@todonotes@currentfigheight-0.5cm)
|
||||||
|
rectangle +(\@todonotes@currentfigwidth, \@todonotes@currentfigheight);
|
||||||
|
\draw (2, -0.5) node[right, text
|
||||||
|
width=\@todonotes@currentfigwidth-4.5cm, font=\@todonotes@useSizeCommand] {#2};
|
||||||
|
\draw[red, fill=white, rounded corners = 5pt, line width=10pt]
|
||||||
|
(30:2cm) -- (150:2cm) -- (270:2cm) -- cycle;
|
||||||
|
\draw (0, 0.3) node {\@todonotes@MissingFigureUp};
|
||||||
|
\draw (0, -0.3) node {\@todonotes@MissingFigureDown};
|
||||||
|
\end{tikzpicture}\hfill
|
||||||
|
\null\par
|
||||||
|
}% Ending \missingfigure command
|
||||||
|
\fi% Ending \@todonotes@ifdisabled
|
||||||
|
\newcommand{\todototoc}
|
||||||
|
{%
|
||||||
|
\if@todonotes@disabled
|
||||||
|
\else
|
||||||
|
\addcontentsline{toc}{\@ifundefined{chapter}{section}{chapter}}{\@todonotes@todolistname}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\newcommand{\todo}[2][]{%
|
||||||
|
% Needed to output any dangling \item of a noskip section (see #36):
|
||||||
|
\if@inlabel \leavevmode \fi
|
||||||
|
\if@noskipsec \leavevmode \fi
|
||||||
|
\if@todonotes@inlinepar
|
||||||
|
\ifhmode
|
||||||
|
\@bsphack
|
||||||
|
\@todonotes@vmodefalse
|
||||||
|
\else
|
||||||
|
\@savsf\@m
|
||||||
|
\@savsk\z@
|
||||||
|
\@todonotes@vmodetrue
|
||||||
|
\fi
|
||||||
|
{\@todo[#1]{#2}}%
|
||||||
|
\@esphack%
|
||||||
|
\if@todonotes@vmode \par \fi
|
||||||
|
\else%
|
||||||
|
\@todo[#1]{#2}%
|
||||||
|
\fi}
|
||||||
|
\newif\if@todonotes@vmode
|
||||||
|
\newcommand*{\todostyle}[2]{%
|
||||||
|
\define@key{todonotes}{#1}[]{%
|
||||||
|
\setkeys{todonotes}{#2}}}
|
||||||
|
\endinput
|
||||||
|
%%
|
||||||
|
%% End of file `todonotes.sty'.
|
||||||
Loading…
x
Reference in New Issue
Block a user