citations in Pandoc footnotes rendered as numerals - latex

I am getting a weird result when I convert markdown to PDF using Pandoc. This is for academic writing with footnotes generated via citeproc; a bibtex library generated by Zotero; and a Chicago csl file. Most of the footnotes are fine, but sometimes where I should see a book or article I just get a numeral.
When I write the following in Markdown
^[#melvilleMobyDick, 155]
I want a footnote that says
Herman Melville, Moby-Dick, p. 155
but I get
1, p. 155
The problem seems to be in the transition from markdown to LaTeX; the latter output is:
\footnote{1, 155}
My shell command is:
$ pandoc article.md -o article.latex --filter=pandoc-citeproc
And I am using this YAML header:
title: Essay
bibliography: My_Library.bib
csl: chicago_fullnote_ibid.csl
Many thanks for your help.

You're using chicago_fullnote_ibid.csl, which styles citations as footnotes. So just do [#melvilleMobyDick, 155] instead of ^[#melvilleMobyDick, 155] and it will turn into a footnote.

Related

How to remove parentheses around pandoc citations?

Here's how I do my citations in latex
\documentclass[11pt]{article}
\usepackage[
backend=biber, style=apa,
giveninits=true, uniquename=init,
citestyle=authoryear]{biblatex}
\bibliography{references.bib}
\begin{document}
... catastrophic population declines (\cite{McIntyre__2015}).
\end{document}
I'm using pandoc to convert this to docx or odt so I can get track changes from colleagues.
pandoc ./main.tex -f latex -t odt --bibliography=./references.bib --csl ../apa.csl -o output.odt
However... in the resulting document, pandoc automatically surrounds every \cite call with an extra set of parenthesis.
...catastrophic population declines ((McIntyre et al. 2015)).
I really like doing parentheses manually... is there a way for me to get pandoc to stop adding these extra citation parentheses?
I have the impression that this can be done with lua filters in pandoc... I was hoping someone could give me some pointers in the right direction on how to address this.
A Lua filter could be used to change the citation mode such that the parens are omitted:
function Cite(cite)
for _, c in ipairs(cite.citations) do
c.mode = pandoc.AuthorInText
end
return cite
end
Make sure that the filter runs before citeproc, i.e., it must occur first in the call to pandoc:
pandoc --lua-filter=modify-citations.lua --citeproc ...
The alternative would be to change \cite into \citet.
The answer from tarleb didn't solve the question, but it did lead me to the right documentation.
I now understand that pandoc relies on CSL for the actual formatting of citations, while lua filters can modify what kind of citation is used (author in text, vs author in parenthesis).
<citation et-al-min="3" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" collapse="year" givenname-disambiguation-rule="primary-name-with-initials">
<layout prefix="" suffix="" delimiter="; ">
</layout>
</citation>
In my CSL doc, I just removed the parentheses from the prefix and suffix attributes of the <citation> <layout> node.
Now only my manually placed parentheses appear in the compiled doc.
...catastrophic population declines (McIntyre et al., 2015).

How can I remove an automatically placed LaTeX citation?

My problem is following: I am citing 19 papers in the bibliography section of my LaTeX file, but whenever I run it in Texstudio to get a PDF, an additional citation appears: "Automatically placing footnotes...".
I had some footnotes which did not show up anywhere, so I assumed it could be to do with that. I deleted the footnotes and re-ran the PDFmaker about 5 times (because bibliographies are weird in LaTeX and apparently you need to run them 5 times before everything gets updated), but no effect: still that line is there.
Any ideas?
The code I am using to generate my bibliography:
\begin{thebibliography}{30}
\bibitem{einstein}
A. Einstein:
\textit{Relativitätsprinzip und die aus demselben gezogenen Folgerungen}.
Jahrbuch der Radioaktivität, 4, 411–462 (1907)
%all other citations
\end{thebibliography}
Thanks!!
what I get after compilation, citation number 20 should not be there
I am using the rev-tex template

Latex: Can I cite a reference after the bibliography

I'm having trouble with citations after the bibliography (in my appendices) using Bibtex/pdflatex. I'm using the 'puthesis' class - Purdue's class for our theses - which is built on top of the 'report' class. I'm using package 'natbib' with the option 'numbers'. An MWE isn't really feasible, but an example is shown below
\documentclass[english, ne, thesis]{puthesis}
\usepackage[numbers]{natbib}
...
\begin{document}
\chapter{Body Chapter}
Citations work fine here \cite{abc123}
\bibliographystyle{unsrt}
\bibliography{dissertation.bib}
\appendices
\chapter{Appendix Chapter}
Citations don't work here, I get an error that the
"Package natbib Warning: Citation `Crane1991' on page 145 undefined
on input line 4940." \cite{abc1234}
\end{document}
Some obvious things:
The citation does exist in the .bib file.
I'm running pdflatex; bibtex; pdflatex; pdflatex
I get the same error with and without the \appendices line.
Is there a way to cite references in latex after the bibliography?
This problem was caused by a non-UTF8/Latin9 encoded character in my .bib file. After ensuring the correct encoding with
recode utf8..l9 dissertation.bib
the file compiled as expected.

Pandoc generation of pdf from markdown 4th header is rendered differently

I am using pandoc to generate a pdf from some markdown. I am using h1 through h4 via hash symbols. Example h1=#, h4=####. When I generate my document like this:
pandoc input.md -o output.pdf
I get a document where h1, h2 and h3 have a newline after them but h4 does not have a new line. The text starts on the same line as the header (it isn't formatted the same way, but there isn't a newline character between).
I've tried adding spaces after the #### and adding manual line returns using my editor but nothing seems to work.
Any ideas?
While the mentioned solutions work fine, pandoc offers a build-in variable to enable block-headings for \paragraph.
pandoc -s -o out.pdf some.md -V block-headings
Pandoc Manual
pandoc generates PDFs via LaTeX. In LaTeX, "headers" are generated using the following commands:
\section
\subsection
\subsubsection
\paragraph
\subparagraph
As you can see, a "level four heading" corresponds to the \paragraph command, which is rendered as you describe. There simply isn't a \subsubsubsection command to use.
The only way to get what you want is to redefine the \paragraph command, which is quite tricky. I haven't been able to make it work with Pandoc.
While #tarleb’s answer is surely the best (except that it specifies a
wrong amount of vertical space), here is a “simpler” (by some measure)
but more hacky (in LaTeX terms at least) solution which optionally uses a Pandoc Lua filter or a LaTeX hack but avoids loading another LaTeX package.
We want the LaTeX source to look something like this:
\hypertarget{level-4-heading}{%
\paragraph{Level 4 heading}\label{level-4-heading}}
\hfill
Lorem ipsum dolor sit amet.
This LaTeX looks awful, but if you don’t need to keep or share the LaTeX
source it does what you probably want: a space between the level 4
heading and the paragraph after it equal to the space between a level 3
heading and the paragraph after it.
Here is how it works: since a \hfill on a line on its own is about as
close as you can get to an empty paragraph in LaTeX you get a first
paragraph — the one running in with the heading — containing only
horizontal white space until the end of the line, and then immediately
after a new paragraph — the actual first paragraph after the heading —
with just a normal paragraph space between it and the heading. This
probably also upsets LaTeX’s idea about what a \paragraph should be
like as little as possible.
The “manual” way to do this is as follows:
#### Level 4 heading
````{=latex}
\hfill
````
Lorem ipsum dolor sit amet.
This uses Pandoc’s relatively new raw markup syntax — the “code block”
is actually a raw LaTeX block — but it looks even more awful than the
resulting LaTeX source! It is also a tedious chore to have to insert
this after every level 4 heading. In other words you want to insert that
raw LaTeX automatically, and that can be done with a Lua filter:
--[======================================================================[
latex-h4-break.lua - Pandoc filter to get break after a level 4 heading.
Usage:
$ pandoc --lua-filter latex-h4-break.lua input.md -o output.pdf
--]======================================================================]
-- create it once, use it many times!
local hfill_block = pandoc.RawBlock('latex', '\\hfill')
function Header (elem)
if 4 == elem.level then
return { elem, hfill_block }
else -- ignore headings at other levels!
return nil
end
end
However you can also do a simple LaTeX hack in a header-includes
metadata block to get the same effect:
---
header-includes:
- |
``` {=latex}
\let\originAlParaGraph\paragraph
\renewcommand{\paragraph}[1]{\originAlParaGraph{#1} \hfill}
```
---
#### Level 4 heading
Lorem ipsum dolor sit amet.
This works by first creating an “alias” of the \paragraph command and
then redefining the \paragraph command itself, using the alias in the
new definition so that now wherever the LaTeX source created by Pandoc
contains \paragraph{Foo} it is if it instead had contained
\paragraph{Foo} \hfill which does what we want with zero extra
dependencies! (In case you wonder the wacky spelling of the “aliased”
command is to minimize the risk that it collides with anything which
already exists, since the TeX \let command doesn’t check for that. We
certainly don’t want to overwrite any existing command!)
NOTE: If you really should want more or less space than a normal
paragraph break after the heading just add an appropriate \vspace
command after the \hfill: \hfill \vspace{-0.5\parskip}.
Shifting Headers
Arguably the best way to solve this would be to avoid the problem altogether by shifting what a level 4 header corresponds to. The default for pandoc is to use \section commands for 1st level and \paragraph for 4th level headers. This can be altered via the --top-level-division parameter:
--top-level-division=[default|section|chapter|part]
Treat top-level headers as the given division type in LaTeX [...] output. The hierarchy order is part, chapter, then section; all headers are shifted such that the top-level header becomes the specified type. The default behavior is to determine the best division type via heuristics [...]
So with --top-level-division=chapter, a 4th-level header would be generated via the \subsubsection command.
Styling via LaTeX
If this is not an option, the next best way is to configure the layout of the corresponding LaTeX command: for level-four headers, this is \paragraph by default. The following methods are taken from TeX StackExchange answers.
Please also check the answer by bpj, which is much simpler than what's proposed below.
Default document-classes
The default way would be to configure \paragraph via the titlesec package. We can use the header-includes metadata field for this, which pandoc will include in the intermediate LaTeX document.
---
header-includes: |
``` {=latex}
\usepackage{titlesec}
\titlespacing*{\paragraph}{0pt}{1ex}{-\parskip}
\titleformat{\paragraph}[hang]
{\normalfont\bfseries}
{}
{0pt}
{}
```
---
KOMA document-classes
Using titlesec won't work properly for documents using KOMA classes (like scrartcl), as KOMA has it's own ways of doing things. For these, use this alternative snippet:
---
documentclass: scrartcl
header-includes: |
``` {=latex}
\makeatletter
\renewcommand\paragraph{\#startsection{paragraph}{4}{\z#}%
{-3.25ex \#plus -1ex \#minus -0.2ex}%
{0.01pt}%
{\raggedsection\normalfont\sectfont\nobreak\size#paragraph}%
}
\makeatother
```
---
I am not sure, why, but this works for me:
Put $\ \\ $ in the first line after your #### headline

