mirror of
https://github.com/lise-henry/crowbook
synced 2024-09-27 01:30:44 +02:00
Add strikethrough feature
This commit is contained in:
parent
ae9be902c2
commit
e2bd91a325
@ -497,6 +497,7 @@ impl<'a> HtmlRenderer<'a> {
|
|||||||
}
|
}
|
||||||
Token::Emphasis(ref vec) => Ok(format!("<em>{}</em>", this.render_vec(vec)?)),
|
Token::Emphasis(ref vec) => Ok(format!("<em>{}</em>", this.render_vec(vec)?)),
|
||||||
Token::Strong(ref vec) => Ok(format!("<b>{}</b>", this.render_vec(vec)?)),
|
Token::Strong(ref vec) => Ok(format!("<b>{}</b>", this.render_vec(vec)?)),
|
||||||
|
Token::Strikethrough(ref vec) => Ok(format!("<del>{}</del>", this.render_vec(vec)?)),
|
||||||
Token::Code(ref s) => Ok(format!("<code>{}</code>", escape::html(s))),
|
Token::Code(ref s) => Ok(format!("<code>{}</code>", escape::html(s))),
|
||||||
Token::Subscript(ref vec) => Ok(format!("<sub>{}</sub>", this.render_vec(vec)?)),
|
Token::Subscript(ref vec) => Ok(format!("<sub>{}</sub>", this.render_vec(vec)?)),
|
||||||
Token::Superscript(ref vec) => Ok(format!("<sup>{}</sup>", this.render_vec(vec)?)),
|
Token::Superscript(ref vec) => Ok(format!("<sup>{}</sup>", this.render_vec(vec)?)),
|
||||||
|
@ -219,6 +219,7 @@ impl<'a> LatexRenderer<'a> {
|
|||||||
.insert_bool("use_tables", self.book.features.table)
|
.insert_bool("use_tables", self.book.features.table)
|
||||||
.insert_bool("use_codeblocks", self.book.features.codeblock)
|
.insert_bool("use_codeblocks", self.book.features.codeblock)
|
||||||
.insert_bool("use_images", self.book.features.image)
|
.insert_bool("use_images", self.book.features.image)
|
||||||
|
.insert_bool("use_strikethrough", self.book.features.strikethrough)
|
||||||
.insert_str("tex_lang", tex_lang);
|
.insert_str("tex_lang", tex_lang);
|
||||||
if let Ok(tex_tmpl_add) = self.book.options.get_str("tex.template.add") {
|
if let Ok(tex_tmpl_add) = self.book.options.get_str("tex.template.add") {
|
||||||
data = data.insert_str("additional_code", tex_tmpl_add);
|
data = data.insert_str("additional_code", tex_tmpl_add);
|
||||||
@ -367,6 +368,7 @@ impl<'a> Renderer for LatexRenderer<'a> {
|
|||||||
}
|
}
|
||||||
Token::Emphasis(ref vec) => Ok(format!("\\emph{{{}}}", self.render_vec(vec)?)),
|
Token::Emphasis(ref vec) => Ok(format!("\\emph{{{}}}", self.render_vec(vec)?)),
|
||||||
Token::Strong(ref vec) => Ok(format!("\\mdstrong{{{}}}", self.render_vec(vec)?)),
|
Token::Strong(ref vec) => Ok(format!("\\mdstrong{{{}}}", self.render_vec(vec)?)),
|
||||||
|
Token::Strikethrough(ref vec) => Ok(format!("\\sout{{{}}}", self.render_vec(vec)?)),
|
||||||
Token::Code(ref s) => Ok(format!("\\mdcode{{{}}}",
|
Token::Code(ref s) => Ok(format!("\\mdcode{{{}}}",
|
||||||
insert_breaks(s))),
|
insert_breaks(s))),
|
||||||
Token::Superscript(ref vec) => Ok(format!("\\textsuperscript{{{}}}", self.render_vec(vec)?)),
|
Token::Superscript(ref vec) => Ok(format!("\\textsuperscript{{{}}}", self.render_vec(vec)?)),
|
||||||
|
@ -228,8 +228,9 @@ impl<'a> OdtRenderer<'a> {
|
|||||||
Token::DescriptionList(ref v) |
|
Token::DescriptionList(ref v) |
|
||||||
Token::DescriptionItem(ref v) |
|
Token::DescriptionItem(ref v) |
|
||||||
Token::DescriptionTerm(ref v) |
|
Token::DescriptionTerm(ref v) |
|
||||||
Token::DescriptionDetails(ref v) => {
|
Token::DescriptionDetails(ref v) |
|
||||||
warn!("{}", lformat!("ODT: Description list not handled in this output"));
|
Token::Strikethrough(ref v) => {
|
||||||
|
warn!("{}", lformat!("ODT: Description list and strikethrough not handled in this output"));
|
||||||
self.render_vec(v)
|
self.render_vec(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ pub struct Features {
|
|||||||
pub url: bool,
|
pub url: bool,
|
||||||
pub subscript: bool,
|
pub subscript: bool,
|
||||||
pub superscript: bool,
|
pub superscript: bool,
|
||||||
|
pub strikethrough: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Features {
|
impl Features {
|
||||||
@ -58,6 +59,7 @@ impl Features {
|
|||||||
url: false,
|
url: false,
|
||||||
subscript: false,
|
subscript: false,
|
||||||
superscript: false,
|
superscript: false,
|
||||||
|
strikethrough: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77,6 +79,7 @@ impl BitOr for Features {
|
|||||||
url: self.url | rhs.url,
|
url: self.url | rhs.url,
|
||||||
subscript: self.subscript | rhs.subscript,
|
subscript: self.subscript | rhs.subscript,
|
||||||
superscript: self.superscript | rhs.superscript,
|
superscript: self.superscript | rhs.superscript,
|
||||||
|
strikethrough: self.strikethrough | rhs.strikethrough
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -346,7 +349,10 @@ impl Parser {
|
|||||||
NodeValue::LineBreak => vec![Token::HardBreak],
|
NodeValue::LineBreak => vec![Token::HardBreak],
|
||||||
NodeValue::Emph => vec![Token::Emphasis(inner)],
|
NodeValue::Emph => vec![Token::Emphasis(inner)],
|
||||||
NodeValue::Strong => vec![Token::Strong(inner)],
|
NodeValue::Strong => vec![Token::Strong(inner)],
|
||||||
NodeValue::Strikethrough => unimplemented!(),
|
NodeValue::Strikethrough => {
|
||||||
|
self.features.strikethrough = true;
|
||||||
|
vec![Token::Strikethrough(inner)]
|
||||||
|
},
|
||||||
NodeValue::Superscript => vec![Token::Superscript(inner)],
|
NodeValue::Superscript => vec![Token::Superscript(inner)],
|
||||||
NodeValue::Link(ref link) => {
|
NodeValue::Link(ref link) => {
|
||||||
self.features.url = true;
|
self.features.url = true;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (C) 2016 Élisabeth HENRY.
|
// Copyright (C) 2016-2019 Élisabeth HENRY.
|
||||||
//
|
//
|
||||||
// This file is part of Crowbook.
|
// This file is part of Crowbook.
|
||||||
//
|
//
|
||||||
@ -45,6 +45,8 @@ pub enum Token {
|
|||||||
/// **Strong**, a.k.a. bold
|
/// **Strong**, a.k.a. bold
|
||||||
Strong(Vec<Token>),
|
Strong(Vec<Token>),
|
||||||
/// `Code`, a.k.a. verbatim
|
/// `Code`, a.k.a. verbatim
|
||||||
|
/// Strikethrough
|
||||||
|
Strikethrough(Vec<Token>),
|
||||||
Code(String),
|
Code(String),
|
||||||
/// A quote
|
/// A quote
|
||||||
BlockQuote(Vec<Token>),
|
BlockQuote(Vec<Token>),
|
||||||
@ -136,6 +138,7 @@ impl Token {
|
|||||||
Link(_, _, ref v) |
|
Link(_, _, ref v) |
|
||||||
Image(_, _, ref v) |
|
Image(_, _, ref v) |
|
||||||
StandaloneImage(_, _, ref v) |
|
StandaloneImage(_, _, ref v) |
|
||||||
|
Strikethrough(ref v) |
|
||||||
Annotation(_, ref v) => Some(v),
|
Annotation(_, ref v) => Some(v),
|
||||||
|
|
||||||
__NonExhaustive => unreachable!(),
|
__NonExhaustive => unreachable!(),
|
||||||
@ -169,6 +172,7 @@ impl Token {
|
|||||||
Footnote(ref mut v) |
|
Footnote(ref mut v) |
|
||||||
Link(_, _, ref mut v) |
|
Link(_, _, ref mut v) |
|
||||||
Image(_, _, ref mut v) |
|
Image(_, _, ref mut v) |
|
||||||
|
Strikethrough(ref mut v) |
|
||||||
StandaloneImage(_, _, ref mut v) => Some(v),
|
StandaloneImage(_, _, ref mut v) => Some(v),
|
||||||
|
|
||||||
__NonExhaustive => unreachable!(),
|
__NonExhaustive => unreachable!(),
|
||||||
|
@ -29,6 +29,10 @@
|
|||||||
% Allows hyphenatations in \texttt
|
% Allows hyphenatations in \texttt
|
||||||
\usepackage[htt]{hyphenat}
|
\usepackage[htt]{hyphenat}
|
||||||
|
|
||||||
|
<<#use_strikethrough>>
|
||||||
|
% Only included if strikethrough is used in the document
|
||||||
|
\usepackage[normalem]{ulem}
|
||||||
|
<</use_strikethrough>>
|
||||||
<<#use_url>>
|
<<#use_url>>
|
||||||
% Only included if URLs are used in the document
|
% Only included if URLs are used in the document
|
||||||
\usepackage[colorlinks=true,breaklinks=true,hypertexnames=false]{hyperref}
|
\usepackage[colorlinks=true,breaklinks=true,hypertexnames=false]{hyperref}
|
||||||
|
Loading…
Reference in New Issue
Block a user