pandoc places curly brackets around square brackets - latex

I would like to use a LaTeX command in a markdown file. In the markdown file I add
\mycommand[options]{something}
when pandoc renders the markdown file to TeX it becomes
\mycommand{[}options{]}{something}
How can I prevent that from happening?

Works for me with pandoc 1.17.2:
$ echo '\mycommand[options]{something}' | pandoc -t latex
\mycommand[options]{something}

Related

Converting from latex to markdown with pandoc, images not converted

I'm trying to convert a latex file to markdown using Pandoc. The latex file contains linked images, for example like this:
\begin{figure}[htbp]
\begin{center}
\leavevmode
\scalebox{0.4}{\includegraphics{microsatsFigures/Figure_traceView.png}}
\end{center}
\caption{The Traces view}
\label{traces}
\end{figure}
However in the markdown file all I get is
::: center
:::
Is this a known limitation of Pandoc, or is there some command I'm missing that will convert the image instructions? The command I used in pandoc was just the standard format:
pandoc -f latex -t markdown Inputfile.tex -o Outputfile.md

How to solve error with YAML, Preamble (LaTex) and Pandoc conversion

I started using markdown together with pandoc a few weeks ago. I'm especially fond of the markdown editor writemonkey v.3! I have one slight problem with converting my .md to .pdf, and I it's caused by the first line in my document. The first line in the document (see below) is how you give the document a name in writemonkey.
name: seminarium 1
---
author: my name
date: 22 Augusti 2020
bibliography: testlibrary.bib
geometry:
- top=2.5cm
- bottom=2.5cm
- left=2.5cm
- right=2.5cm
pagesize: a4
font: Times New Roman
fontsize: 12pt
header-includes:
- \usepackage{setspace}
- \setstretch{1.0}
- \pagenumbering{gobble}
---
If I remove this first line, the pandoc conversion works like a charm. Otherwise I get this:
pandoc sem1.md -o sem1.pdf --bibliography library.bib -V lang=sv
Error producing PDF.
! LaTeX Error: Can be used only in preamble.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.78 \usepackage
Now - I realize that I've combined a YAML with LaTex code, I am hoping that my formatting is "bad" and that I might improve it so I don't have to remove the first line every time. Maybe tell Pandoc/LaTex to ignore the first line or make a separate .yaml file would help?
Ok! This what I did. Works great with Writemonkey. Just copy-paste in Notepad and save as a .ps1 file and run in Powershell!
CD C:\Users\username\Desktop\ppp2020 # Filepath of .md, .yaml and .bib
Get-Content cap.md -Encoding UTF8 | Select-Object -Skip 2 | Set-Content cap_temp.md -Encoding UTF8 # Removes the first line (name:) from markdown document
pandoc cap_temp.md default.yaml -o cap.pdf --bibliography library.bib -V lang=sv # converts .md to .pdf
Remove-Item 'C:\Users\username\Desktop\ppp2020\cap_temp.md' # This removes the tempfile

How can I strip figures and table during a pandoc LaTeX to Word conversion?

I am trying to use pandoc to convert a thesis from latex to docx. In general, this works well with the following command:
pandoc input.tex -f latex -t docx -s -o output.docx --bibliography references.bib --csl=mystyle.csl
However, I have an additional requirement that I am unable to fulfill. I want the output to be stripped from any figures and tables that are included in the source files. Reading the pandoc documentation and related stackoverflow question has not helped me so far.
Do you have suggestions on what could do the trick?
This is a poster use-case for pandoc filters. The following Lua filter will delete all tables and images:
function Image () return {} end
function Table () return {} end
Save it to a file, say remove-tables-images.lua, and pass the file to pandoc via the --lua-filter parameter:
pandoc input.tex -s -o output.docx \
--bibliography references.bib --csl=mystyle.csl \
--lua-filter remove-tables-images.lua

How to set the font size for code blocks in pandoc markdown?

