小编ste*_*fan的帖子

ggplot2 PDF输出中的Unicode字符

如何在使用ggplot2创建的PDF图中为标签,标题和类似内容使用Unicode字符?

请考虑以下示例:

library(ggplot2)
qplot(Sepal.Length, Petal.Length, data=iris, main="A?????????????????s????x??")
ggsave("t.pdf")
Run Code Online (Sandbox Code Playgroud)

图表的标题使用Unicode字符(小型大写字母),在输出中显示为....只有pdf图才会出现问题; 如果我用最后一行替换ggsave("t.png"),那么输出就是预期的.

我究竟做错了什么?我的R脚本是UTF-8编码.一些系统信息:

R version 2.14.1 (2011-12-22)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
Run Code Online (Sandbox Code Playgroud)

在寻找这个问题的解决方案时,我发现一些证据表明R使用单字节编码进行多字节编码,例如UTF-8用于PDF或postscript输出.我还发现了一些建议,例如,能够让欧元符号正常工作,但没有一般解决方案.

unicode r utf-8 ggplot2

24
推荐指数
2
解决办法
9628
查看次数

SBT:对没有出版的其他SBT项目的依赖

我有一组松散相关的组件,其中一些组件依赖于其他组件.为了具体,我们假设我们有"common","a"和"b"组件."common"没有任何依赖关系,但所有其他项目都使用"common".此外,"a"取决于"b".所有组件都是用Scala编写的,我想用sbt来构建它们.

以下属性很不错:

  1. 多个人在不同的项目上工作,这就是为什么我们不想拥有一个存储库,而是每个项目都有一个存储库.
  2. 构建项目应该很容易,并且应该自动构建所有依赖项(如果需要).也就是说,如果我修改"common"然后构建"b",这应该首先构建"common",然后继续构建"b".
  3. 能够在IDE中拥有所有项目,以便重构和类似的IDE任务正常工作,并且所有受影响的项目都能正确更改.

据我所知,有两种可能性在sbt中具有这种依赖性; 我们要么使用子项目,要么使用托管依赖项(在某处推送,例如在本地推送).但是,似乎这两个选项都没有提供上述(1)或(2).特别是

  • 使用子项目迫使我们使用单个存储库,因为所有子项目必须位于主项目的子目录中.
  • 在本地发布项目并使用托管依赖项是很麻烦的,因为如果该项目是构建并首先发布的,那么更改"common"然后构建"b"只会选择"common"中的更改.我可以看到托管依赖项在许多情况下都很有用,但对于我们的特定用例,它们似乎不能很好地工作.我们经常处理几个项目并同时进行更改.出于这个原因,经常发布似乎过于复杂.

真的没有办法说某个sbt项目依赖于某个(相对)位置的另一个sbt项目,并且知道何时构建依赖项?

build-automation scala sbt

14
推荐指数
1
解决办法
1795
查看次数

具有非线性算术的Z3性能

我们遇到了性能问题,我认为是Z3中处理非线性算术的部分.这是一个简单的具体Boogie示例,在使用Z3(版本4.1)验证时需要很长时间(大约3分钟)才能完成.

const D: int;
function f(n: int) returns (int) { n * D }

procedure test() returns ()
{
  var a, b, c: int;
  var M: [int]int;
  var t: int;

  assume 0 < a && 1000 * a < f(1);
  assume 0 < c && 1000 * c < f(1);
  assume f(100) * b == a * c;

  assert M[t] > 0;
}
Run Code Online (Sandbox Code Playgroud)

似乎问题是由函数的相互作用,整数变量的范围假设以及(未知)整数值的乘法引起的.最终的断言不应该是可证明的.似乎Z3有办法以某种方式实例化大量术语,因为它的内存消耗相当快地增长到大约300 MB,此时它放弃了,而不是快速失败.

我想知道这是否是一个错误,或者是否有可能改善启动时Z3应该停止搜索它正在尝试解决问题的特定方向.

一个有趣的事情是通过使用内联函数

function {:inline} f(n: int) returns (int) { n * D }
Run Code Online (Sandbox Code Playgroud)

使验证很快终止.

背景:这是我们在验证器Chalice中看到的问题的最小测试用例.在那里,Boogie程序可以使用更长的时间,可能有类似的多种假设.通常,验证似乎根本没有终止. …

z3

5
推荐指数
1
解决办法
857
查看次数

Scala Parser Combinators:有效解析C风格的评论

/* ... */使用Scala解析器组合器(有效)解析C风格的多行注释(即)的最佳方法是什么?

在我参与的项目中,我们解析了类似C语言的编程语言,并希望支持多行注释.我们使用的子类StandardTokenParsers已经处理了这样的注释(通过StdLexical.但是,该类仅适用于相当短的多行注释,否则会耗尽堆栈空间.

我们还尝试提供我们自己的空白定义,以提高效率.我们使用了RegexParser(受StackOverflow上另一个问题的启发)如下:

class Parser extends StandardTokenParsers {

  override val lexical = new StdLexical {
    def rp: RegexParsers = new RegexParsers {}
    override val whitespace: Parser[Any] = rp.regex("""(\s|//.*|(?m)/\*(\*(?!/)|[^*])*\*/)*""".r).asInstanceOf[Parser[Any]]
  }

  // ...

}
Run Code Online (Sandbox Code Playgroud)

这略微改善了这种情况,但如果评论超过几十行,仍会导致堆栈溢出.任何想法如何改善这个?

scala parser-combinators

5
推荐指数
1
解决办法
818
查看次数

标签 统计

scala ×2

build-automation ×1

ggplot2 ×1

parser-combinators ×1

r ×1

sbt ×1

unicode ×1

utf-8 ×1

z3 ×1