1
0
Fork 0
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:
lise 2019-03-15 03:59:08 +01:00
parent ae9be902c2
commit e2bd91a325
6 changed files with 22 additions and 4 deletions

View File

@ -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)?)),

View File

@ -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)?)),

View File

@ -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)
}
}

View File

@ -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;

View File

@ -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!(),

View File

@ -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}