@@ -71,6 +71,7 @@ import {
7171 kManuscriptType ,
7272 kManuscriptUrl ,
7373 ManuscriptConfig ,
74+ ManuscriptOutputBundle ,
7475 ResolvedManuscriptConfig ,
7576} from "./manuscript-types.ts" ;
7677import {
@@ -121,6 +122,7 @@ import { safeExistsSync } from "../../../core/path.ts";
121122
122123const kMecaIcon = "archive" ;
123124const kOutputDir = "_manuscript" ;
125+ const kTexOutputBundle = "tex-bundle" ;
124126
125127// Manscript projects are a multi file project that is composed into:
126128// - a root article file
@@ -621,19 +623,29 @@ export const manuscriptProjectType: ProjectType = {
621623 return undefined ;
622624 }
623625 } ,
624- postRender : async (
626+ beforeMoveOutput : async (
625627 context : ProjectContext ,
626- _incremental : boolean ,
627- outputFiles : ProjectOutputFile [ ] ,
628+ renderedFiles : RenderResultFile [ ] ,
628629 ) => {
629630 let outBundle ;
630- for ( const outputFile of outputFiles ) {
631- const format = outputFile . format ;
631+ for ( const renderedFile of renderedFiles ) {
632+ const format = renderedFile . format ;
632633 if ( isLatexOutput ( format . pandoc ) && format . render [ kKeepTex ] ) {
633- outBundle = createTexOutputBundle ( outputFile , context ) ;
634+ outBundle = createTexOutputBundle ( renderedFile , context ) ;
634635 }
635636 }
636-
637+ if ( outBundle ) {
638+ return {
639+ [ kTexOutputBundle ] : outBundle ,
640+ } ;
641+ }
642+ } ,
643+ postRender : async (
644+ context : ProjectContext ,
645+ _incremental : boolean ,
646+ outputFiles : ProjectOutputFile [ ] ,
647+ moveOutputResult ?: Record < string , unknown > ,
648+ ) => {
637649 const manuscriptConfig = context . config
638650 ?. [ kManuscriptType ] as ResolvedManuscriptConfig ;
639651 if (
@@ -642,6 +654,12 @@ export const manuscriptProjectType: ProjectType = {
642654 manuscriptConfig ,
643655 ) && outputFiles . length > 0
644656 ) {
657+ let outBundle : ManuscriptOutputBundle | undefined ;
658+ if ( moveOutputResult ) {
659+ outBundle =
660+ moveOutputResult [ kTexOutputBundle ] as ManuscriptOutputBundle ;
661+ }
662+
645663 const language = outputFiles [ 0 ] . format . language ;
646664
647665 logProgress ( `Creating ${ language [ kManuscriptMecaBundle ] } ` ) ;
@@ -819,9 +837,9 @@ const resolveCodeLinks = (
819837
820838const kTexOutDir = "_tex" ;
821839const createTexOutputBundle = (
822- outputFile : ProjectOutputFile ,
840+ outputFile : RenderResultFile ,
823841 context : ProjectContext ,
824- ) => {
842+ ) : ManuscriptOutputBundle | undefined => {
825843 const format = outputFile . format ;
826844 const outDir = projectOutputDir ( context ) ;
827845
@@ -831,7 +849,7 @@ const createTexOutputBundle = (
831849
832850 if ( format . pandoc [ "output-file" ] ) {
833851 // Compute the tex file path
834- const baseDir = dirname ( outputFile . input ) ;
852+ const baseDir = join ( context . dir , dirname ( outputFile . input ) ) ;
835853 const texInputFile = join ( baseDir , format . pandoc [ "output-file" ] ) ;
836854 const texInputDir = dirname ( texInputFile ) ;
837855
@@ -865,8 +883,8 @@ const createTexOutputBundle = (
865883 }
866884
867885 // move the supporting files and resources
868- if ( outputFile . resources ) {
869- const uniqResources = ld . uniq ( outputFile . resources ) ;
886+ if ( outputFile . resourceFiles ) {
887+ const uniqResources = ld . uniq ( outputFile . resourceFiles ) ;
870888 for ( const file of uniqResources ) {
871889 const outPath = join ( texDirAbs , relative ( context . dir , file ) ) ;
872890 ensureDirSync ( dirname ( outPath ) ) ;
0 commit comments