Заставьте функцию выводить разные результаты в зависимости от формата вывода rmarkdown

Я создал небольшую функцию, которая, учитывая таблицу в качестве аргумента, выводит некоторый HTML, который позволяет отображать различные представления этой таблицы с помощью интерфейса с вкладками.

Проблема в том, что это хорошо работает при рендеринге HTML-документа, но ломается, если я хочу сгенерировать PDF. Решением было бы сообщить функции о текущем формате вывода rmarkdown, чтобы она выдавала правильный код. Что-то вроде этого :

function() {
    if (current_output_format=="html") output_something_in_html()
    if (current_output_format=="pdf") output_something_in_latex()
}

Итак, есть ли способ определить при вызове render(), какой выходной формат отображается в данный момент?

Заранее благодарю за любую помощь.


person juba    schedule 27.06.2014    source источник
comment
Хакерское решение — использовать файл Makefile. При компиляции создайте временную копию файла для pdf вывода и установите соответствующие флаги.   -  person csgillespie    schedule 27.06.2014
comment
@csgillespie Да, я так с этим справляюсь сейчас, но это не очень портативно. Спасибо !   -  person juba    schedule 27.06.2014


Ответы (1)


Как насчет того, чтобы поймать ошибку и разобраться с ней разумным образом. Итак, что-то вроде:

ans = try(do_default(), TRUE)
if(class(ans)== "try-error") 
    ans = do_fall_back()

Все еще не лучшее решение, но, по крайней мере, оно портативное.

person csgillespie    schedule 27.06.2014
comment
Это может быть способ, но мой код не вызывает никаких ошибок. Я просто хочу вывести что-то другое (HTML или LaTeX) в зависимости от отображаемого формата. - person juba; 27.06.2014
comment
Тогда у меня закончились предложения :( - person csgillespie; 27.06.2014