[visual] Handle content in pasted lists with only one item (#14752)
GitOrigin-RevId: 4f0a2d260b04b8f08f2dad7e200309b2611952e6
This commit is contained in:
@@ -99,6 +99,9 @@ const htmlToLaTeX = (documentElement: HTMLElement) => {
|
||||
// pre-process table elements
|
||||
processTables(documentElement)
|
||||
|
||||
// pre-process lists
|
||||
processLists(documentElement)
|
||||
|
||||
// protect special characters in non-LaTeX text nodes
|
||||
protectSpecialCharacters(documentElement)
|
||||
|
||||
@@ -214,6 +217,18 @@ const matchingParents = (element: HTMLElement, selector: string) => {
|
||||
return matches
|
||||
}
|
||||
|
||||
const processLists = (element: HTMLElement) => {
|
||||
for (const list of element.querySelectorAll('ol,ul')) {
|
||||
// if the list has only one item, replace the list with an element containing the contents of the item
|
||||
if (list.childElementCount === 1) {
|
||||
const div = document.createElement('div')
|
||||
div.append(...list.firstElementChild!.childNodes)
|
||||
list.before('\n', div, '\n')
|
||||
list.remove()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const processTables = (element: HTMLElement) => {
|
||||
for (const table of element.querySelectorAll('table')) {
|
||||
// create a wrapper element for the table and the caption
|
||||
@@ -626,11 +641,13 @@ const selectors = [
|
||||
end: () => `}\n\n`,
|
||||
}),
|
||||
createSelector({
|
||||
// selector: 'ul:has(> li:nth-child(2))', // only select lists with at least 2 items (once Firefox supports :has())
|
||||
selector: 'ul',
|
||||
start: element => `\n\n${listIndent(element)}\\begin{itemize}`,
|
||||
end: element => `\n${listIndent(element)}\\end{itemize}\n`,
|
||||
}),
|
||||
createSelector({
|
||||
// selector: 'ol:has(> li:nth-child(2))', // only select lists with at least 2 items (once Firefox supports :has())
|
||||
selector: 'ol',
|
||||
start: element => `\n\n${listIndent(element)}\\begin{enumerate}`,
|
||||
end: element => `\n${listIndent(element)}\\end{enumerate}\n`,
|
||||
|
||||
Reference in New Issue
Block a user