diff --git a/IPython/nbconvert/filters/strings.py b/IPython/nbconvert/filters/strings.py index 5464e7d..aa51fcc 100755 --- a/IPython/nbconvert/filters/strings.py +++ b/IPython/nbconvert/filters/strings.py @@ -49,6 +49,13 @@ def wrap(text, width=100): wrpd = map('\n'.join, wrp) return '\n'.join(wrpd) +def single_line(text): + """Wrap multi-line text into a single line + + Used in markdown heading cells, which are not allowed to be multiline. + """ + return ''.join(text.splitlines()) + def strip_dollars(text): """ diff --git a/IPython/nbconvert/utils/pandoc.py b/IPython/nbconvert/utils/pandoc.py index c914cee..8612970 100644 --- a/IPython/nbconvert/utils/pandoc.py +++ b/IPython/nbconvert/utils/pandoc.py @@ -24,7 +24,7 @@ from IPython.utils.py3compat import cast_bytes # Classes and functions #----------------------------------------------------------------------------- -def pandoc(source, fmt, to, encoding='utf-8'): +def pandoc(source, fmt, to, extra_args=None, encoding='utf-8'): """Convert an input string in format `from` to format `to` via pandoc. This function will raise an error if pandoc is not installed. @@ -44,7 +44,10 @@ def pandoc(source, fmt, to, encoding='utf-8'): out : unicode Output as returned by pandoc. """ - p = subprocess.Popen(['pandoc', '-f', fmt, '-t', to], + command = ['pandoc', '-f', fmt, '-t', to] + if extra_args: + command = command + extra_args + p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE ) out, _ = p.communicate(cast_bytes(source, encoding))