存档

‘技术相关’ 分类的存档

Wrong type argument error in pst-node style of AUCTeX

2011年5月22日 没有评论

Using AUCTeX 11.86 under Emacs 24.0.50.1. Activated pst-node style. Pressed C-c C-e to insert a psmatrix environment, entered nothing on “Options” and encountered the error:
let: Wrong type argument: char-or-string-p, (“”)

The “Options” can auto-complete with psmatrix options such as rowsep, colsep… Still didn’t work even if I entered something. Checked the pst-node.el under /emacs/site-lisp/auctex/style/:

;;; Environments
(defun LaTeX-pstnode-env-psmatrix (env)
  "Return psmatrix environment with arguments."
  (let ((opt (completing-read-multiple "Options: "
                                       LaTeX-pstnode-psmatrix-list)))
    (LaTeX-insert-environment env opt)))

completing-read-multiple comes from crm.el, which enables the multiple auto completion. The return value is a list instead of a string, so LaTeX-insert-environment won’t accept it. Fixed the code as follows to loop over the list and insert the option items with comma and square brackets. It doesn’t look neat but it works anyway.

;;; Environments
;;; Changed by James Lao
(defun LaTeX-pstnode-env-psmatrix (env)
  "Return psmatrix environment with arguments."
  (let ((opt (completing-read-multiple "Options: "
                                       LaTeX-pstnode-psmatrix-list)))
    (setq opto "")
    (while opt
      (if (string= opto "")
	  (setq opto (car opt))
      (setq opto (concat opto ", " (car opt))))
      (setq opt (cdr opt)))
    (LaTeX-insert-environment env (concat "[" opto "]"))))

I never used the mailing list and would appreciate if someone could help me check with the development team…

preview-latex在GS9.00下报错

2011年5月14日 没有评论

在emacs下其实很久不用preview-latex了,一直觉得没有必要——但是忽然用一下的时候发现不能用还是很郁闷的。基本上报错是这样的:

"GSWIN32C.EXE" "-dOutputFile=(_region_.prv/tmp5723kvc/pr1-1.png)" "-q""-dSAFER" "-dNOPAUSE" "-DNOPLATFONTS" "-dPrinted" "-dTextAlphaBits=4""-dGraphicsAlphaBits=4" "-sDEVICE=png16m" "-r70.4906x70.6156"
GS>{DELAYSAFER{.setsafe}if}stopped pop/.preview-BPcurrentpagedevice/BeginPage get dup null eq{pop{pop}bind}ifdef<>setpagedevice/preview-do{[count 3 roll save]3 1 roll dup length 0 eq{pop}{setpagedevice}{ifelse .runandhide}stopped{handleerror quit}if aload pop restore}bind def[(_region_.prv/tmp3712kvc/preview.dsc)(r)file]aload exch dup 0 setfileposition 520()/SubFileDecode filter cvx .runandhide aload pop dup dup 623 setfileposition 50()/SubFileDecode filter cvx<<>>preview-do
Error: /invalidfileaccess in --file--

查了一通后来发现有人遇到这个问题之后把GS降级到8.71以下就好了。说明GS在近来做了一些改动。左看右看看到了-dSAFER这个参数——这个参数本意是要加强权限检查防止gs自动打开系统文件权限——但和权限相关的也只有它了。试着在命令行下重新跑着两个命令(用gswin32会容易些,否则后面这个长命令贴都贴不进去),居然跑通了。又大致查了查,貌似可能是一个BUG,不过我升级到了最新的9.02也没有解决这个问题。

