mirror of
https://github.com/lise-henry/crowbook
synced 2024-05-27 00:36:14 +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::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::Subscript(ref vec) => Ok(format!("<sub>{}</sub>", 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_codeblocks", self.book.features.codeblock)
|
||||
.insert_bool("use_images", self.book.features.image)
|
||||
.insert_bool("use_strikethrough", self.book.features.strikethrough)
|
||||
.insert_str("tex_lang", tex_lang);
|
||||
if let Ok(tex_tmpl_add) = self.book.options.get_str("tex.template.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::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{{{}}}",
|
||||
insert_breaks(s))),
|
||||
Token::Superscript(ref vec) => Ok(format!("\\textsuperscript{{{}}}", self.render_vec(vec)?)),
|
||||
|
|
|
@ -228,8 +228,9 @@ impl<'a> OdtRenderer<'a> {
|
|||
Token::DescriptionList(ref v) |
|
||||
Token::DescriptionItem(ref v) |
|
||||
Token::DescriptionTerm(ref v) |
|
||||
Token::DescriptionDetails(ref v) => {
|
||||
warn!("{}", lformat!("ODT: Description list not handled in this output"));
|
||||
Token::DescriptionDetails(ref v) |
|
||||
Token::Strikethrough(ref v) => {
|
||||
warn!("{}", lformat!("ODT: Description list and strikethrough not handled in this output"));
|
||||
self.render_vec(v)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,6 +43,7 @@ pub struct Features {
|
|||
pub url: bool,
|
||||
pub subscript: bool,
|
||||
pub superscript: bool,
|
||||
pub strikethrough: bool,
|
||||
}
|
||||
|
||||
impl Features {
|
||||
|
@ -58,6 +59,7 @@ impl Features {
|
|||
url: false,
|
||||
subscript: false,
|
||||
superscript: false,
|
||||
strikethrough: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -77,6 +79,7 @@ impl BitOr for Features {
|
|||
url: self.url | rhs.url,
|
||||
subscript: self.subscript | rhs.subscript,
|
||||
superscript: self.superscript | rhs.superscript,
|
||||
strikethrough: self.strikethrough | rhs.strikethrough
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -346,7 +349,10 @@ impl Parser {
|
|||
NodeValue::LineBreak => vec![Token::HardBreak],
|
||||
NodeValue::Emph => vec![Token::Emphasis(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::Link(ref link) => {
|
||||
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.
|
||||
//
|
||||
|
@ -45,6 +45,8 @@ pub enum Token {
|
|||
/// **Strong**, a.k.a. bold
|
||||
Strong(Vec<Token>),
|
||||
/// `Code`, a.k.a. verbatim
|
||||
/// Strikethrough
|
||||
Strikethrough(Vec<Token>),
|
||||
Code(String),
|
||||
/// A quote
|
||||
BlockQuote(Vec<Token>),
|
||||
|
@ -136,6 +138,7 @@ impl Token {
|
|||
Link(_, _, ref v) |
|
||||
Image(_, _, ref v) |
|
||||
StandaloneImage(_, _, ref v) |
|
||||
Strikethrough(ref v) |
|
||||
Annotation(_, ref v) => Some(v),
|
||||
|
||||
__NonExhaustive => unreachable!(),
|
||||
|
@ -169,6 +172,7 @@ impl Token {
|
|||
Footnote(ref mut v) |
|
||||
Link(_, _, ref mut v) |
|
||||
Image(_, _, ref mut v) |
|
||||
Strikethrough(ref mut v) |
|
||||
StandaloneImage(_, _, ref mut v) => Some(v),
|
||||
|
||||
__NonExhaustive => unreachable!(),
|
||||
|
|
|
@ -29,6 +29,10 @@
|
|||
% Allows hyphenatations in \texttt
|
||||
\usepackage[htt]{hyphenat}
|
||||
|
||||
<<#use_strikethrough>>
|
||||
% Only included if strikethrough is used in the document
|
||||
\usepackage[normalem]{ulem}
|
||||
<</use_strikethrough>>
|
||||
<<#use_url>>
|
||||
% Only included if URLs are used in the document
|
||||
\usepackage[colorlinks=true,breaklinks=true,hypertexnames=false]{hyperref}
|
||||
|
|
Loading…
Reference in New Issue