Git Product home page Git Product logo

mkdocs-pandoc's People

Contributors

jgrassler avatar mkoertgen avatar vi4m avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mkdocs-pandoc's Issues

Getting error when mkdocs2pandoc > mydocs.pd

Hi there,

I just tried to convert my mydocs docu but I am getting these errors:

Traceback (most recent call last):
File "/usr/local/bin/mkdocs2pandoc", line 11, in
sys.exit(main())
File "/usr/local/lib/python2.7/site-packages/mkdocs_pandoc/cli/mkdocs2pandoc.py", line 80, in main
for line in pconv.convert():
File "/usr/local/lib/python2.7/site-packages/mkdocs_pandoc/pandoc_converter.py", line 103, in convert
pages = self.flatten_pages(self.config['pages'])
KeyError: 'pages'

Appreciate any help!

thanks

pages -> nav

In mkdocs.yml, the pages: directive is being deprecated in favor of the nav: directive. This means that eventually mkdocs-pandoc will not work with functional mkdocs.yml files.

Here's the error you will see if you use nav: (as per mkdocs spec) instead of pages::

$ mkdocs2pandoc > mydocs.pd
Traceback (most recent call last):
  File "/Users/charles/davis/dahak/dahak-comparison/vp/bin/mkdocs2pandoc", line 11, in <module>
    sys.exit(main())
  File "/Users/charles/davis/dahak/dahak-comparison/vp/lib/python3.6/site-packages/mkdocs_pandoc/cli/mkdocs2pandoc.py", line 80, in main
    for line in pconv.convert():
  File "/Users/charles/davis/dahak/dahak-comparison/vp/lib/python3.6/site-packages/mkdocs_pandoc/pandoc_converter.py", line 103, in convert
    pages = self.flatten_pages(self.config['pages'])
KeyError: 'pages'

AttributeError: 'list' object has no attribute 'values'

Hi, i got an error when start to using mkdocs2pandoc:

➤ git remote -v
origin  https://github.com/hugoruscitti/pilas-manual (fetch)
origin  https://github.com/hugoruscitti/pilas-manual (push)
~/p/pilas-manual (master=)
➤ mkdocs2pandoc > example.pd
Traceback (most recent call last):
  File "/usr/local/bin/mkdocs2pandoc", line 9, in <module>
    load_entry_point('mkdocs-pandoc==0.2.5', 'console_scripts', 'mkdocs2pandoc')()
  File "/usr/local/lib/python2.7/site-packages/mkdocs_pandoc/cli/mkdocs2pandoc.py", line 80, in main
    for line in pconv.convert():
  File "/usr/local/lib/python2.7/site-packages/mkdocs_pandoc/pandoc_converter.py", line 95, in convert
    pages = self.flatten_pages(self.config['pages'])
  File "/usr/local/lib/python2.7/site-packages/mkdocs_pandoc/pandoc_converter.py", line 73, in flatten_pages
    if type(list(page.values())[0]) is str:
AttributeError: 'list' object has no attribute 'values'

and an empty output file:

➤ du -s example.pd
0   example.pd

IndexError: list index out of range