既然如此,到site-lisp/auctex/preview.elc(最好还是用.el重新编译一下) 下面找到
(defcustom preview-gs-options '("-q" "-dSAFER" "-dNOPAUSE" "-DNOPLATFONTS" "-dPrinted" "-dTextAlphaBits=4" "-dGraphicsAlphaBits=4")
把dSAFER一项干掉就是了。虽然这似乎是一个“漏洞”,不过就自己跑跑preview来看,应该没太大风险。

一个更为稳妥的办法是在.emacs里面加上 ‘(preview-gs-options (quote (“-q” “-dNOPAUSE” “-DNOPLATFONTS” “-dPrinted” “-dTextAlphaBits=4″ “-dGraphicsAlphaBits=4″))),就好了

分类: 技术相关 标签:

LaTeX中的分页环境

2011年1月9日 没有评论

近来搞一个书稿,希望自己设计一个环境可以加点分页的边框底色什么的,毕竟么,内容和版式都重要,看得身心愉悦才能更好地看下去。于是想设定一个带底色或者不带底色的环境,在外侧加一个竖线,看起来多么简洁的想法啊,真做起来可不太容易。

找找现有的东西吧,找来找去找到一个changebar,看看用起来挺简单,拿xetex一跑,报错:( 发现这个包的逻辑是算出坐标,然后用很多特殊的ps命令把线最后补上去。按说xetex对pstricks支持的还不错… 可惜不行。我这书稿肯定是不可能倒回去用dvips的,看看网上似乎有成功把它移植到pdflatex上的,但原作者从不回邮件,宏包也多年不更新了。本来想搞一下这些special的命令,终因没有时间细究而作罢。加底色的盒子可以用xcolor,但是分页就实在要费些周折。

后来找到了mdframed包,可以画分页的盒子和边框。研究了一下包的原理,发现也颇为不易:把分页的内容暂存起来,然后分别按照第一页、中间页和末页的情况,用rule或者tikz或者pstricks画出底色,然后再把字用盒子放进去。作者实际上把这些盒子的计算都算好了,可以自己来定义style设定作画的方法。这确实是个不错的主意,处理起来余地也挺大。不过后来发现,边框和边距设定都是按照左右来分的,碰到双面排版的情况,左右边距实际上应该是内外边距。事情繁杂也没有心情仔细读代码,于是试着给作者Marco Daniel写信要求增加双面排版的功能。3分钟后收到回信,承诺周末帮我搞一个出来。一日之后作者如约回信,附上了更新后的宏包、文档和style文件,说完全支持所有的定制功能很困难,不过单设一条框线可以,暂时只支持用rule画线。调试一下发现有些问题,后又往复几次,迅速解决,感叹作者之敬业及效率,实在是好人啊!

作者说后续再把用tikz和pstricks画线的功能补上,正式的新版本很值得期待!再次对Marco表示感谢!

分类: 技术相关 标签:

共射电路输入非线性失真的谐波分析

2010年11月7日 18 条评论

版权所有:未经本人许可,请勿以任何方式转载、复制或摘录本帖内容,引用必须注明出处,谢谢合作。

我们试对简单的共射电路输入非线性引起的失真做一分析。考虑如下基本电路: 阅读全文…

分类: 技术相关 标签:

基本共射放大器的一点粗浅分析兼答元增民教授

2010年11月6日 2 条评论

注:未经本人许可,请勿以任何方式转载、复制或摘录本帖内容,引用必须注明出处,谢谢合作。

近日元增民教授对我所提的有关质疑大为不满,并一定要出题给我做。其实这么明显的一个问题本来就没有什么多啰嗦的必要,但既然人家开口很多次了,而且大有我不做一下就不善罢甘休之势,我就只好这里做一下给元教授看看,如果有人看了觉得这个讨论有意义,也算是我没白忙活这半天。图见下,最简单的单管共射放大器,也可见元增民老师PPT第7~8页。 阅读全文…

分类: 技术相关 标签:

就“小信号放大器的缺陷”与元增民教授商榷

2010年10月16日 126 条评论

前日在哈尔滨举行2010电子高等教育学术研讨会,华师大一位老师参加了,会上听到了一个非常新颖而让人震惊的观点——电子学的基础理论:小信号放大器模型的缺陷。作者元增民教授多年奔走推广自己的研究成果,并且在大会上做了发言。本着奇文共欣赏的原则,这位老师回来将PPT转给家父,家父又转给了我。在这里可以看到元增民老师PPT阅读全文…

分类: 技术相关 标签:

用Ghostscript替换字体

2010年9月6日 没有评论
放这儿以防止自己忘了… 

1. 尽量使用Acrobat 7打印pdf,然后另存成eps。不要用Acrobat 9! 同样一个文件,7出来的eps 260k,9出来的10M… 无数的乱七八糟的信息,bs Adobe一记。
2. 假定原先的字体是TimesNewRomanPSMT.*之类的,嵌入之后可能变成ABCDEF+Times****,仅搜索/…..+Times.*? 然后替换成想要的字体,比如/Minion-Regular
3. 如果愿意,可以搜索%ADOBeginSubsetFont: …..+Times.* 然后匹配%ADOEndSubsetFont,把嵌入的字体去掉
4. 文件末还可能有/TJMAAA+TimesNewRomanPS-ItalicMT /Font _pdfUndefineResource ^J /N10 /Font _pdfUndefineResource之类的,也去掉
5. 用GSView看一下,保证字体已经替换好了
6. MikTeX/CTeX 2.8里面自带了一个gs…(这实在很让人迷惑),叫做mgs.exe
7. 如果想用这个,可以去MikTeXghostscriptbase相应目录里面去找Fontmap. 这里面定义了具体指向哪个Fontmap文件(默认是.aliases..)
8. 如果不想用,直接把它改个名字,然后把自己的gswin32c复制一份叫做mgs.exe
9. mgs -h查看文件搜索路径
10. 把Fontmap.atb复制一份,叫做Fontmap
11. 把Minion添进去,比如
/Minion-Regular            (morg____.pfb)    ;
/Minion-Bold            (mob_____.pfb)    ;
/Minion-Italic            (moi_____.pfb)    ;
/Minion-BoldItalic        (mobi____.pfb)    ;
12. 试着用XeTeX编译一下吧,应该可以看到替换嵌入的字体了,撒花~
13. 注意,GS的字体搜索路径要在环境变量FontResourceDir中定义。
14. 这种办法的缺点在于,可移植性有点差。

补充一些内容:在MacTeX环境下,可以新建 /usr/local/share/ghostscript/8.71/lib/Fontmap 来控制字体名称的匹配。用gs –help可以看到字体搜索路径。

分类: 技术相关 标签:

Times, or Times New Roman?

2010年2月3日 4 条评论
You may have been well aware of the notorious Microsoft versions of fonts: Arial the inferior imitation to the classic Helvetica, and Book Antiqua that resembles Palatino - if not, please refer to ARIAL vs HELVETICA and Wikipedia on Palatino. I would like to eradicate Arial from all my delivered works (GhostScript helped a lot). Now, for the ubiquitous TIMES NEW ROMAN, is there anything wrong?

阅读全文…

分类: 技术相关 标签:

XeTeX:结合MathTime和Adobe字体

2009年12月23日 5 条评论
忍了很久之后终于按捺不住诱惑,刚刚上手接触XeTeX。选择字体实在太方便了,想想以前每次重配LaTeX安装字体时候花的功夫就觉得很崩溃…

现在好了,不管什么中文字体英文字体统统都是拿过来直接用,再也不用自己去生成fontmap之类的了。兴奋了一阵子之后,觉得要是能把Arno Pro、Minion Pro之类的字体融合到MathTime的符号多好… 可惜fontspec包对于数学的支持实在平平,作者另外搞了一个unicode-math据说不错,可是难道我们折腾半天就是为了用Cambria Math?? 那么就自己来搞一下。 阅读全文…

分类: 技术相关 标签:

damn numerical error in Fortran

2007年4月21日 2 条评论
if we run the following simple code:
F90:

program foo
real*8 :: a = 0
integer :: n
do n=0,100,1
print*,a
a = a + 0.01
end do
end program foo

C:

#include <stdio.h>
void main(void)
{
double a = 0;
int n;
for(n=0; n<=100; n++)
{
printf(” %.10f n”,a);
a += 0.01;
}
}

we may find different outputs from different compilers:
Intel Fortran g95 Gcc
0.909999979659915
0.919999979436398
0.929999979212880
0.939999978989363
0.949999978765845
0.959999978542328
0.969999978318810
0.979999978095293
0.989999977871776
0.999999977648258
0.909999979659915
0.9199999794363976
0.9299999792128801
0.9399999789893627
0.9499999787658453
0.9599999785423279
0.9699999783188105
0.979999978095293
0.9899999778717756
0.9999999776482582
0.9100000000
0.9200000000
0.9300000000
0.9400000000
0.9500000000
0.9600000000
0.9700000000
0.9800000000
0.9900000000
1.0000000000
if we change that +0.01 to +0.01d0, it will improve the accuracy but still unsatisfactory
Ifort real*16 Ifort real*8 G95 real*8
0.910000000000000018943180357666733
0.920000000000000019151347174783950 0.930000000000000019359513991901167 0.940000000000000019567680809018384 0.950000000000000019775847626135601 0.960000000000000019984014443252818 0.970000000000000020192181260370035 0.980000000000000020400348077487251 0.990000000000000020608514894604468 1.00000000000000002081668171172169
0.910000000000001
0.920000000000001
0.930000000000001
0.940000000000001
0.950000000000001
0.960000000000001
0.970000000000001
0.980000000000001
0.990000000000001
1.00000000000000
0.9100000000000006
0.9200000000000006
0.9300000000000006
0.9400000000000006
0.9500000000000006
0.9600000000000006
0.9700000000000006
0.9800000000000006
0.9900000000000007
1.0000000000000007
so.. god bless fortran…
分类: 技术相关 标签: