oss-gate / workshop

OSSの開発に未参加または参加したことはあるけどまだ自信がない人を後押しするワークショップ用のリポジトリー
124 stars 547 forks source link

OSS Gate Workshop: online: 2023-07-29: Alt: pandoc: Work log #1631

Closed Alt-NoRock closed 1 year ago

Alt-NoRock commented 1 year ago

This is a work log of a "OSS Gate workshop". "OSS Gate workshop" is an activity to increase OSS developers. Here's been discussed in Japanese. Thanks.

作業ログ作成時の説明

以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。

OSS Gate Workshop: ${LOCATION}: ${YEAR}-${MONTH}-${DAY}: ${ACCOUNT_NAME}: ${OSS_NAME}: Work log

タイトル例↓:

OSS Gate Workshop: Tokyo: 2017-01-16: kou: Rabbit: Work log

OSS Gateワークショップ関連情報

Alt-NoRock commented 1 year ago

候補を考える(やりたいこと/困っていること)

候補を考える(やれること)

いったん、pandoc の バグ報告をやってみることにする

Alt-NoRock commented 1 year ago

pandoc URLは下記にありそう https://github.com/jgm/pandoc

Alt-NoRock commented 1 year ago

ライセンスは下記. GPLv2 (or later / or greater) のライセンスみたい

© 2006-2023 John MacFarlane ([jgm@berkeley.edu](mailto:jgm@berkeley.edu)). Released under the [GPL](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html), version 2 or greater. This software carries no warranty of any kind. (See COPYRIGHT for full copyright and warranty notices.)

https://github.com/jgm/pandoc/blob/main/COPYRIGHT にも関連ソフトウェアの記載がある。 こちらもGPLv2が多そうでした。

Alt-NoRock commented 1 year ago

https://github.com/jgm/pandoc/blob/main/CONTRIBUTING.md ガイドラインでコントリビューター向けの作法がありました。

Alt-NoRock commented 1 year ago

pandocについて、バグ報告についてのお作法の要諦です。

the pandoc version (check using pandoc -v)
the exact command line used
the exact input used
the output received
the output you expected instead
A small test case (just a few lines) is ideal. If your input is large, try to whittle it down to a minimum working example.
Alt-NoRock commented 1 year ago

インストール方法 (pandoc)

https://github.com/jgm/pandoc/blob/main/INSTALL.md 参照 debファイルなどは、https://github.com/jgm/pandoc/releases/tag/3.1.6 参照

私の場合、Ubuntu22.04 のため、debファイルをダウンロード後は、下記のようなインストール方法と確認でした。

$ sudo dpkg -i pandoc-3.1.6-1-amd64.deb 
$ pandoc -v

pandoc 3.1.6
Features: +server +lua
Scripting engine: Lua 5.4
User data directory: /home/toru/.local/share/pandoc
Copyright (C) 2006-2023 John MacFarlane. Web: https://pandoc.org
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.

また、texlive もインストール必要とのことでした(こちらはインストール済みでした)

$ sudo apt-get install texlive
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
texlive はすでに最新バージョン (2021.20220204-1) です。

(reviewdog) toru@deskmini:~/develop/OSSGate/pandoc/installation$ tex
This is TeX, Version 3.141592653 (TeX Live 2022/dev/Debian) (preloaded format=tex)
Alt-NoRock commented 1 year ago

バグ再現(失敗)

---
header-right: '\confi'
header-includes:
  - '`\newcommand{\confi}{\raisebox{0pt}[0pt]{\includegraphics[width=1.5cm]{/template/ng.png}}}`{=latex}'
---

## bug-report

ok

入力ファイルが上記に対して、 pandoc -i test.md -o test.pdf で出力できるが、ヘッダーはなし 一部オレオレの手順が混ざっているので、公式ドキュメントを参照しながらそもそも手順が合っているかを確認します。

blacktoad30 commented 1 year ago

構文のエラー等は既に確認済みですか?

以下が参考になりそうでした。 https://gist.github.com/lisaross/4b5ac90f3ebc9815f444833e4df816de

Alt-NoRock commented 1 year ago

確認していたバグは厳密に言えば、 pandoc を直接使っていたわけではなく、pandocを使いやすくした dockerfile を利用したので、そちらにバグ報告すべき? https://github.com/frozenbonito/docker-pandoc-eisvogel-ja/tree/master

Alt-NoRock commented 1 year ago

午後の方針

https://github.com/frozenbonito/docker-pandoc-eisvogel-ja に対して Issue や PR を出すことを目指す

  1. バグ報告 (ヘッダーファイルに「のみ」画像添付している場合、PDF生成がエラーになる)
  2. VerUpのPR作成(DockerfileにVersionが固定で入っているが、メンテが遅れている)

