@@ -391,9 +391,12 @@ export async function runPandoc(
391
391
// save args and metadata so we can print them (we may subsequently edit them)
392
392
const printArgs = [ ...args ] ;
393
393
let printMetadata = {
394
- ...ld . cloneDeep ( options . format . metadata ) ,
394
+ ...options . format . metadata ,
395
+ crossref : {
396
+ ...( options . format . metadata . crossref || { } ) ,
397
+ } ,
395
398
...options . flags ?. metadata ,
396
- } ;
399
+ } as Metadata ;
397
400
398
401
// remove some metadata that are used as parameters to our lua filters
399
402
const cleanMetadataForPrinting = ( metadata : Metadata ) => {
@@ -691,7 +694,7 @@ export async function runPandoc(
691
694
) ,
692
695
...extras . metadataOverride || { } ,
693
696
} ;
694
- printMetadata = mergeConfigs ( extras . metadata , printMetadata ) ;
697
+ printMetadata = mergeConfigs ( extras . metadata || { } , printMetadata ) ;
695
698
cleanMetadataForPrinting ( printMetadata ) ;
696
699
}
697
700
@@ -820,7 +823,9 @@ export async function runPandoc(
820
823
}
821
824
822
825
// more cleanup
823
- options . format . metadata = cleanupPandocMetadata ( options . format . metadata ) ;
826
+ options . format . metadata = cleanupPandocMetadata ( {
827
+ ...options . format . metadata ,
828
+ } ) ;
824
829
printMetadata = cleanupPandocMetadata ( printMetadata ) ;
825
830
826
831
if ( extras [ kIncludeInHeader ] ) {
@@ -1370,21 +1375,20 @@ export async function runPandoc(
1370
1375
}
1371
1376
}
1372
1377
1378
+ // this mutates metadata[kClassOption]
1373
1379
function cleanupPandocMetadata ( metadata : Metadata ) {
1374
- const cleaned = ld . cloneDeep ( metadata ) ;
1375
-
1376
1380
// pdf classoption can end up with duplicaed options
1377
- const classoption = cleaned [ kClassOption ] ;
1381
+ const classoption = metadata [ kClassOption ] ;
1378
1382
if ( Array . isArray ( classoption ) ) {
1379
- cleaned [ kClassOption ] = ld . uniqBy (
1383
+ metadata [ kClassOption ] = ld . uniqBy (
1380
1384
classoption . reverse ( ) ,
1381
1385
( option : string ) => {
1382
1386
return option . replace ( / = .+ $ / , "" ) ;
1383
1387
} ,
1384
1388
) . reverse ( ) ;
1385
1389
}
1386
1390
1387
- return cleaned ;
1391
+ return metadata ;
1388
1392
}
1389
1393
1390
1394
async function resolveExtras (
0 commit comments