this small example:
An example code snippet:
~~~{.cpp}
class A
{
public:
static void f1 () {};
virtual void f2 () = override;
};
~~~
can be used to generate a PDF output with:
pandoc -o block-code.pdf block-code.txt
resulting in
The font sizes of both the code and the text that are equal. How can I change the font size of the code snippets for the pdf (LaTex) pandoc output?
You can simply add \small before the beginning of the code snippet and \normalsize after (to return to normal).
You can also add other similar commands. For instance, if your document is doublespaced, you can add \singlespace before the code snippet and \doublespacing after.
For this to work you need to add in the yaml at the beginning of your document the following:
---
header-includes:
- \usepackage{setspace}
---
I solved this problem for me by writing several LaTeX snippets into extra files I keep around:
cat make-code-footnotesize.tex
\renewenvironment{Shaded} {\begin{snugshade}\footnotesize} {\end{snugshade}}
I have such snippets for all different sizes: huge, LARGE, Large, large, normalsize, small, footnotesize, scriptsize, tiny.
To apply them when running pandoc, just include the respective LaTeX snippet with the -H parameter:
pandoc -o block-code.pdf block-code.txt \
-H make-code-scriptsize.tex --highlight-style=espresso
Result:
Note, this controls the font sizes for all code blocks in the PDF. It does not allow you to vary sizes from block to block. Of course, it also doesn't work for HTML, ODT, EPUB or other output -- only for LaTeX and PDF output.
I've developed a filter for pandoc https://github.com/chdemko/pandoc-latex-fontsize for this purpose:
Install this filter with pip:
$ pip install pandoc-latex-fontsize
add for example
---
pandoc-latex-fontsize:
- classes: [c, listing]
size: footnotesize
---
to your metadata block and specify the listings you want to be of size footnotesize:
~~~{.c .listing}
int main(void) {
return 0;
}
~~~
then run pandoc with
$ pandoc --filter pandoc-latex-fontsize ...
On pandoc 1.16.0.2 I did get the same problem but wasn't solved by previous answers.
When using default code highlighting of this version and exporting it with beamer (-t beamer) I got following generated output (for outputting a jmeter command):
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{./jmeter.sh} \NormalTok{-q prod.properties -p jmeter.properties -n -t mytest.jmx -l mylog.log}
\end{Highlighting}
\end{Shaded}
By searching directly in the pandoc code with grep -r "Highlighting" * I found following code:
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
And I replaced it with the following to have a tiny font size in my custom pandoc template (see pandoc -D beamer):
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\},fontsize=\tiny}
Now I have a tinier font size by running the following command:
pandoc -t beamer input.md -o output.pdf --template beamer.template
I use pandoc with the --listings option and a custom eisvogel.latex template.
Download the original eisvogel-template to a new file eisvogel_custom.latex
Open the file, find the line basicstyle = \color{listing-text-color}\small\ttfamily{}\linespread{1.15},
Change the \small to \footnotesize, or \tiny
Save the file
Now run pandoc with the following options:
pandoc --pdf-engine=xelatex --template=eisvogel_custom --listings -o block-code.pdf block-code.txt
To disable the line-numbering, add the following lines at the top of block-code.txt
---
listings-disable-line-numbers: true
...
All options can be found here: https://github.com/Wandmalfarbe/pandoc-latex-template#custom-template-variables
Tested with pandoc 2.6 using docker-image dalibo/pandocker:stable

Set the language of a listings environment in pandoc

I am struggling to convince pandoc to set the language for a listing automatically when converting from extended markdown (pandoc) to latex with the --listings argument. This is the file foo.txt:
A listing follows.
~~~{.prolog}
% fooing around
foo :-
format("bar~n").
~~~~
When I use pandoc -s foo.txt -o foo.html, the code is highlighted.
When I use pandoc -s foo.txt -o foo.latex, the code is highlighted, using the custom commands inserted by pandoc in the LaTeX preamble.
When I use pandoc -s foo.txt --listings foo.latex, the code is not highlighted, as the language option to the listings environment is not set. I can work around this:
~~~{.prolog language=Prolog}
but this defeats the purpose. Am I missing something or is this functionality not supported? If it omitted on purpose, what is the reason?

Resources