2

私は比較的 Sweave と R に慣れていないため、プロット ラベルに基本的な数学記号を表示しようとして問題が発生しています。pngまたはpdfデバイスを使用すると、数学記号を完全にレンダリングできるため、問題はSweaveまたはtikzDeviceパッケージのいずれかが原因である可能性があると思います。

このコードを png または pdf デバイスに書き込むと、期待どおりの出力が得られます -- > 記号

qplot(factor(cyl), data=mtcars, geom="bar", colour=factor(cyl)) + scale_x_discrete(paste("",">","6k"))

以下のファイルで Sweave を実行した結果の .tex 出力ファイルを使用すると、 > 記号が ¿ 記号に置き換えられます

<<fig=FALSE, echo=FALSE>>=
require(tikzDevice)
require(ggplot2)
require(reshape2)
tikz('sweave-math-symbols.tex', width=5.9, height=2.7)

qplot(factor(cyl), data=mtcars, geom="bar", colour=factor(cyl)) + scale_x_discrete(paste("",">","6k"))
@

Sweave からの出力ファイルを使用する LaTeX ドキュメントは以下のとおりです。

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

%opening
\title{Sweave Math Symbols}
\author{Phiri}

    \begin{document}

    \maketitle

    \begin{abstract}

    \end{abstract}

    \section{Illustration}
    \input{sweave-math-symbols.tex}

    \end{document}

この問題はどこから発生し、どのように修正すればよいですか?

4

3 に答える 3

4

特殊文字をエスケープできるtikz(..., sanitize = TRUE)ようにする必要があります。tikzDevice詳細?tikzについては、を参照してください。

コード チャンク内でデバイスを手動で開くのは面倒だといつも思うので、knitr詳細を省くための同等のチャンクを次に示します。

<<sweave-math-symbols, dev='tikz', sanitize=TRUE, fig.width=5.9, fig.height=2.7>>=
library(ggplot2)
qplot(factor(cyl), data=mtcars, geom="bar", colour=factor(cyl)) +
  scale_x_discrete(paste("",">","6k"))
@

ただし、>(まだ)考慮されていないtikzDeviceため、オプションで手動で指定する必要があります( as \textgreater{}):

<<setup, include=FALSE>>=
options(
  tikzSanitizeCharacters = c("%", "$", "}", "{", "^", "_", "#", "&", "~", ">"),
  tikzReplacementCharacters = c("\\%", "\\$", "\\}", "\\{", "\\^{}", "\\_{}", "\\#", "\\&", "\\char`\\~", "\\textgreater{}")
)
@
于 2012-10-20T19:18:49.577 に答える
3

あなたのSweaveファイルは(Ubuntu 10.04で)変更なしで機能しましたが>、TeX数学区切り文字($$つまり$>$)でラップしてみてください。率直に言って、状況によっては /don't が区切り文字なしで正常に機能する理由が分からないことに驚いています。

于 2012-10-01T15:04:36.170 に答える