pandoc not converting latex style citations correctly

I want to use latex-style citations \cite{key} in my markdown so that I can create tex and pdf documents nicely using pandoc. However, when I cite something, it shows the keyword in brackets instead of the citation style, such as author name or citation number. In other words, I want it to show up in the PDF as "This is my citation [1]" but instead it is appearing as "This is my citation [mykey]". Also, my references list isn't showing up after I add my # References header. What is going on here?
Below is my sample command for producing this along with the sample files and my current incorrect output file (test.pdf).
pandoc test.md --biblatex --biblio test.bib --csl chicago-author-date.csl -o test.pdf
test.md
% My test pandoc-ument
I want to reference this: \cite{Gepasi1993}
# References
test.bib
#ARTICLE{Gepasi1993,
Author = {P. Mendes},
Journal = {Comput. Applic. Biosci.},
Pages = {563--571},
Title = {GEPASI: A software package for modelling the dynamics, steady states and control of biochemical and other systems.},
Volume = {9},
Year = {1993}
}
test.pdf
I want to reference this: [Gepasi1993]
The --biblatex option is not for writing biblatex directly in markdown.
What it does is convert native pandoc markdown citations, like
[#Gepasil1993, p. 5]
to biblatex citations in LaTeX output.
If you use pandoc markdown citations instead of the LaTeX ones, you'll
find that the citations work. Use this command:
pandoc test.md --biblio test.bib --csl chicago-author-date.csl -o test.pdf
with this input:
I want to reference this: [#Gepasi1993]
Pandoc's citation format is documented in the Pandoc User's Guide.
If you really want to use raw biblatex citations in your markdown input,
you can, but then you need to take care of the bibliography stuff
yourself. You'd do it this way:
pandoc test.md --parse-raw -t latex -s > test.tex
pdflatex test
biber test
pdflatex test
pdfltatex test

Resources