feat: Add comment

main
bokuweb 2019-12-04 18:26:09 +09:00
parent 741f15236a
commit e524d6630e
15 changed files with 218 additions and 33 deletions

View File

@ -0,0 +1,21 @@
#[allow(unused)]
use std::sync::atomic::{AtomicUsize, Ordering};
#[allow(dead_code)]
static COMMENT_ID: AtomicUsize = AtomicUsize::new(0);
#[cfg(not(test))]
pub trait CommentId {
fn generate(&self) -> String {
let id = COMMENT_ID.load(Ordering::Relaxed);
COMMENT_ID.store(id + 1, Ordering::Relaxed);
format!("{}", id)
}
}
#[cfg(test)]
pub trait CommentId {
fn generate(&self) -> &str {
"123"
}
}

View File

@ -0,0 +1,62 @@
use crate::documents::{BuildXML, Paragraph};
use crate::xml_builder::*;
#[derive(Debug, Clone)]
pub struct Comment<'a> {
id: &'a str,
author: &'a str,
date: &'a str,
paragraph: Paragraph<'a>,
}
impl<'a> Default for Comment<'a> {
fn default() -> Comment<'a> {
Comment {
id: "invalidId",
author: "unnamed",
date: "1970-01-01T00:00:00Z",
paragraph: Paragraph::new(),
}
}
}
impl<'a> Comment<'a> {
pub fn new(id: &'a str) -> Comment<'a> {
Self {
id,
..Default::default()
}
}
pub fn paragraph(mut self, p: Paragraph<'a>) -> Comment<'a> {
self.paragraph = p;
self
}
}
impl<'a> BuildXML for Comment<'a> {
fn build(&self) -> Vec<u8> {
XMLBuilder::new()
.open_comment(&self.id, self.author, self.date)
.close()
.build()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[cfg(test)]
use pretty_assertions::assert_eq;
use std::str;
#[test]
fn test_ins_default() {
let b = Comment::new("123").build();
assert_eq!(
str::from_utf8(&b).unwrap(),
r#"<w:comment w:id="123" w:author="unnamed" w:date="1970-01-01T00:00:00Z" />"#
);
}
}

View File

@ -5,7 +5,7 @@ use crate::xml_builder::*;
pub struct Delete<'a> {
author: &'a str,
date: &'a str,
run: Run,
run: Run<'a>,
}
impl<'a> Default for Delete<'a> {
@ -23,7 +23,7 @@ impl<'a> Delete<'a> {
Default::default()
}
pub fn run(mut self, run: Run) -> Delete<'a> {
pub fn run(mut self, run: Run<'a>) -> Delete<'a> {
self.run = run;
self
}
@ -54,7 +54,7 @@ mod tests {
let b = Delete::new().build();
assert_eq!(
str::from_utf8(&b).unwrap(),
r#"<w:del w:id="123" w:author="unnamed" w:data="1970-01-01T00:00:00Z"><w:r><w:rPr /></w:r></w:del>"#
r#"<w:del w:id="123" w:author="unnamed" w:date="1970-01-01T00:00:00Z"><w:r><w:rPr /></w:r></w:del>"#
);
}
}

View File

@ -5,7 +5,7 @@ use crate::xml_builder::*;
pub struct Insert<'a> {
author: &'a str,
date: &'a str,
run: Run,
run: Run<'a>,
}
impl<'a> Default for Insert<'a> {
@ -23,7 +23,7 @@ impl<'a> Insert<'a> {
Default::default()
}
pub fn run(mut self, run: Run) -> Insert<'a> {
pub fn run(mut self, run: Run<'a>) -> Insert<'a> {
self.run = run;
self
}
@ -54,7 +54,7 @@ mod tests {
let b = Insert::new().build();
assert_eq!(
str::from_utf8(&b).unwrap(),
r#"<w:ins w:id="123" w:author="unnamed" w:data="1970-01-01T00:00:00Z"><w:r><w:rPr /></w:r></w:ins>"#
r#"<w:ins w:id="123" w:author="unnamed" w:date="1970-01-01T00:00:00Z"><w:r><w:rPr /></w:r></w:ins>"#
);
}
}

View File

@ -5,6 +5,7 @@ mod bookmark_end;
mod bookmark_start;
mod br;
mod color;
mod comment;
mod comment_range_end;
mod comment_range_start;
mod default_tab_stop;
@ -57,6 +58,7 @@ pub use bookmark_end::*;
pub use bookmark_start::*;
pub use br::*;
pub use color::*;
pub use comment::*;
pub use comment_range_end::*;
pub use comment_range_start::*;
pub use default_tab_stop::*;

View File

@ -22,7 +22,7 @@ impl<'a> Default for Paragraph<'a> {
#[derive(Debug, Clone)]
pub enum ParagraphChild<'a> {
Run(Run),
Run(Run<'a>),
Insert(Insert<'a>),
Delete(Delete<'a>),
BookmarkStart(BookmarkStart<'a>),
@ -46,7 +46,7 @@ impl<'a> Paragraph<'a> {
Default::default()
}
pub fn add_run(mut self, run: Run) -> Paragraph<'a> {
pub fn add_run(mut self, run: Run<'a>) -> Paragraph<'a> {
self.children.push(ParagraphChild::Run(run));
self
}

View File

@ -1,20 +1,22 @@
use super::{Break, DeleteText, RunProperty, Tab, Text};
use super::{Break, Comment, DeleteText, RunProperty, Tab, Text};
use crate::documents::BuildXML;
use crate::types::BreakType;
use crate::xml_builder::*;
#[derive(Debug, Clone)]
pub struct Run {
pub struct Run<'a> {
run_property: RunProperty,
comment: Option<Comment<'a>>,
children: Vec<RunChild>,
}
impl Default for Run {
impl<'a> Default for Run<'a> {
fn default() -> Self {
let run_property = RunProperty::new();
Self {
run_property,
children: vec![],
comment: None,
}
}
}
@ -27,65 +29,70 @@ pub enum RunChild {
Break(Break),
}
impl Run {
pub fn new() -> Run {
impl<'a> Run<'a> {
pub fn new() -> Run<'a> {
Run {
..Default::default()
}
}
pub fn add_text(mut self, text: &str) -> Run {
pub fn add_text(mut self, text: &'a str) -> Run<'a> {
self.children.push(RunChild::Text(Text::new(text)));
self
}
pub fn add_delete_text(mut self, text: &str) -> Run {
pub fn add_delete_text(mut self, text: &'a str) -> Run<'a> {
self.children.push(RunChild::Text(Text::new(text)));
self
}
pub fn add_tab(mut self) -> Run {
pub fn add_tab(mut self) -> Run<'a> {
self.children.push(RunChild::Tab(Tab::new()));
self
}
pub fn add_break(mut self, break_type: BreakType) -> Run {
pub fn add_break(mut self, break_type: BreakType) -> Run<'a> {
self.children.push(RunChild::Break(Break::new(break_type)));
self
}
pub fn size(mut self, size: usize) -> Run {
pub fn size(mut self, size: usize) -> Run<'a> {
self.run_property = self.run_property.size(size);
self
}
pub fn color(mut self, color: &str) -> Run {
pub fn color(mut self, color: &'a str) -> Run<'a> {
self.run_property = self.run_property.color(color);
self
}
pub fn highlight(mut self, color: &str) -> Run {
pub fn highlight(mut self, color: &'a str) -> Run<'a> {
self.run_property = self.run_property.highlight(color);
self
}
pub fn bold(mut self) -> Run {
pub fn bold(mut self) -> Run<'a> {
self.run_property = self.run_property.bold();
self
}
pub fn italic(mut self) -> Run {
pub fn italic(mut self) -> Run<'a> {
self.run_property = self.run_property.italic();
self
}
pub fn underline(mut self, line_type: &str) -> Run {
pub fn underline(mut self, line_type: &'a str) -> Run<'a> {
self.run_property = self.run_property.underline(line_type);
self
}
pub fn comment(mut self, line_type: &'a str) -> Run<'a> {
// self.run_property = self.run_property.underline(line_type);
self
}
}
impl BuildXML for Run {
impl<'a> BuildXML for Run<'a> {
fn build(&self) -> Vec<u8> {
let b = XMLBuilder::new();
let mut b = b.open_run().add_child(&self.run_property);

View File

@ -165,14 +165,15 @@ impl XMLBuilder {
"w:gutter"
);
opened_el!(open_insert, "w:ins", "w:id", "w:author", "w:data");
opened_el!(open_delete, "w:del", "w:id", "w:author", "w:data");
opened_el!(open_insert, "w:ins", "w:id", "w:author", "w:date");
opened_el!(open_delete, "w:del", "w:id", "w:author", "w:date");
closed_el!(bookmark_start, "w:bookmarkStart", "w:id", "w:name");
closed_el!(bookmark_end, "w:bookmarkEnd", "w:id");
closed_el!(comment_range_start, "w:commentRangeStart", "w:id");
closed_el!(comment_range_end, "w:commentRangeEnd", "w:id");
opened_el!(open_comment, "w:comment", "w:id", "w:author", "w:date");
}
#[cfg(test)]

Binary file not shown.

View File

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dcterms:created xsi:type="dcterms:W3CDTF">2019-12-04T16:57:40Z</dcterms:created><dc:creator></dc:creator><dc:description></dc:description><dc:language>ja-JP</dc:language><cp:lastModifiedBy></cp:lastModifiedBy><dcterms:modified xsi:type="dcterms:W3CDTF">2019-12-04T16:58:51Z</dcterms:modified><cp:revision>1</cp:revision><dc:subject></dc:subject><dc:title></dc:title></cp:coreProperties>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dcterms:created xsi:type="dcterms:W3CDTF">2019-12-04T16:57:40Z</dcterms:created><dc:creator></dc:creator><dc:description></dc:description><dc:language>ja-JP</dc:language><cp:lastModifiedBy></cp:lastModifiedBy><dcterms:modified xsi:type="dcterms:W3CDTF">2019-12-04T18:22:46Z</dcterms:modified><cp:revision>2</cp:revision><dc:subject></dc:subject><dc:title></dc:title></cp:coreProperties>

View File

@ -10,7 +10,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"
xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14 wp14">
<w:comment w:id="0" w:author="不明な作成者" w:date="2019-12-04T16:58:11Z" w:initials="">
<w:comment w:id="0" w:author="不明な作成者" w:date="2019-12-04T18:22:41Z" w:initials="">
<w:p>
<w:r>
<w:rPr>
@ -39,6 +39,73 @@
<w:em w:val="none"/>
<w:lang w:bidi="hi-IN" w:eastAsia="ja-JP" w:val="en-US"/>
</w:rPr>
<w:t>Comment3</w:t>
</w:r>
</w:p>
</w:comment>
<w:comment w:id="1" w:author="不明な作成者" w:date="2019-12-04T18:22:23Z" w:initials="">
<w:p>
<w:r>
<w:rPr>
<w:rFonts w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari" w:ascii="Liberation Serif" w:hAnsi="Liberation Serif"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:caps w:val="false"/>
<w:smallCaps w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:emboss w:val="false"/>
<w:imprint w:val="false"/>
<w:color w:val="auto"/>
<w:spacing w:val="0"/>
<w:w w:val="100"/>
<w:kern w:val="2"/>
<w:position w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
<w:vertAlign w:val="baseline"/>
<w:em w:val="none"/>
<w:lang w:bidi="hi-IN" w:eastAsia="ja-JP" w:val="en-US"/>
</w:rPr>
<w:t>Comment Added</w:t>
</w:r>
</w:p>
</w:comment>
<w:comment w:id="2" w:author="不明な作成者" w:date="2019-12-04T16:58:11Z" w:initials="">
<w:p>
<w:r>
<w:rPr>
<w:rFonts w:cs="Lohit Devanagari" w:ascii="Liberation Serif" w:hAnsi="Liberation Serif" w:eastAsia="Noto Sans CJK JP"/>
<w:b w:val="false"/>
<w:bCs w:val="false"/>
<w:i w:val="false"/>
<w:iCs w:val="false"/>
<w:caps w:val="false"/>
<w:smallCaps w:val="false"/>
<w:strike w:val="false"/>
<w:dstrike w:val="false"/>
<w:outline w:val="false"/>
<w:shadow w:val="false"/>
<w:emboss w:val="false"/>
<w:imprint w:val="false"/>
<w:color w:val="auto"/>
<w:spacing w:val="0"/>
<w:w w:val="100"/>
<w:kern w:val="2"/>
<w:position w:val="0"/>
<w:sz w:val="20"/>
<w:sz w:val="20"/>
<w:szCs w:val="24"/>
<w:u w:val="none"/>
<w:vertAlign w:val="baseline"/>
<w:em w:val="none"/>
<w:lang w:val="en-US" w:bidi="hi-IN" w:eastAsia="ja-JP"/>
</w:rPr>
<w:t>Hello world!!</w:t>
</w:r>
</w:p>

View File

@ -18,12 +18,18 @@
</w:pPr>
<w:r>
<w:rPr></w:rPr>
<w:t xml:space="preserve">Comment is </w:t>
<w:t xml:space="preserve">Comment </w:t>
</w:r>
<w:commentRangeStart w:id="0"/>
<w:r>
<w:rPr></w:rPr>
<w:t>here</w:t>
<w:t xml:space="preserve">is </w:t>
</w:r>
<w:commentRangeStart w:id="1"/>
<w:commentRangeStart w:id="2"/>
<w:r>
<w:rPr></w:rPr>
<w:t>her</w:t>
</w:r>
<w:r>
<w:rPr></w:rPr>
@ -32,6 +38,24 @@
<w:r>
<w:commentReference w:id="0"/>
</w:r>
<w:r>
<w:rPr></w:rPr>
<w:t>e</w:t>
</w:r>
<w:r>
<w:rPr></w:rPr>
</w:r>
<w:commentRangeEnd w:id="1"/>
<w:r>
<w:commentReference w:id="1"/>
</w:r>
<w:r>
<w:rPr></w:rPr>
</w:r>
<w:commentRangeEnd w:id="2"/>
<w:r>
<w:commentReference w:id="2"/>
</w:r>
<w:r>
<w:rPr></w:rPr>
<w:t xml:space="preserve">. Comment Example </w:t>
@ -44,6 +68,7 @@
<w:pgNumType w:fmt="decimal"/>
<w:formProt w:val="false"/>
<w:textDirection w:val="lrTb"/>
<w:docGrid w:type="default" w:linePitch="100" w:charSpace="0"/>
</w:sectPr>
</w:body>
</w:document>

View File

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:fonts xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:font w:name="Times New Roman"><w:charset w:val="00"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Symbol"><w:charset w:val="02"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Arial"><w:charset w:val="00"/><w:family w:val="swiss"/><w:pitch w:val="variable"/></w:font><w:font w:name="Liberation Serif"><w:altName w:val="Times New Roman"/><w:charset w:val="01"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Liberation Sans"><w:altName w:val="Arial"/><w:charset w:val="01"/><w:family w:val="swiss"/><w:pitch w:val="variable"/></w:font></w:fonts>
<w:fonts xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><w:font w:name="Times New Roman"><w:charset w:val="00"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Symbol"><w:charset w:val="02"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Arial"><w:charset w:val="00"/><w:family w:val="swiss"/><w:pitch w:val="variable"/></w:font><w:font w:name="Liberation Serif"><w:altName w:val="Times New Roman"/><w:charset w:val="01"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font><w:font w:name="Liberation Sans"><w:altName w:val="Arial"/><w:charset w:val="01"/><w:family w:val="roman"/><w:pitch w:val="variable"/></w:font></w:fonts>

View File

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:zoom w:percent="100"/><w:defaultTabStop w:val="709"/><w:compat><w:doNotExpandShiftReturn/></w:compat></w:settings>
<w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:zoom w:percent="100"/><w:defaultTabStop w:val="709"/><w:compat><w:doNotExpandShiftReturn/></w:compat><w:compat></w:compat><w:themeFontLang w:val="" w:eastAsia="" w:bidi=""/></w:settings>

View File

@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="w14"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:kern w:val="2"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="ja-JP" w:bidi="hi-IN"/></w:rPr></w:rPrDefault><w:pPrDefault><w:pPr><w:widowControl/></w:pPr></w:pPrDefault></w:docDefaults><w:style w:type="paragraph" w:styleId="Normal"><w:name w:val="Normal"/><w:qFormat/><w:pPr><w:widowControl/></w:pPr><w:rPr><w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:color w:val="auto"/><w:kern w:val="2"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="ja-JP" w:bidi="hi-IN"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style14"><w:name w:val="見出し"/><w:basedOn w:val="Normal"/><w:next w:val="Style15"/><w:qFormat/><w:pPr><w:keepNext w:val="true"/><w:spacing w:before="240" w:after="120"/></w:pPr><w:rPr><w:rFonts w:ascii="Liberation Sans" w:hAnsi="Liberation Sans" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:sz w:val="28"/><w:szCs w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style15"><w:name w:val="Body Text"/><w:basedOn w:val="Normal"/><w:pPr><w:spacing w:lineRule="auto" w:line="276" w:before="0" w:after="140"/></w:pPr><w:rPr></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style16"><w:name w:val="List"/><w:basedOn w:val="Style15"/><w:pPr></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style17"><w:name w:val="Caption"/><w:basedOn w:val="Normal"/><w:qFormat/><w:pPr><w:suppressLineNumbers/><w:spacing w:before="120" w:after="120"/></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/><w:i/><w:iCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style18"><w:name w:val="索引"/><w:basedOn w:val="Normal"/><w:qFormat/><w:pPr><w:suppressLineNumbers/></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/></w:rPr></w:style></w:styles>
<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="w14"><w:docDefaults><w:rPrDefault><w:rPr><w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:kern w:val="2"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="ja-JP" w:bidi="hi-IN"/></w:rPr></w:rPrDefault><w:pPrDefault><w:pPr></w:pPr></w:pPrDefault></w:docDefaults><w:style w:type="paragraph" w:styleId="Normal"><w:name w:val="Normal"/><w:qFormat/><w:pPr><w:widowControl/><w:bidi w:val="0"/><w:jc w:val="left"/></w:pPr><w:rPr><w:rFonts w:ascii="Liberation Serif" w:hAnsi="Liberation Serif" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:color w:val="auto"/><w:kern w:val="2"/><w:sz w:val="24"/><w:szCs w:val="24"/><w:lang w:val="en-US" w:eastAsia="ja-JP" w:bidi="hi-IN"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style14"><w:name w:val="見出し"/><w:basedOn w:val="Normal"/><w:next w:val="Style15"/><w:qFormat/><w:pPr><w:keepNext w:val="true"/><w:spacing w:before="240" w:after="120"/></w:pPr><w:rPr><w:rFonts w:ascii="Liberation Sans" w:hAnsi="Liberation Sans" w:eastAsia="Noto Sans CJK JP" w:cs="Lohit Devanagari"/><w:sz w:val="28"/><w:szCs w:val="28"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style15"><w:name w:val="Body Text"/><w:basedOn w:val="Normal"/><w:pPr><w:spacing w:lineRule="auto" w:line="276" w:before="0" w:after="140"/></w:pPr><w:rPr></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style16"><w:name w:val="List"/><w:basedOn w:val="Style15"/><w:pPr></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style17"><w:name w:val="Caption"/><w:basedOn w:val="Normal"/><w:qFormat/><w:pPr><w:suppressLineNumbers/><w:spacing w:before="120" w:after="120"/></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/><w:i/><w:iCs/><w:sz w:val="24"/><w:szCs w:val="24"/></w:rPr></w:style><w:style w:type="paragraph" w:styleId="Style18"><w:name w:val="索引"/><w:basedOn w:val="Normal"/><w:qFormat/><w:pPr><w:suppressLineNumbers/></w:pPr><w:rPr><w:rFonts w:cs="Lohit Devanagari"/></w:rPr></w:style></w:styles>