mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-06-14 00:44:34 +12:00
Add support for pandoc v2 command line options
Now both pandoc v1 and v2 are supported. Closes issue #304
This commit is contained in:
parent
2b98561981
commit
98a629454e
|
@ -67,6 +67,9 @@ class pandocExporter(basicExporter):
|
||||||
if var and item and item.text().strip():
|
if var and item and item.text().strip():
|
||||||
args.append("--variable={}:{}".format(var, item.text().strip()))
|
args.append("--variable={}:{}".format(var, item.text().strip()))
|
||||||
|
|
||||||
|
# Add title metatadata required for pandoc >= 2.x
|
||||||
|
args.append("--metadata=title:{}".format(mainWindow().mdlFlatData.item(0, 0).text().strip()))
|
||||||
|
|
||||||
qApp.setOverrideCursor(QCursor(Qt.WaitCursor))
|
qApp.setOverrideCursor(QCursor(Qt.WaitCursor))
|
||||||
|
|
||||||
p = subprocess.Popen(
|
p = subprocess.Popen(
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# --!-- coding: utf8 --!--
|
# --!-- coding: utf8 --!--
|
||||||
|
import re
|
||||||
|
|
||||||
from PyQt5.QtGui import QTextCharFormat, QFont
|
from PyQt5.QtGui import QTextCharFormat, QFont
|
||||||
from PyQt5.QtWidgets import qApp, QVBoxLayout, QCheckBox, QWidget, QHBoxLayout, QLabel, QSpinBox, QComboBox
|
from PyQt5.QtWidgets import qApp, QVBoxLayout, QCheckBox, QWidget, QHBoxLayout, QLabel, QSpinBox, QComboBox
|
||||||
|
|
||||||
|
@ -19,7 +21,14 @@ class abstractPlainText(markdown):
|
||||||
self.exporter = exporter
|
self.exporter = exporter
|
||||||
|
|
||||||
def settingsWidget(self):
|
def settingsWidget(self):
|
||||||
w = pandocSettings(self, toFormat=self.toFormat)
|
# Get pandoc major version to determine valid command line options
|
||||||
|
p = re.compile(r'pandoc (\d+)\..*')
|
||||||
|
m = p.match(self.exporter.version())
|
||||||
|
if m:
|
||||||
|
majorVersion = m.group(1)
|
||||||
|
else:
|
||||||
|
majorVersion = ""
|
||||||
|
w = pandocSettings(self, majorVersion, toFormat=self.toFormat)
|
||||||
w.loadSettings()
|
w.loadSettings()
|
||||||
return w
|
return w
|
||||||
|
|
||||||
|
@ -92,8 +101,10 @@ class pandocSettings(markdownSettings):
|
||||||
"TOC-depth": pandocSetting("--toc-depth=", "number", "",
|
"TOC-depth": pandocSetting("--toc-depth=", "number", "",
|
||||||
qApp.translate("Export", "Number of sections level to include in TOC: "),
|
qApp.translate("Export", "Number of sections level to include in TOC: "),
|
||||||
default=3, min=1, max=6),
|
default=3, min=1, max=6),
|
||||||
|
# pandoc v1 only
|
||||||
"smart": pandocSetting("--smart", "checkbox", "",
|
"smart": pandocSetting("--smart", "checkbox", "",
|
||||||
qApp.translate("Export", "Typographically correct output")),
|
qApp.translate("Export", "Typographically correct output")),
|
||||||
|
# pandoc v1 only
|
||||||
"normalize": pandocSetting("--normalize", "checkbox", "",
|
"normalize": pandocSetting("--normalize", "checkbox", "",
|
||||||
qApp.translate("Export", "Normalize the document (cleaner)")),
|
qApp.translate("Export", "Normalize the document (cleaner)")),
|
||||||
"base-header": pandocSetting("--base-header-level=", "number", "",
|
"base-header": pandocSetting("--base-header-level=", "number", "",
|
||||||
|
@ -111,9 +122,14 @@ class pandocSettings(markdownSettings):
|
||||||
qApp.translate("Export", "Self-contained HTML files, with no dependencies")),
|
qApp.translate("Export", "Self-contained HTML files, with no dependencies")),
|
||||||
"q-tags": pandocSetting("--html-q-tags", "checkbox", "html",
|
"q-tags": pandocSetting("--html-q-tags", "checkbox", "html",
|
||||||
qApp.translate("Export", "Use <q> tags for quotes in HTML")),
|
qApp.translate("Export", "Use <q> tags for quotes in HTML")),
|
||||||
|
# pandoc v1 only
|
||||||
"latex-engine": pandocSetting("--latex-engine=", "combo", "pdf",
|
"latex-engine": pandocSetting("--latex-engine=", "combo", "pdf",
|
||||||
qApp.translate("Export", "LaTeX engine used to produce the PDF."),
|
qApp.translate("Export", "LaTeX engine used to produce the PDF."),
|
||||||
vals="pdflatex|lualatex|xelatex"),
|
vals="pdflatex|lualatex|xelatex"),
|
||||||
|
# pandoc v2
|
||||||
|
"pdf-engine": pandocSetting("--pdf-engine=", "combo", "pdf",
|
||||||
|
qApp.translate("Export", "LaTeX engine used to produce the PDF."),
|
||||||
|
vals="pdflatex|lualatex|xelatex"),
|
||||||
"epub3": pandocSetting("EXTepub3", "checkbox", "epub",
|
"epub3": pandocSetting("EXTepub3", "checkbox", "epub",
|
||||||
qApp.translate("Export", "Convert to ePUB3")),
|
qApp.translate("Export", "Convert to ePUB3")),
|
||||||
}
|
}
|
||||||
|
@ -138,17 +154,24 @@ class pandocSettings(markdownSettings):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, _format, toFormat=None, parent=None):
|
def __init__(self, _format, majorVersion="", toFormat=None, parent=None):
|
||||||
markdownSettings.__init__(self, _format, parent)
|
markdownSettings.__init__(self, _format, parent)
|
||||||
|
|
||||||
self.format = toFormat
|
self.format = toFormat
|
||||||
|
self.majorVersion = majorVersion
|
||||||
|
|
||||||
w = QWidget(self)
|
w = QWidget(self)
|
||||||
w.setLayout(QVBoxLayout())
|
w.setLayout(QVBoxLayout())
|
||||||
self.grpPandocGeneral = self.collapsibleGroupBox(self.tr("General"), w)
|
self.grpPandocGeneral = self.collapsibleGroupBox(self.tr("General"), w)
|
||||||
|
|
||||||
self.addSettingsWidget("smart", self.grpPandocGeneral)
|
if majorVersion == "1":
|
||||||
self.addSettingsWidget("normalize", self.grpPandocGeneral)
|
# pandoc v1 only
|
||||||
|
self.addSettingsWidget("smart", self.grpPandocGeneral)
|
||||||
|
self.addSettingsWidget("normalize", self.grpPandocGeneral)
|
||||||
|
else:
|
||||||
|
# pandoc v2
|
||||||
|
self.settingsList.pop("smart", None)
|
||||||
|
self.settingsList.pop("normalize", None)
|
||||||
self.addSettingsWidget("base-header", self.grpPandocGeneral)
|
self.addSettingsWidget("base-header", self.grpPandocGeneral)
|
||||||
self.addSettingsWidget("standalone", self.grpPandocGeneral)
|
self.addSettingsWidget("standalone", self.grpPandocGeneral)
|
||||||
self.addSettingsWidget("disable-YAML", self.grpPandocGeneral)
|
self.addSettingsWidget("disable-YAML", self.grpPandocGeneral)
|
||||||
|
@ -164,7 +187,14 @@ class pandocSettings(markdownSettings):
|
||||||
self.addSettingsWidget("atx", self.grpPandocSpecific)
|
self.addSettingsWidget("atx", self.grpPandocSpecific)
|
||||||
self.addSettingsWidget("self-contained", self.grpPandocSpecific)
|
self.addSettingsWidget("self-contained", self.grpPandocSpecific)
|
||||||
self.addSettingsWidget("q-tags", self.grpPandocSpecific)
|
self.addSettingsWidget("q-tags", self.grpPandocSpecific)
|
||||||
self.addSettingsWidget("latex-engine", self.grpPandocSpecific)
|
if majorVersion == "1":
|
||||||
|
# pandoc v1 only
|
||||||
|
self.addSettingsWidget("latex-engine", self.grpPandocSpecific)
|
||||||
|
self.settingsList.pop("pdf-engine", None)
|
||||||
|
else:
|
||||||
|
# pandoc v2
|
||||||
|
self.settingsList.pop("latex-engine", None)
|
||||||
|
self.addSettingsWidget("pdf-engine", self.grpPandocSpecific)
|
||||||
self.addSettingsWidget("epub3", self.grpPandocSpecific)
|
self.addSettingsWidget("epub3", self.grpPandocSpecific)
|
||||||
|
|
||||||
# PDF settings
|
# PDF settings
|
||||||
|
|
Loading…
Reference in a new issue