質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Markdown

    83questions

    Markdownは、文書の構造、修飾情報を記述するための軽量マークアップ言語です。

  • LaTeX

    46questions

    LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

PandocでMarkdownをLaTeXにしたいのですが。。

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 562

namnium1125

score 1757

お世話になっています。

部分的にLaTeXを使いつつ、Markdownでレポートを書きたいと思い、いくつかのサイト(例えばMarkdownで爆速LaTeXレポート | ロボット・IT雑食日記など)を参考にPandocを使用してみたのですが、コードブロックが入ると、Highlighting環境やShaded環境、NormalTok{}など、未定義のものが入ってきて、dviに変換するときに、pLaTeX、LuaLaTeXともにエラーになってしまいます。

おそらくLaTeXとして出力させず、内部的にLaTeXを使用させてpdfまで自動で変換させる場合は定義されているのでしょうけど、いったいどこに定義があるのかが皆目見当が付きません。

Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association pdfを作成するにあるパッケージはエラーが出なかったものに関してはすべて有効化しましたが、この中にも定義はなかったようです。

最後にPandoc Markdown -> latex with syntax highlightingというページにたどり着き、この中のコードをコピペして実行してみました。しかし、pLaTeX、LuaLaTeXの両方で試しましたがどちらでも\fiの箇所でエラーとなってしまい、うまくいきませんでした。

コピペと言っている時点でお分かりかと思いますが、LaTeXの仕組みについてはほとんど知識がありません。(TeXとLaTeXが違うことを今回の問題で初めて知ったレベルです。)

もし、似たような問題に遭遇した方がおりましたら、回答していただけるとありがたいです。

回答よろしくお願いします。m(_ _)m

あまり参考にならない&いろいろと間違っていると考えられる現在用意しているプリアンブル部です。一部は先ほど載せたURLの完全なコピペです。

\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsarticle}
% [11pt,a4paper]
%
\usepackage{geometry}
\geometry{top=30truemm,bottom=30truemm,left=25truemm,right=25truemm}
\usepackage{here}

\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{ifxetex}
\usepackage{ifluatex}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{url}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{ulem}

\ifxetex
  \usepackage{fontspec,xltxtra,xunicode}
  \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
  \newcommand{\euro}{€}
\else
  \ifluatex
    \usepackage{fontspec}
    \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
    \newcommand{\euro}{€}
  \else
    \usepackage[utf8]{inputenc}
    \usepackage{eurosym}
  \fi
