Skip to content

Commit 4c9f615

Browse files
committed
Fix some other latex output issues
1 parent 139f678 commit 4c9f615

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/render_latex.mjs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,9 @@ let linkedChapter = null, raw = false, quote = false
8484
let renderer = {
8585
fence(token) {
8686
if (/\bhidden:\s*true/.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 (!/^meta_index/.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 (/\.svg$/.test(url)) url = url.replace(/^img\//, "img/generated/").replace(/\.svg$/, ".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

Comments
 (0)