1はVersion上げたら治るかもしれないので、2→1の順番で実施 (15:30更新) version上げるのが思っているより大変そうなので、 1を優先にします。

Alt-NoRock commented 1 year ago

バグの再現手順

環境整理

$ ls
ng.md  ng.png  ok-icon.png  ok.md

OKの場合

$ docker run --rm -v $(pwd):/data frozenbonito/pandoc-eisvogel-ja -o ok.pdf ok.md

NGの場合

$ docker run --rm -v $(pwd):/data frozenbonito/pandoc-eisvogel-ja -o ng.pdf ng.md
Error producing PDF.
! Undefined control sequence.
<argument> \includegraphics 
                 [width=1.5cm]{./ng.png}
l.279 \end{document}

おそらくですが、画像ファイルが本文で添付されていない状態で、ヘッダーに画像ファイルを付けると失敗するのではないかと思っています

(バグの中身の切り分けが未完了なのが悩みどころ)

file:///home/toru/develop/OSSGate/pandoc_docker_example/ok.md

Alt-NoRock commented 1 year ago

VerUpのPR作成

2つのDockerfile ファイル/ 3箇所にバージョンに関する記載がありました。

Pandoc

ARG pandoc_version="2.10"
FROM pandoc/latex:${pandoc_version}

バイナリ配布している最新Ver: 3.1.6 Dockerhubの最新Ver: 3.1.1

eisvogel (latex のテンプレート)

ARG pandoc_version
(中略)
ARG eisvogel_version="1.5.0"
RUN mkdir -p /root/.pandoc/templates \
    && wget https://raw.githubusercontent.com/Wandmalfarbe/pandoc-latex-template/v${eisvogel_version}/eisvogel.tex \
    -O /root/.pandoc/templates/eisvogel.latex

公式の最新Ver: 2.4.0

plantuml

ARG plantuml_version="1.2020.16"
RUN wget https://sourceforge.net/projects/plantuml/files/plantuml.${plantuml_version}.jar/download -O /root/plantuml.jar

公式の最新Ver: 1.2023.7

すべて古いため、Versionの情報を変更したDockerfile で動作確認してVersion更新版のPRを送ってみる
もしかしたら、Version更新でバグの件も治るかもしれないので、こちらを先にやってみる。

Alt-NoRock commented 1 year ago

Docker build の結果

Versionの修正に関係なく、ビルドに失敗する。。。? texlive が古いことが原因に読めるが、おそらくtexlive をインストールしているのは pandoc/latex のDocker
--> やっぱり pandoc公式直さないとだめ?

$ docker build .
docker-pandoc-eisvogel-ja/docker-pandoc-eisvogel-ja$ docker build .
[+] Building 7.8s (6/9)                                                                                                                                              
 => [internal] load build definition from Dockerfile                                                                                                            0.0s
 => => transferring dockerfile: 910B                                                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                               0.0s
 => => transferring context: 62B                                                                                                                                0.0s
 => [internal] load metadata for docker.io/pandoc/latex:2.10                                                                                                    3.2s
 => [1/5] FROM docker.io/pandoc/latex:2.10@sha256:b2488dcfd075b63d0c5d6b7f08eed6b00b32d14baff6ad89b3a3298ad8b3bd8e                                              0.1s
 => => resolve docker.io/pandoc/latex:2.10@sha256:b2488dcfd075b63d0c5d6b7f08eed6b00b32d14baff6ad89b3a3298ad8b3bd8e                                              0.0s
 => => sha256:ad40aac39c2f9b9b20455fc02520e077ca7c819f128ec0740e4f88af88fa9256 6.11kB / 6.11kB                                                                  0.0s
 => => sha256:b2488dcfd075b63d0c5d6b7f08eed6b00b32d14baff6ad89b3a3298ad8b3bd8e 3.04kB / 3.04kB                                                                  0.0s
 => [internal] load build context                                                                                                                               0.0s
 => => transferring context: 33B                                                                                                                                0.0s
 => ERROR [2/5] RUN tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet     && tlmgr install adjustbox     babel-japanese     background       4.5s
------                                                                                                                                                               
 > [2/5] RUN tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet     && tlmgr install adjustbox     babel-japanese     background     collectbox     everypage     footmisc     footnotebackref     fvextra     luatexja     ly1     mdframed     mweights     needspace     pagecolor     sourcecodepro     sourcesanspro     titling     zref     haranoaji     ipaex:
