@@ -58,7 +58,7 @@ export class MarkdownEmitter {
5858 options
5959 } ;
6060
61- this . writeNode ( docNode , context ) ;
61+ this . writeNode ( docNode , context , false ) ;
6262
6363 writer . ensureNewLine ( ) ; // finish the last line
6464
@@ -79,7 +79,7 @@ export class MarkdownEmitter {
7979 /**
8080 * @virtual
8181 */
82- protected writeNode ( docNode : DocNode , context : IMarkdownEmitterContext ) : void {
82+ protected writeNode ( docNode : DocNode , context : IMarkdownEmitterContext , docNodeSiblings : boolean ) : void {
8383 const writer : IndentedWriter = context . writer ;
8484
8585 switch ( docNode . kind ) {
@@ -122,9 +122,14 @@ export class MarkdownEmitter {
122122 const docParagraph : DocParagraph = docNode as DocParagraph ;
123123 const trimmedParagraph : DocParagraph = DocNodeTransforms . trimSpacesInParagraph ( docParagraph ) ;
124124 if ( context . insideTable ) {
125- writer . write ( '<p>' ) ;
126- this . writeNodes ( trimmedParagraph . nodes , context ) ;
127- writer . write ( '</p>' ) ;
125+ if ( docNodeSiblings ) {
126+ writer . write ( '<p>' ) ;
127+ this . writeNodes ( trimmedParagraph . nodes , context ) ;
128+ writer . write ( '</p>' ) ;
129+ } else {
130+ // Special case: If we are the only element inside this table cell, then we can omit the <p></p> container.
131+ this . writeNodes ( trimmedParagraph . nodes , context ) ;
132+ }
128133 } else {
129134 this . writeNodes ( trimmedParagraph . nodes , context ) ;
130135 writer . ensureNewLine ( ) ;
@@ -237,7 +242,7 @@ export class MarkdownEmitter {
237242
238243 protected writeNodes ( docNodes : ReadonlyArray < DocNode > , context : IMarkdownEmitterContext ) : void {
239244 for ( const docNode of docNodes ) {
240- this . writeNode ( docNode , context ) ;
245+ this . writeNode ( docNode , context , docNodes . length > 1 ) ;
241246 }
242247 }
243248}
0 commit comments