[R-br] Render {rmarkdown} não funciona em emacs
walmes .
walmeszeviani em gmail.com
Segunda Março 16 14:28:12 BRT 2015
Eu uso o Emacs para edição de documentos R. Para compilar eu abro um
terminal e dou instrução lá. Antes eu abria um terminal do linux e chamava
o R dentro. Hoje já uso um shell script que facilita bem mais as coisas.
Segue o shell script. Dentro tem o comentário logo no topo de como fazer o
link simbólico.
## COMEÇA ARQUIVO render
#!/bin/bash
# Seguir as intruções aqui
# https://github.com/rstudio/rmarkdown/blob/master/PANDOC.md para criar
# links simbólicos para o pandoc. No caso, tem-se que fazer
# $ sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc /usr/local/bin
# $ sudo ln -s /usr/lib/rstudio/bin/pandoc/pandoc-citeproc /usr/local/bin
# para poder usar esse bash.
#-----------------------------------------------------------------------------
# Compilar *.Rmd para *.html com rmarkdown::render.
# Walmes
Zeviani
#-----------------------------------------------------------------------------
echo
echo
"============================================================================="
echo "Compilando *.Rmd para *.html com rmarkdown::render."
echo " Walmes
Zeviani"
echo
"============================================================================="
echo
##-----------------------------------------------------------------------------
##
http://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line-options
Options=$@
Optnum=$#
_usage() {
#--------------------------------------------
# Shows how use.
cat <<EOF
render $Options
$*
Usage: render <[options]> file
file Is a filename with extension *.Rmd.
Options:
-h --help Show this message
-p --purl To purl the file
EOF
}
if [ $# = 0 ]; then _usage; fi
#-----------------------------------------------------------------------------
# NOTE: This requires GNU getopt. On Mac OS X and FreeBSD, you have to
# install this separately.
TEMP=`getopt -o hp --long help,purl -n 'render' -- "$@"`
if [ $? != 0 ] ; then echo "Terminating." >&2 ; exit 1 ; fi
# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"
PURL=
while true; do
case "$1" in
-h | --help )
_usage
break
exit 1
;;
-p | --purl )
PURL=true
shift
;;
-- )
shift; break ;;
* )
_usage
break
exit 1
;;
esac
done
INPUT=$1
case "$INPUT" in
*.Rmd )
echo; echo "Running rmarkdown::render(\"$INPUT\")."; echo
Rscript -e "require(knitr); require(rmarkdown); render(\"$INPUT\")"
;;
*)
echo "The file $INPUT has a non supported file extension."
exit 1
;;
esac
if [[ "$PURL" == "true" ]]
then
purl -n $INPUT
fi
##-----------------------------------------------------------------------------
## Para fazer em batelada.
## for file in `ls *.Rmd`
## do
## rmarkdownRender -p $file
## done
## FIM DO ARQUIVO render
Esse arquivo "render" você pode deixar na sua pasta "/bin" do linux. Tem
que dar permissão de execussão. Suponha que o arquivo seja criado num lugar
qualquer então execute esses passos.
$ ls -l render ## Lista permissões.
$ chmod +x render ## Permite execução.
$ ls -l render ## Lista novamente.
$ sudo cp render /bin ## Copia para a pasta /bin
$ render nome_do_arquivo.Rmd ## Modo de usar.
Eu na verdade prefiro deixar meus shell numa pasta própria ao inves da
/bin. Vamos supor que seja a /home/bashs. Você só precisa adicionar o PATH
ao conjunto de paths monitorados. Se faz isso incluindo a seguinte linha
dentro do seu arquivo /home/walmes/.bashrc
export PATH=$PATH:/home/walmes/bashs/
À disposição.
Walmes.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20150316/cfdffc5f/attachment.html>
Mais detalhes sobre a lista de discussão R-br