#0 0.382 tlmgr: setting default package repository to http://mirror.ctan.org/systems/texlive/tlnet
#0 0.382 tlmgr: updating /opt/texlive/texdir/tlpkg/texlive.tlpdb
#0 4.506 
#0 4.506 tlmgr: Local TeX Live (2020) is older than remote repository (2023).
#0 4.506 Cross release updates are only supported with
#0 4.506   update-tlmgr-latest(.sh/.exe) --update
#0 4.506 See https://tug.org/texlive/upgrade.html for details.
------
Dockerfile:6
--------------------
   5 |     
   6 | >>> RUN tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet \
   7 | >>>     && tlmgr install adjustbox \
   8 | >>>     babel-japanese \
   9 | >>>     background \
  10 | >>>     collectbox \
  11 | >>>     everypage \
  12 | >>>     footmisc \
  13 | >>>     footnotebackref \
  14 | >>>     fvextra \
  15 | >>>     luatexja \
  16 | >>>     ly1 \
  17 | >>>     mdframed \
  18 | >>>     mweights \
  19 | >>>     needspace \
  20 | >>>     pagecolor \
  21 | >>>     sourcecodepro \
  22 | >>>     sourcesanspro \
  23 | >>>     titling \
  24 | >>>     zref \
  25 | >>>     haranoaji \
  26 | >>>     ipaex
  27 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet     && tlmgr install adjustbox     babel-japanese     background     collectbox     everypage     footmisc     footnotebackref     fvextra     luatexja     ly1     mdframed     mweights     needspace     pagecolor     sourcecodepro     sourcesanspro     titling     zref     haranoaji     ipaex" did not complete successfully: exit code: 1
daipom commented 1 year ago

Screenshot from 2023-07-24 16-34-34

Alt-NoRock commented 1 year ago

file:///home/toru/develop/OSSGate/pandoc_docker_example/ng.png

Alt-NoRock commented 1 year ago

file:///home/toru/develop/OSSGate/pandoc/ok-icon.png ng

daipom commented 1 year ago

https://hub.docker.com/r/pandoc/latex

FROMで指定しているイメージはここですかね?

daipom commented 1 year ago

https://hub.docker.com/r/pandoc/latex

FROMで指定しているイメージはここですかね?

3.1.1ならTexLiveは2022が入っていそう

Alt-NoRock commented 1 year ago

3.1.1ならTexLiveは2022が入っていそう 先程のログは移行元(pandoc/latex:2.10) に対してでしたが、 pandoc/latex:3.1.1 も同様に2023が入っていないと怒られますね。。。

------                                                                                                                                                  
 > [2/5] RUN tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet     && tlmgr install adjustbox     babel-japanese     background     collectbox     everypage     footmisc     footnotebackref     fvextra     luatexja     ly1     mdframed     mweights     needspace     pagecolor     sourcecodepro     sourcesanspro     titling     zref     haranoaji     ipaex:                                                                               
#0 0.388 tlmgr: setting default package repository to http://mirror.ctan.org/systems/texlive/tlnet                                                      
#0 0.388 tlmgr: updating /opt/texlive/texdir/tlpkg/texlive.tlpdb
#0 3.302 
#0 3.302 tlmgr: Local TeX Live (2022) is older than remote repository (2023).
#0 3.302 Cross release updates are only supported with
#0 3.302   update-tlmgr-latest(.sh/.exe) --update
#0 3.302 See https://tug.org/texlive/upgrade.html for details.
------
Alt-NoRock commented 1 year ago

英語版のIssue案

Title: Can't convert markdown file that contains an image file only in the header

A sentence description of the problem

Short DESCRIPTION: I can't conver markdown file to PDF file in particular file

My Environment

$ ls
ng.md  ng.png  ok-icon.png  ok.md

ng.md ng ok.md ok-icon

success file pattern

$ docker run --rm -v $(pwd):/data frozenbonito/pandoc-eisvogel-ja -o ok.pdf ok.md

sucessed, and generated ok.pdf.

NG file result

$ docker run --rm -v $(pwd):/data frozenbonito/pandoc-eisvogel-ja -o ng.pdf ng.md
Error producing PDF.
! Undefined control sequence.
<argument> \includegraphics 
                 [width=1.5cm]{./ng.png}
l.279 \end{document}
daipom commented 1 year ago

各セクション必要な情報が簡潔にまとまっていて非常に良いと思います! タイトルの付け方も素晴らしい。タイトルを英語で上手く作るのは慣れないと難しいと思うのですが、とてもいい感じに必要な情報を短く盛り込んだ形にまとめられていると思います。 手練感をすごい感じますw

daipom commented 1 year ago

あとは時間に余裕があれば、立てたissueに自分で次の内容のコメントを足すと良さそうとおもいました!

github-actions[bot] commented 1 year ago

おつかれさまでした!

ワークショップの終了にともないissueを閉じますが、このまま作業メモとして使っても構いません :ok_hand:

ワークショップの感想を集めています!

ブログなどに書かれた際は、このページへリンクの追加をお願いします :pray:

またの参加をお待ちしています!