When trying to convert the documentation of mkdocs .-) (https://github.com/mkdocs/mkdocs.git),
I get the following exception:

» mkdocs2pandoc >! mkdocs.pd

Traceback (most recent call last):
  File "/home/ag/.local/bin/mkdocs2pandoc", line 9, in <module>
    load_entry_point('mkdocs-pandoc==0.2.5', 'console_scripts', 'mkdocs2pandoc')()
  File "/home/ag/.local/venvs/mkdocs-pandoc/lib/python2.7/site-packages/mkdocs_pandoc/cli/mkdocs2pandoc.py", line 80, in main
    for line in pconv.convert():
  File "/home/ag/.local/venvs/mkdocs-pandoc/lib/python2.7/site-packages/mkdocs_pandoc/pandoc_converter.py", line 157, in convert
    lines = mkdocs_pandoc.filters.tables.TableFilter().run(lines)
  File "/home/ag/.local/venvs/mkdocs-pandoc/lib/python2.7/site-packages/mkdocs_pandoc/filters/tables.py", line 172, in run
    ret.extend(self.convert_table(block))
  File "/home/ag/.local/venvs/mkdocs-pandoc/lib/python2.7/site-packages/mkdocs_pandoc/filters/tables.py", line 102, in convert_table
    if len(row[i]) > widest_cell[i]:
IndexError: list index out of range

I'm using the devel version @ 671174f

Good idea to add a page break between each page?

In pandoc_converter.py, change this

        # Add an empty line between pages to prevent text from a previous
        # file from butting up against headers in a subsequent file.
        lines.append('')

to this

        # Add an empty line between pages to prevent text from a previous
        # file from butting up against headers in a subsequent file.
        lines.append('')
        lines.append('\\newpage')
        lines.append('')

Can this be an option for the cli?

KeyError: 'markdown_extensions'

Followed usage to install the stable version of mkdocs-pandocs. When calling mkdocs2pandoc i get an error relating to markdown-extensions

Traceback (most recent call last):
  File "C:\python\Scripts\mkdocs2pandoc-script.py", line 9, in <module>
    load_entry_point('mkdocs-pandoc==0.2.3', 'console_scripts', 'mkdocs2pandoc')
()
  File "C:\python\lib\site-packages\mkdocs_pandoc\cli\mkdocs2pandoc.py", line 69
, in main
    encoding=args.encoding,
  File "C:\python\lib\site-packages\mkdocs_pandoc\pandoc_converter.py", line 52,
 in __init__
    for ext in self.config['markdown_extensions']:
KeyError: 'markdown_extensions'

I am not quite sure what this means. Did i do something stupid which can be fixed easily?

Failed to create process

Hi:

Thanks for your interesting tool.

However I get all the time the same error: "failed to create process". Just writing the command mkdocs2pandoc .

Any clues on what could be happening?

TIA!

TypeError: _split_row() takes exactly 2 arguments (3 given)

When I try to generate a .pd with mkdocs2pandoc -f mkdocs.yml -o output.pd in my docker image (schizopriest/mkdocs) on gitlab-ci, I get the following error:

Traceback (most recent call last):
  File "/usr/bin/mkdocs2pandoc", line 11, in <module>
    load_entry_point('mkdocs-pandoc==0.2.6', 'console_scripts', 'mkdocs2pandoc')()
  File "/usr/lib/python2.7/site-packages/mkdocs_pandoc/cli/mkdocs2pandoc.py", line 80, in main
    for line in pconv.convert():
  File "/usr/lib/python2.7/site-packages/mkdocs_pandoc/pandoc_converter.py", line 165, in convert
    lines = mkdocs_pandoc.filters.tables.TableFilter().run(lines)
  File "/usr/lib/python2.7/site-packages/mkdocs_pandoc/filters/tables.py", line 177, in run
    ret.extend(self.convert_table(block))
  File "/usr/lib/python2.7/site-packages/mkdocs_pandoc/filters/tables.py", line 91, in convert_table
    for i in range(0, len(self._split_row(lines_orig[0], has_border))):
TypeError: _split_row() takes exactly 2 arguments (3 given)

Error on build in filters/tables.py

Windows 10
Python 2.7.13
mkdocs 0.16.3
mkdocs-material 1.5.4
pandoc installed from chocolatey 0.10.5

Site being created: https://github.com/adrianhall/develop-mobile-apps-with-csharp-and-azure

D:\GitHub\develop-mobile-apps-with-csharp-and-azure [master +1 ~0 -0 !]> mkdocs2pandoc > editions/editions1.pd
Traceback (most recent call last):
  File "C:\Python27\Scripts\mkdocs2pandoc-script.py", line 11, in <module>
    load_entry_point('mkdocs-pandoc==0.2.6', 'console_scripts', 'mkdocs2pandoc')()
  File "c:\python27\lib\site-packages\mkdocs_pandoc\cli\mkdocs2pandoc.py", line 80, in main
    for line in pconv.convert():
  File "c:\python27\lib\site-packages\mkdocs_pandoc\pandoc_converter.py", line 165, in convert
    lines = mkdocs_pandoc.filters.tables.TableFilter().run(lines)
  File "c:\python27\lib\site-packages\mkdocs_pandoc\filters\tables.py", line 177, in run
    ret.extend(self.convert_table(block))
  File "c:\python27\lib\site-packages\mkdocs_pandoc\filters\tables.py", line 91, in convert_table
    for i in range(0, len(self._split_row(lines_orig[0], has_border))):
TypeError: _split_row() takes exactly 2 arguments (3 given)

Python 3.6 problems?

Hey there, just tried your tool and got the following error:

mkdocs2pandoc > mydocs.pd
Traceback (most recent call last):
  File "/home/markus/anaconda3/bin/mkdocs2pandoc", line 11, in <module>
    sys.exit(main())
  File "/home/markus/anaconda3/lib/python3.6/site-packages/mkdocs_pandoc/cli/mkdocs2pandoc.py", line 80, in main
    for line in pconv.convert():
  File "/home/markus/anaconda3/lib/python3.6/site-packages/mkdocs_pandoc/pandoc_converter.py", line 165, in convert
    lines = mkdocs_pandoc.filters.tables.TableFilter().run(lines)
  File "/home/markus/anaconda3/lib/python3.6/site-packages/mkdocs_pandoc/filters/tables.py", line 177, in run
    ret.extend(self.convert_table(block))
  File "/home/markus/anaconda3/lib/python3.6/site-packages/mkdocs_pandoc/filters/tables.py", line 91, in convert_table
    for i in range(0, len(self._split_row(lines_orig[0], has_border))):
TypeError: _split_row() takes 2 positional arguments but 3 were given

```

anyone else had this error before? 

Best - Markus

Metric (TFM) file not found

Hi,
I get this error when trying to generate the PDF:

pandoc: Error producing PDF from TeX source.
! Font T1/cmr/m/n/10=ecrm1000 at 10.0pt not loadable: Metric (TFM) file not found.
<to be read again> 
                   relax 
l.100 \fontencoding\encodingdefault\selectfont

any suggestions?

Additional html <img> tags filter for pandoc(1) flavoured markdown conversion

Problem:
MkDocs only shows resized pictures if they are written in html tags. The pandoc conversion from markdown to pdf will simply cut out all html inliners since the extension raw_html would be ignored. The conversion from markdown to html and finally to pdf will drop any alignment information in tables which would be available in conversion from markdown to pdf.

Idea:
The conversion triggered by mkdocs2pandoc > docs.pd could already check for html tags and change them to markdown inliners. /mkdocs_pandoc/filters/ contains filters like the images.py. A suggestion for a new filter would be html_images.py.

Suggested solution:
In /mkdocs_pandoc/pandoc_converter.py add

import mkdocs_pandoc.filters.html_images

and below def init(self, **kwargs):

        self.filter_html_img = True

Above lines_tmp = f_headlevel.run(lines_tmp) add

            if self.filter_html_img:
                lines_tmp = f_html_image.run(lines_tmp)

html_images.py:

import re

class ImageFilter(object):
    def run(self, lines):
        ret = []
        for line in lines:
            done = {}
            while True:
                src = ''
                alt = ''
                title = ''
                width_height = ''
                matchImg = re.search(r'<img ([^>]*)>([^<]*</img>)?', line)

                # image in html style?
                if matchImg:
                    if matchImg.group(0) in done:
                        break
                    allInfoElems = matchImg.group(1)
                    srcMatch = re.search(r'src=\"([^>\"]*)\"', allInfoElems)
                    src=srcMatch.group(1)
                    altMatch = re.search(r'alt=\"([^>\"]*)\"', allInfoElems)
                    if altMatch:
                        alt=altMatch.group(1)
                    titleMatch = re.search(r'title=\"([^>\"]*)\"', allInfoElems)
                    if titleMatch:
                        title=" \""+titleMatch.group(1)+"\""
                    widthMatch = re.search(r'width=\"([^>\"]*)\"', allInfoElems)
                    if widthMatch:
                        width="width="+widthMatch.group(1)+"px "
                    heightMatch = re.search(r'height=\"([^>\"]*)\"', allInfoElems)
                    if heightMatch:
                        height="height="+heightMatch.group(1)+"px "
                    if width != "" or height != "":
                        width_height="{ "+width+height+"}"
                else:
                    break
                line = re.sub(r'<img [^>]*>([^<]*</img>)?',
                    '![%s](%s%s)%s' % (alt, src, title, width_height), line)
                done[matchImg.group(0)] = True
            ret.append(line)
        return ret

mkdocs2pandoc gives no output

mkdocs2pandoc gives no output an no error message.

  • Ran it without options in the directory where the mkdocs.yml is located
  • Still no output, if I use the -f switch
  • OS: Ubuntu 14.04
  • Python 2.7, mkdocs setup and working

Would be great, if you could add some logging, possibly a '-v' switch

sudo aptitude install fonts-lmodern lmodern pandoc texlive-base texlive-latex-extra texlive-fonts-recommended texlive-latex-recommended texlive-xetex

cd /home/xxxx/temp
virtualenv .
pip install mkdocs-pandoc
cd <dir-containing-mkdocs.yml>
/home/xxxx/temp/py/bin/mkdocs2pandoc
/home/xxxx/temp/py/bin/mkdocs2pandoc -f mkdocs.yml > file

No output...

pandocpdf no longer available on Chocolatey

The windows instructions suggest running choco install pandocpdf:

Chocolatey v0.10.5
Installing the following packages:
pandocpdf
By installing you accept licenses for the packages.
pandocpdf not installed. The package was not found with the source(s) listed.
 If you specified a particular version and are receiving this message, it is possible that the package name exists but t
he version does not.
 Version: ""
 Source(s): "https://chocolatey.org/api/v2/"

Chocolatey installed 0/1 packages. 1 packages failed.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Failures
 - pandocpdf - pandocpdf not installed. The package was not found with the source(s) listed.
 If you specified a particular version and are receiving this message, it is possible that the package name exists but t
he version does not.
 Version: ""
 Source(s): "https://chocolatey.org/api/v2/"

Community maintainers required

From #30 (comment):

I'm not using it anymore, so I no longer have much of an inclination to maintain it.
Any of you folks want to take over maintaining it?

I've mentioned I can help out over in #30 (comment).

Anyone else motivated to help this thing keep up with the mkdocs ecosystem?

Support for Multilevel documentation

Hello,
Your tool is great help and almost perfect. My only issue is with mkdocs option when yaml file is written following way

pages:
- Home: 'index.md'
- User Guide:
    - 'Writing your docs': 'user-guide/writing-your-docs.md'
    - 'Styling your docs': 'user-guide/styling-your-docs.md'
- About:
    - 'License': 'about/license.md'
    - 'Release Notes': 'about/release-notes.md'

in such case generated pd file is without header level 1 for User Guide and About causing result PDF to not be structured as I want.

Home is correct as there is index.md file but if there is not mardown file it will not be placed to generated file.

failed: choco install pandocpdf

I got an install error on my windows 10 machine - can someone please help me ?

C:\Windows\system32>choco install pandocpdf
Chocolatey v0.10.5
Installing the following packages:
pandocpdf
By installing you accept licenses for the packages.
pandocpdf not installed. The package was not found with the source(s) listed.
If you specified a particular version and are receiving this message, it is possible that the package name exists but the version does not.
Version: ""
Source(s): "https://chocolatey.org/api/v2/"

generated headings might need extra line breaks or indenting fixed?

As mentioned in #5 (comment) the generated output might need unexpected extra line breaks.

To reproduce this have a look at mkoertgen/mkdocs-pandoc-samples. The ./headings directory contains a sample project that reproduces this issue - at least on Windows.

I used

mkdocs2pandoc -o mydocs.pd
pandoc --toc -f markdown+grid_tables+table_captions -o mydocs.pdf mydocs.pd

Here is the relevant section in the generated .pd

#### Another Heading 2

Lorem ipsum...
## Say B

### Say B (Heading 1) 

For me the generated mydocs.pd looks ok but maybe the pd-syntax requires empty lines between headings. So maybe it's pandoc that requires an extra line here.

Finally, the generated mydocs.pdf includes some lines ending with the extra headings generated by mkdocs2pandoc (cf. attachments)

As a workaround i started adding html page breaks (at the end of overview/a.md)

<div style="page-break-after: always;"></div>

After that i realized that adding an extra line break at the end of the files also works around this issue.

images get broken when converting

hi there!

I'm having a very annoying issue, images seem to brake when I convert my mkdocs 2 pandoc...

some links are relative, others are absolute even though they are all defined in the same way on the individual markdowns...

mkdocs2pandoc exits with error "ValueError: invalid width 0 (must be > 0)"

I'm on Ubuntu 15.04 with Python 2.7.10, mkdocs 0.15.3 and using a slightly modified mkdocs-material theme.

When I run the tool, it exits with this error:

Traceback (most recent call last):
  File "/usr/local/bin/mkdocs2pandoc", line 9, in <module>
    load_entry_point('mkdocs-pandoc==0.2.6', 'console_scripts', 'mkdocs2pandoc')()
  File "/home/maggus/.local/lib/python2.7/site-packages/mkdocs_pandoc/cli/mkdocs2pandoc.py", line 80, in main
    for line in pconv.convert():
  File "/home/maggus/.local/lib/python2.7/site-packages/mkdocs_pandoc/pandoc_converter.py", line 165, in convert
    lines = mkdocs_pandoc.filters.tables.TableFilter().run(lines)
  File "/home/maggus/.local/lib/python2.7/site-packages/mkdocs_pandoc/filters/tables.py", line 177, in run
    ret.extend(self.convert_table(block))
  File "/home/maggus/.local/lib/python2.7/site-packages/mkdocs_pandoc/filters/tables.py", line 163, in convert_table
    lines.extend(self.wrap_row(widths, row))
  File "/home/maggus/.local/lib/python2.7/site-packages/mkdocs_pandoc/filters/tables.py", line 208, in wrap_row
    row[i] = tw.wrap(textwrap.dedent(row[i]))
  File "/usr/lib/python2.7/textwrap.py", line 329, in wrap
    return self._wrap_chunks(chunks)
  File "/usr/lib/python2.7/textwrap.py", line 258, in _wrap_chunks
    raise ValueError("invalid width %r (must be > 0)" % self.width)
ValueError: invalid width 0 (must be > 0)

Any ideas?

regex errors when parsing image targets

Running the current mkdocs2pandoc 0.2.4 gives me this error:

Traceback (most recent call last):
  File "C:\python\Scripts\mkdocs2pandoc-script.py", line 9, in <module>
    load_entry_point('mkdocs-pandoc==0.2.4', 'console_scripts', 'mkdocs2pandoc')
()
  File "C:\python\lib\site-packages\mkdocs_pandoc\cli\mkdocs2pandoc.py", line 80
, in main
    for line in pconv.convert():
  File "C:\python\lib\site-packages\mkdocs_pandoc\pandoc_converter.py", line 139
, in convert
    lines_tmp = f_image.run(lines_tmp)
  File "C:\python\lib\site-packages\mkdocs_pandoc\filters\images.py", line 75, i
n run
    '![%s](%s)' % (alt, img_name), line)
  File "C:\python\lib\re.py", line 179, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "C:\python\lib\re.py", line 326, in _subx
    template = _compile_repl(template, pattern)
  File "C:\python\lib\re.py", line 313, in _compile_repl
    p = sre_parse.parse_template(repl, pattern)
  File "C:\python\lib\sre_parse.py", line 812, in parse_template
    raise error("missing group name")
sre_constants.error: missing group name

which refers to images.py#L75.

According to this SO answer the problem might be related with either the image name or the alternative caption containing special characters that might need escaping before feeding into regex.

I am not so much into python but would be willing to work on this issue. Please let me know.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.