Skip to content

Commit cdc4450

Browse files
committed
Roman and Alphabetic numbering added
1 parent f793529 commit cdc4450

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

FileFormat.Words/FileFormat.Words.IElements.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@ public class Paragraph : IElement
8383
/// Gets or sets whether the paragraph has numbering.
8484
/// </summary>
8585
public bool IsNumbered { get; set; }
86+
87+
/// <summary>
88+
/// Gets or sets whether the paragraph has numbering.
89+
/// </summary>
90+
public bool IsRoman { get; set; }
91+
92+
/// <summary>
93+
/// Gets or sets whether the paragraph has numbering.
94+
/// </summary>
95+
public bool IsAlphabeticNumber { get; set; }
8696

8797
/// <summary>
8898
/// Initializes a new instance of the <see cref="Paragraph"/> class.

FileFormat.Words/OpenXML.Words.cs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ internal WP.Paragraph CreateParagraph(FF.Paragraph ffP)
141141
SetIndentation(paragraphProperties, ffP.Indentation);
142142
}
143143

144-
if (ffP.IsNumbered || ffP.IsBullet)
144+
if (ffP.IsNumbered || ffP.IsBullet || ffP.IsRoman || ffP.IsAlphabeticNumber)
145145
{
146146
var numberingProperties = new WP.NumberingProperties();
147147
var numberingId = new WP.NumberingId();
@@ -157,6 +157,16 @@ internal WP.Paragraph CreateParagraph(FF.Paragraph ffP)
157157
numberingId.Val = ffP.NumberingId <= 1 || ffP.NumberingId == null ? 2 : ffP.NumberingId;
158158
numberingLevelReference.Val = ffP.NumberingLevel ?? 0;
159159
}
160+
else if (ffP.IsAlphabeticNumber)
161+
{
162+
numberingId.Val = ffP.NumberingId <= 2 || ffP.NumberingId == null ? 3 : ffP.NumberingId;
163+
numberingLevelReference.Val = ffP.NumberingLevel ?? 0;
164+
}
165+
else if (ffP.IsRoman)
166+
{
167+
numberingId.Val = ffP.NumberingId <= 3 || ffP.NumberingId == null ? 4 : ffP.NumberingId;
168+
numberingLevelReference.Val = ffP.NumberingLevel ?? 0;
169+
}
160170

161171
numberingProperties.Append(numberingId, numberingLevelReference);
162172
paragraphProperties.Append(numberingProperties);
@@ -237,6 +247,8 @@ internal void AddNumberingDefinitions(PKG.WordprocessingDocument pkgDocument)
237247

238248
WP.AbstractNum abstractNumBulleted = new WP.AbstractNum() { AbstractNumberId = 1 };
239249
WP.AbstractNum abstractNumNumbered = new WP.AbstractNum() { AbstractNumberId = 2 };
250+
WP.AbstractNum abstractNumLetter = new WP.AbstractNum() { AbstractNumberId = 3 };
251+
WP.AbstractNum abstractNumRoman = new WP.AbstractNum() { AbstractNumberId = 4 };
240252
string numberingStyle = "%1.";
241253
for (int i = 0; i < 9; i++)
242254
{
@@ -246,19 +258,31 @@ internal void AddNumberingDefinitions(PKG.WordprocessingDocument pkgDocument)
246258
}
247259
abstractNumBulleted.Append(CreateLevel(i, WP.NumberFormatValues.Bullet, "•"));
248260
abstractNumNumbered.Append(CreateLevel(i, WP.NumberFormatValues.Decimal, numberingStyle));
261+
abstractNumLetter.Append(CreateLevel(i, WP.NumberFormatValues.LowerLetter, $"%{ i + 1 }."));
262+
abstractNumRoman.Append(CreateLevel(i, WP.NumberFormatValues.LowerRoman, $"%{i + 1}."));
249263
}
250264

251265
numbering.Append(abstractNumBulleted);
252266
numbering.Append(abstractNumNumbered);
267+
numbering.Append(abstractNumLetter);
268+
numbering.Append(abstractNumRoman);
253269

254270
WP.NumberingInstance numInstanceBulleted = new WP.NumberingInstance() { NumberID = 1 };
255271
numInstanceBulleted.Append(new WP.AbstractNumId() { Val = abstractNumBulleted.AbstractNumberId });
256272

257273
WP.NumberingInstance numInstanceNumbered = new WP.NumberingInstance() { NumberID = 2 };
258274
numInstanceNumbered.Append(new WP.AbstractNumId() { Val = abstractNumNumbered.AbstractNumberId });
259275

276+
WP.NumberingInstance numInstanceLetter = new WP.NumberingInstance() { NumberID = 3 };
277+
numInstanceLetter.Append(new WP.AbstractNumId() { Val = abstractNumLetter.AbstractNumberId });
278+
279+
WP.NumberingInstance numInstanceRoman = new WP.NumberingInstance() { NumberID = 4 };
280+
numInstanceRoman.Append(new WP.AbstractNumId() { Val = abstractNumRoman.AbstractNumberId });
281+
260282
numbering.Append(numInstanceBulleted);
261283
numbering.Append(numInstanceNumbered);
284+
numbering.Append(numInstanceLetter);
285+
numbering.Append(numInstanceRoman);
262286

263287
numberingPart.Numbering = numbering;
264288
}
@@ -618,6 +642,16 @@ internal FF.Paragraph LoadParagraph(WP.Paragraph wpPara, int id)
618642
ffP.IsBullet = true;
619643
ffP.NumberingLevel = levelVal.Value;
620644
}
645+
else if (level != null && level.NumberingFormat != null && level.NumberingFormat.Val.Value == WP.NumberFormatValues.LowerLetter)
646+
{
647+
ffP.IsAlphabeticNumber = true;
648+
ffP.NumberingLevel = levelVal.Value;
649+
}
650+
else if (level != null && level.NumberingFormat != null && level.NumberingFormat.Val.Value == WP.NumberFormatValues.LowerRoman)
651+
{
652+
ffP.IsAlphabeticNumber = true;
653+
ffP.NumberingLevel = levelVal.Value;
654+
}
621655
// If the level's numbering format is not bullet, it's a numbered list
622656
else if (level != null)
623657
{

0 commit comments

Comments
 (0)