Skip to content

Commit

Permalink
Test support for sourcepos for latex output
Browse files Browse the repository at this point in the history
  • Loading branch information
jeroen committed Dec 13, 2023
1 parent 58d4355 commit 2f032ad
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
4 changes: 2 additions & 2 deletions R/markdown.R
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ markdown_text <- function(text, hardbreaks = FALSE, smart = FALSE, normalize = F

#' @export
#' @rdname commonmark
markdown_latex <- function(text, hardbreaks = FALSE, smart = FALSE, normalize = FALSE, footnotes = FALSE, width = 0, extensions = FALSE){
markdown_latex <- function(text, hardbreaks = FALSE, smart = FALSE, normalize = FALSE, sourcepos = FALSE, footnotes = FALSE, width = 0, extensions = FALSE){
text <- enc2utf8(paste(text, collapse="\n"))
extensions <- get_extensions(extensions)
.Call(R_render_markdown, text, 6L, FALSE, hardbreaks, smart, normalize, footnotes, as.integer(width), extensions)
.Call(R_render_markdown, text, 6L, sourcepos, hardbreaks, smart, normalize, footnotes, as.integer(width), extensions)
}
1 change: 1 addition & 0 deletions man/commonmark.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 11 additions & 1 deletion src/cmark/latex.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,19 @@
#define OUT(s, wrap, escaping) renderer->out(renderer, node, s, wrap, escaping)
#define LIT(s) renderer->out(renderer, node, s, false, LITERAL)
#define CR() renderer->cr(renderer)
#define BLANKLINE() renderer->blankline(renderer)
#define BLANKLINE() latex_out_sourcepos(node, renderer, options); renderer->blankline(renderer)
#define LIST_NUMBER_STRING_SIZE 20

static CMARK_INLINE void latex_out_sourcepos(cmark_node *node, cmark_renderer *renderer, int options){
char buffer[100];
if (CMARK_OPT_SOURCEPOS & options) {
snprintf(buffer, 100, " %%sourcepos(%d:%d-%d:%d)",
cmark_node_get_start_line(node), cmark_node_get_start_column(node),
cmark_node_get_end_line(node), cmark_node_get_end_column(node));
renderer->out(renderer, node, buffer, false, LITERAL);
}
}

static CMARK_INLINE void outc(cmark_renderer *renderer, cmark_node *node,
cmark_escaping escape,
int32_t c, unsigned char nextc) {
Expand Down

0 comments on commit 2f032ad

Please sign in to comment.