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