@@ -84,10 +84,9 @@ let linkedChapter = null, raw = false, quote = false
8484let renderer = {
8585 fence ( token ) {
8686 if ( / \b h i d d e n : \s * t r u e / . test ( token . info ) ) return ""
87- /* if (noStarch)
88- return `\n\n${id(token)}\\begin{Code}\n${token.content.trimRight()}\n\\end{Code}\n`
89- else*/
90- return `\n\n${ id ( token ) } \\begin{lstlisting}\n${ escapeComplexScripts ( token . content . trimRight ( ) ) } \n\\end{lstlisting}\n\\noindent`
87+ let esc = escapeComplexScripts ( token . content . trimRight ( ) )
88+ if ( noStarch ) esc = esc . replace ( / [ “ ” ] / g, '"' ) . replace ( / … / g, "..." )
89+ return `\n\n${ id ( token ) } \\begin{lstlisting}\n${ esc } \n\\end{lstlisting}\n`
9190 } ,
9291
9392 hardbreak ( ) { return "\\break\n" } ,
@@ -99,10 +98,16 @@ let renderer = {
9998 return raw ? content : escape ( content )
10099 } ,
101100
102- paragraph_open ( token ) {
101+ paragraph_open ( token , i , tokens ) {
102+ let noIndent = ""
103+ if ( ! noStarch ) for ( i -- ; i >= 0 ; i -- ) {
104+ let prev = tokens [ i ]
105+ if ( prev . type == "fence" ) noIndent = "\\noindent "
106+ if ( ! / ^ m e t a _ i n d e x / . test ( prev . type ) ) break
107+ }
103108 let nl = "\n\n" ;
104109 if ( quote ) { nl = "" ; quote = false }
105- return nl + id ( token )
110+ return nl + noIndent + id ( token )
106111 } ,
107112 paragraph_close ( ) { return "" } ,
108113
@@ -183,7 +188,9 @@ let renderer = {
183188 let { url, width, chapter} = token . args [ 0 ]
184189 if ( chapter ) return "" // FIXME
185190 if ( / \. s v g $ / . test ( url ) ) url = url . replace ( / ^ i m g \/ / , "img/generated/" ) . replace ( / \. s v g $ / , ".pdf" )
186- return `\n\n\\vskip 1.5ex\n\\includegraphics[width=${ width || "10cm" } ]{${ url } }\n\\vskip 1.5ex`
191+ let graphics = `\\includegraphics[width=${ width || "10cm" } ]{${ url } }`
192+ if ( noStarch ) return `\n\n\\begin{figure}[H]\n${ graphics } \n\\end{figure}\n`
193+ return `\n\n\\vskip 1.5ex\n${ graphics } \n\\vskip 1.5ex\n`
187194 } ,
188195
189196 meta_quote_open ( token ) {
@@ -228,7 +235,7 @@ function renderArray(tokens) {
228235 for ( let i = 0 ; i < tokens . length ; i ++ ) {
229236 let token = tokens [ i ] , f = renderer [ token . type ]
230237 if ( ! f ) throw new Error ( "No render function for " + token . type )
231- result += f ( token , tokens [ i + 1 ] )
238+ result += f ( token , i , tokens )
232239 }
233240 return result
234241}
@@ -244,7 +251,7 @@ if (noStarch) {
244251 let image = tokens . findIndex ( t => t . type == "meta_figure" && t . args [ 0 ] ?. chapter )
245252 if ( image ) {
246253 tokens [ 0 ] . args [ 0 ] . image = tokens [ image ] . args [ 0 ] . url
247- tokens . splice ( image , image + 1 )
254+ tokens . splice ( image , 1 )
248255 }
249256 }
250257}
0 commit comments