\fi
\usepackage{color}
\usepackage{fancyvrb}
\DefineShortVerb[commandchars=\\\{\}]{\|}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\newenvironment{Shaded}{}{}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{{#1}}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{{#1}}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
\newcommand{\RegionMarkerTok}[1]{{#1}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{{#1}}}}
\newcommand{\NormalTok}[1]{{#1}}
\ifxetex
  \usepackage[setpagesize=false, % page size defined by xetex
              unicode=false, % unicode breaks when used with xetex
              xetex,
              colorlinks=true,
              linkcolor=blue]{hyperref}
\else
  \usepackage[unicode=true,
              colorlinks=true,
              linkcolor=blue]{hyperref}
\fi
\hypersetup{breaklinks=true, pdfborder={0 0 0}}
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\setcounter{secnumdepth}{0}

\EndDefineVerbatimEnvironment{Highlighting}

\begin{document}

\input{main.tex}
\end{document}

main.mdの例です。(\は表現上入れましたが実際はありません。)

# main.texの中身

\```python  
print("Shaded & Highlighting環境")  
\```

\```  
verbatim環境  
\```

`文中コード`

Pandocを通した後のmain.texの中身です。

\hypertarget{main.texux306eux4e2dux8eab}{%
\section{main.texの中身}\label{main.texux306eux4e2dux8eab}}

\begin{Shaded}
\begin{Highlighting}[]
\BuiltInTok{print}\NormalTok{(}\StringTok{"Shaded & Highlighting環境"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\begin{verbatim}
verbatim環境
\end{verbatim}

\texttt{文中コード}

バージョンなど :

  • 実行環境 : Windows 10 MINGW64
  • pandoc : pandoc.exe 2.2.1
  • TeX関連 : TeX Live 2018

他に確認が必要な項目があれば修正欄にお願いします。

補足事項 :
LaTeXの使用はマストなのでAtomやVSCodeの拡張機能を使ってMarkdown -> pdfという方法はおそらく使えないと思います。

追記

エラー内容です。オプションのクラッシュとのことですが、hyperrefのどこを修正すればいいかがいまいちわかりませんでした。

! LaTeX Error: Option clash for package hyperref.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.63 \fi

dviへ変換するコマンドはlualatex master.texを使用しています。

最後の\EndDefineVerbatimEnvironment{Highlighting}は確かに不要らしいですね。。gistでもコメントされているみたいですし。これは取り除きました。

引き続きよろしくお願いします。m(_ _)m

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • fiwa

    2018/06/10 16:26 編集

    hyperref が二度呼ばれているようなので、最初の`\usepackage{hyperref}`(16行目)を削除してみて下さい。

    キャンセル

  • namnium1125

    2018/06/10 16:36

    ありがとうございます! 無事にエラーが消えました! ifの中身はhyperrefの定義だったんですね。。今少し、別なエラーがみられるので現在対処しています。改めてありがとうございます。m(_ _)m

    キャンセル

  • namnium1125

    2018/06/10 17:17

    最後までうまくいきました! ありがとうございます! m(_ _)m

    キャンセル

回答 1

0

現段階で最終的にこうなりました。md2pdfというコマンドです。僭越ながら、報告として一応載せておきます。

#!/usr/bin/bash

filename=`echo $1 | cut -d'.' -f1`
d=`pwd`
mkdir .md2pdf
cd .md2pdf
eval "/Pandoc/pandoc $d/$1 -o main.tex" # Pandocのパスは適切なものを設定してください。
sed -i -e 's/\\tightlist/\n/g' main.tex # 謎のtightlistの消去

cat << EOS > master.tex
\\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsarticle}
% [11pt,a4paper]
%
\\usepackage{geometry}
\\geometry{top=30truemm,bottom=30truemm,left=25truemm,right=25truemm}
\\usepackage{here}

\\usepackage{amssymb}
\\usepackage{amsmath}
\\usepackage{ifxetex}
\\usepackage{ifluatex}
\\usepackage{longtable}
\\usepackage{booktabs}
\\usepackage{url}
\\usepackage{graphicx}
\\usepackage{ulem}

\\ifxetex
  \\usepackage{fontspec,xltxtra,xunicode}
  \\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
  \\newcommand{\\euro}{€}
\\else
  \\ifluatex
    \\usepackage{fontspec}
    \\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
    \\newcommand{\\euro}{€}
  \\else
    \\usepackage[utf8]{inputenc}
    \\usepackage{eurosym}
  \\fi
\\fi
\\usepackage{color}
\\usepackage{fancyvrb}
\\DefineShortVerb[commandchars=\\\\\\{\\}]{\\|}
\\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\\\\{\\}}
% Add ',fontsize=\\small' for more characters per line
\\newenvironment{Shaded}{}{}

\\newcommand{\\KeywordTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}
\\newcommand{\\BuiltInTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}
\\newcommand{\\ControlFlowTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}
\\newcommand{\\OperatorTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}
\\newcommand{\\ImportTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}
\\newcommand{\\ExtensionTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}
\\newcommand{\\VerbatimStringTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}
\\newcommand{\\VariableTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{\\textbf{{#1}}}}

\\newcommand{\\DataTypeTok}[1]{\\textcolor[rgb]{0.56,0.13,0.00}{{#1}}}
\\newcommand{\\DecValTok}[1]{\\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\\newcommand{\\BaseNTok}[1]{\\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\\newcommand{\\FloatTok}[1]{\\textcolor[rgb]{0.25,0.63,0.44}{{#1}}}
\\newcommand{\\CharTok}[1]{\\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\\newcommand{\\StringTok}[1]{\\textcolor[rgb]{0.25,0.44,0.63}{{#1}}}
\\newcommand{\\CommentTok}[1]{\\textcolor[rgb]{0.38,0.63,0.69}{\\textit{{#1}}}}
\\newcommand{\\OtherTok}[1]{\\textcolor[rgb]{0.00,0.44,0.13}{{#1}}}
\\newcommand{\\AlertTok}[1]{\\textcolor[rgb]{1.00,0.00,0.00}{\\textbf{{#1}}}}
\\newcommand{\\FunctionTok}[1]{\\textcolor[rgb]{0.02,0.16,0.49}{{#1}}}
\\newcommand{\\RegionMarkerTok}[1]{{#1}}
\\newcommand{\\ErrorTok}[1]{\\textcolor[rgb]{1.00,0.00,0.00}{\\textbf{{#1}}}}
\\newcommand{\\NormalTok}[1]{{#1}}
\\ifxetex
  \\usepackage[setpagesize=false, page size defined by xetex
              unicode=false, % unicode breaks when used with xetex
              xetex,
              colorlinks=true,
              linkcolor=blue]{hyperref}
\\else
  \\usepackage[unicode=true,
              colorlinks=true,
              linkcolor=blue]{hyperref}
\\fi
\\hypersetup{breaklinks=true, pdfborder={0 0 0}}
\\setlength{\\parindent}{0pt}
\\setlength{\\parskip}{6pt plus 2pt minus 1pt}
\\setlength{\\emergencystretch}{3em}  % prevent overfull lines
\\setcounter{secnumdepth}{0}

\\begin{document}

\\input{main.tex}
\\end{document}
EOS

lualatex master.tex
lualatex master.tex # 依存関係をクリアするため2度実行しています。。もしかしていらない?
mv master.pdf ../${filename}.pdf
# mv main.tex ../${filename}.tex
cd ../
rm -r .md2pdf

実行環境を再掲しておきます。Windows10(MSYS2, MINGW64)上です(WLSでは試していないです)。多分この2つがあれば動きます。

  • texlive 2018
  • pandoc.exe 2.2.1

適当に作成したので、突っ込みどころ満載かとは思いますが、もし読んだ方で「ここ変だよ」というところがあればご指摘いただけると幸いです。

fiwa様、改めていろいろとありがとうございました。m(_ _)m
(もしよろしければfiwa様をBAにしたいのですが...(^ ^; )

こんなアホなコードを書いているうちにようやくたどり着いたページです。(なかなかたどり着かないものです。。。。orz)

一応載せておきます。

Inner Journeys: PandocとLuaLaTeXを使ったPDF出力でコードブロックをきれいに表示する

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    Texで画像挿入ができません。どう書き直せばいいですか?

    作成にはTexファイルからコマンドラインでdviファイルを生成し、dviファイルをpdfファイルに変換しています。 画像を表示させたいのですが、画像のファイル名やコードの文字が出力

  • 解決済

    tex で 機種依存文字?を2文字で合成する方法

     したいこと [木]+[皮]→【柀】 \command{木}{皮} % 「柀」を表示  環境 windows10 Pro 64bit e-pTeX(Vers

  • 解決済

    LATEXの2段にまたがる図の表示方法

    latexで二段組の文章の途中にに図を二段にまたがって表示させたいのですが、行ってみたところ、表示されたのですが、図の挿入箇所が文章の途中ではなく最後に挿入されてしまします。どうし

  • 解決済

    Alpine Linux パッケージの追加方法

    前提・実現したいこと Docker上のAlpine Linuxにて、texliveをインストールしようとしています。 ライブラリのバージョンが合わずにうまくいきません。edgeとい

  • 解決済

    LaTeXの数式番号と数式の大きさを同時に変える方法について

    前提・実現したいこと 現在LaTeXを用いて数式を作ろうとしていますが、数式が小さいので大きくしようとしています。 発生している問題・エラーメッセージ そこで\Hugeコマンド

  • 解決済

    LaTeXにおける環境設定のエラーについて

    前提・実現したいこと CloudLaTeXで、コマンドにより指定される領域である「環境」の設定をしようとしています。 具体的には、文章の中央配置と箇条書きです。以下の参考記事を見な

  • 解決済

    LaTexの1ページ目にヘッダーが表示されない

    実現したい事 LaTexで1枚の文書を作成中なのですが、その文書のヘッダーに何も表示されなくて困っています。LaTexの1ページ目にはヘッダーが表示されないと調べた時にあったのです

  • 受付中

    KaTeXのparserを使用したい

    LaTeXのpaserを使用したく,latex-parserなどを試して見たのですが,どうも理想の動作とは違く,KaTeX内で使用しているparserを使って見たいなあと思いつつも

同じタグがついた質問を見る

  • Markdown

    83questions

    Markdownは、文書の構造、修飾情報を記述するための軽量マークアップ言語です。

  • LaTeX

    46questions

    LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。