1

関連する質問をしました:プログラムがインストールされているかどうかを確認してください

ただし、3 つのシステムすべてで自分自身のソリューションをテストするまで、回答を差し控えています。Windows マシンでは R 内から pandoc を動作させることができますが、Linux では R ターミナルから各メソッドに対して次のエラー/応答が返されます。

1:

> system('pandoc -v')
sh: 1: pandoc: not found

2:

> myPaths <- c("pandoc", 
+              "~/.cabal/bin/pandoc", 
+              "~/Library/Haskell/bin/pandoc", 
+              "C:\\PROGRA~1\\Pandoc\\bin\\pandoc") 

> Sys.which(myPaths)
                           pandoc               ~/.cabal/bin/pandoc 
                               ""   "/home/tyler/.cabal/bin/pandoc" 
     ~/Library/Haskell/bin/pandoc C:\\PROGRA~1\\Pandoc\\bin\\pandoc 
                               ""                                "" 

3:

> Sys.which("pandoc")
pandoc 
"" 

pandoc がインストールされていないと思われるかもしれませんが、インストールされていると思います。クリーンな端末セッションから:

> tyler@trinker ~ $ echo $PATH
> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/tyler/.cabal/bin

tyler@trinker ~ $ pandoc -v
pandoc 1.10.1
Compiled with citeproc-hs 0.3.7, texmath 0.6.1.3, highlighting-kate 0.5.3.6.
Syntax highlighting is supported for the following languages:
    Actionscript, Ada, Alert, Alert_indent, Apache, Asn1, Asp, Awk, Bash,
    Bibtex, Boo, C, Changelog, Clojure, Cmake, Coffee, Coldfusion, Commonlisp,
    Cpp, Cs, Css, Curry, D, Diff, Djangotemplate, Doxygen, Doxygenlua, Dtd,
    Eiffel, Email, Erlang, Fortran, Fsharp, Gnuassembler, Go, Haskell, Haxe,
    Html, Ini, Java, Javadoc, Javascript, Json, Jsp, Julia, Latex, Lex,
    LiterateCurry, LiterateHaskell, Lua, Makefile, Mandoc, Matlab, Maxima,
    Metafont, Mips, Modula2, Modula3, Monobasic, Nasm, Noweb, Objectivec,
    Objectivecpp, Ocaml, Octave, Pascal, Perl, Php, Pike, Postscript, Prolog,
    Python, R, Relaxngcompact, Rhtml, Ruby, Scala, Scheme, Sci, Sed, Sgml, Sql,
    SqlMysql, SqlPostgresql, Tcl, Texinfo, Verilog, Vhdl, Xml, Xorg, Xslt, Xul,
    Yacc, Yaml
Copyright (C) 2006-2013 John MacFarlane
Web:  http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions.  There is no
warranty, not even for merchantability or fitness for a particular purpose.

Linux Mint の R に pandoc を認識させるにはどうすればよいですか? (私はLinuxの初心者です)

4

2 に答える 2

4

私もこれに問題を抱えていました。pandoc も cabal 経由でインストールしました。apt-get でインストールすれば問題ありません。端末から R を起動した場合は問題ありませんでしたが、RStudio 内から pandoc を検出しようとすると問題が発生しました。その理由は、RStudio は bash 環境変数を読み込まないため、.bashrc のパスを変更しても RStudio はそれを検出しません。解決策は、代わりに .profile を介してパスを変更することです。

これを .profile ファイルの末尾に追加し、.bashrc ファイルのパス変更を削除すると、R 内から pandoc を認識できるようになります。

if [ -d "$HOME/.cabal/bin" ] ; then
    PATH="$PATH:$HOME/.cabal/bin"
fi
于 2013-02-20T02:03:25.453 に答える
3

これが私が考えていたものです。関数内の他のすべてのものを取り除いて、html5それが何を返すかを確認し、私の思考プロセスの一般的な考え方を示します。

まず、Pandocがインストールされている場所を把握する関数を作成します。複数の場所が一致する場合(パスが正しく検出される場合は、ほとんどの場合「pandoc」と「〜/ .cabal / bin / pandoc」)、最初のオプションが選択されます。

wheresPandoc <- function() {
  myPaths <- c("pandoc", 
               "~/.cabal/bin/pandoc", 
               "~/Library/Haskell/bin", 
               "C:\\PROGRA~1\\Pandoc\\bin\\pandoc.exe")
  temp <- Sys.which(myPaths)
  temp <- names(temp[temp != ""])[1]
  if (is.na(temp)) stop("Pandoc not installed in one of the typical locations")
  else temp
}

その関数を単独で実行すると、次のようになります。

wheresPandoc()
# [1] "~/.cabal/bin/pandoc"

したがって、その出力をhtml5関数で使用して、 system「アクション」を作成できます。

html5 <- function(in.file = NULL, out.file = NULL) {
  action <- paste0(wheresPandoc(), 
                   " -s -S -i -t dzslides --mathjax ", 
                   in.file, " -o ", out.file)
  action
}

html5(in.file = "this.txt", out.file = "that.html")
# [1] "~/.cabal/bin/pandoc -s -S -i -t dzslides --mathjax this.txt -o that.html"

これは非常に複雑なことかもしれませんが、ユーザーが技術に精通している、またはプログラムを面白い場所にインストールする(そしてプログラムをインストールする場所を覚えている)タイプのユーザーであると思われる場合はwheresPandoc、次のようなものに変更することを検討できます。典型的なカバールの場所をコメントアウトしたので、それがどのように機能するかを確認できます。

wheresPandoc <- function() {
  myPaths <- c("pandoc", 
  #            "~/.cabal/bin/pandoc", 
               "~/Library/Haskell/bin", 
               "C:\\PROGRA~1\\Pandoc\\bin\\pandoc.exe")
  temp <- Sys.which(myPaths)
  temp <- names(temp[temp != ""])[1]
  if (is.na(temp)) {
    ans <- readline("Pandoc not installed in one of the typical locations.\n 
                    Do you know where Pandoc is installed? (y/n) ")
    if (ans == "y") temp <- readline("Enter the (unquoted) path to Pandoc: ")
    else if (ans == "n") stop("Pandoc not installed or not found.")
  } 
  temp
}

私のシステムでは、実行すると次のようになります。最初の質問に「y」と答えると、引用符で囲まれていないPandocへのパスを指定するように求められ、それを使用してsystem呼び出しを作成します。

> html5(in.file = "this.txt", out.file = "that.html")
Pandoc not installed in one of the typical locations.

Do you know where Pandoc is installed? (y/n) y
Enter the (unquoted) path to Pandoc: ~/.cabal/install/pandoc
[1] "~/.cabal/install/pandoc -s -S -i -t dzslides --mathjax this.txt -o that.html"

私が知っているほとんどの一般ユーザーは、そのような質問を見ると単純にシャットダウンしますが、私が知っているRユーザーのほとんどは、もう少し技術志向であるため、それほど怖がらないかもしれません。

于 2013-02-20T03:16:31.400 に答える