2014-06-07 3 views
3

Maple expert Acer가 언젠가 전에 올린이 원본 코드를 사용하여 표현식을 이미지 파일로 내보낼 수있게합니다.크기를 자동으로 표현식 크기로 조정하는 등 이미지 파일로 표현식을 내보내는 방법은 무엇입니까?

잘 작동하지만이 문제를 해결하기 위해 이미지를 수정하는 방법을 생각할 수 없습니다. 이미지의 너비를 코드에 알려야합니다. 나는 라텍스 문서에서이 이미지들을 사용할 것입니다. 그러나 나는 이미지의 높이를 직접 알기조차하지 않는다. 왜냐하면 그것은 표현의 크기에 달려 있기 때문이다. 그래서 width = 700을 사용한다고하면 위와 아래에 너무 많은 공백이 생깁니다.

표현식은 ODE의 해결책이 될 것입니다. Maple에게 불필요한 빈 공백없이 자동으로 내보내는 이미지의 크기에 맞는 이미지를 생성하는 옵션을 사용할 수 있습니까? 정상적인 해상도로?

2 가지 예를 통해 문제를 알 수 있습니다. 우선 Acer 코드를 실행합니다. .eps 파일을 생성하도록 설정되지 않았습니다. 확장자를 다른 gif 또는 jpeg로 변경하여 다른 유형을 만듭니다.

ode:=diff(y(x),x)+(y(x))^2=a*x+b; 
r:=dsolve(ode,y(x)); 
fn:=".\\file2.eps"; 
exportexpression(r, fn, width=700, fontsize=12); 

restart: 

exportexpression:=proc(ee, filenm::string, 
         {width::posint:=640}, 
         {fontsize::posint:=11}) 
    uses plots; 
    plotsetup('eps','plotoutput'=filenm, 
      'plotoptions'=cat("width=",width)); 
    print(display(textplot([0,0,typeset(ee)], 
          'font'=["times","roman",fontsize]), 
       'axes'='none', 
       'view'=-0.5..0.5,'scaling'='constrained')); 
    fclose(filenm): 
    plotsetup('default'); 
    NULL; 

end proc: 

그러면 별도 실행 셀, I는 물품 (화상이라고 동일한 폴더에 생성되도록, 상기 코드는, 어떤 폴더에 먼저 저장 될 필요가있다) 그리고 이것은이 생산 이미지 파일 file2.eps는 :

Mathematica graphics

당신은 낭비 얼마나 많은 공백 볼 수 있습니다. width=300를 사용하도록 코드를 변경하는 것은 지금 내가 원하는 것이 아니다 어느

Mathematica graphics

을 생산하고 있습니다.

내가 정말로 원하는 것은 고정 된 해상도를 사용하여 eps 이미지를 생성하는 것이지만 위 또는 아래에 낭비되는 공백이 없어 지도록 잘라 냈습니다. 수축에 맞춰서 전화를 걸었습니까? ie eps 경계 상자는 표현식을 단단히 묶어야합니다.

나는 width = 7in을 사용하는 방법을 모르므로 이제는 픽셀을 사용합니다. 나는 나중에이 이미지들을 라텍스로 읽을 것이고 필요할 경우 라텍스 \includegraphics[scale=] 명령을 사용하여 그들을 스케일 할 수 있습니다.

Windows에서 Maple 18.01을 사용 중입니다.

Maple ps plot

Maple plotsetup

+0

표현식이 일반적으로 차지할 수있는 문자 행 수를 파악하는 방법 (중첩 된 분수이거나 줄 바꿈 등)을 알 수는 없습니다.내가 기억하지 못하는 이유는 - 텍스트 플롯의 내 보낸 이미지를 통과하는 관련 프로세스 대신 표현식에 대해 Maple의'latex() '명령을 실행할 수없는 이유는 무엇입니까? – acer

+0

Maple latex를 실행하는 @acer는 여러 가지 이유로 작동하지 않습니다. 먼저, Maple의 출력과 Mathematica의 다른 출력을 하나의 라텍스 문서로 결합해야합니다. 나중에 다른 출력을 추가 할 수 있습니다. 현재 저는 물건을 복사하고 작은 이미지를 만들어 수동으로 하나의 라텍스 문서로 결합했습니다. Mathematica를 사용하면 eps로 내보내기 명령을 사용할 수 있습니다. 바운딩 박스는 낭비되는 공백없이 표현식을 감싸는 올바른 크기로 나오기 때문입니다. Maple을 사용하여 동일한 작업을 수행하기를 바랬습니다. 그런 다음 모든 이미지를 하나의 문서로 결합하는 스크립트를 작성할 수 있습니다. – Nasser

+0

Maple 내 보낸 이미지를 가져 와서 콘텐츠 주위의 테두리 상자를 추가/수정하고 Inksscape를 시도했지만 작동하지 않는 외부 이미지 프로그램을 찾을 수 있는지 확인하려고합니다. 수학적 표현을 이미지로 내보내는 것이 메이플에서 그다지 어렵지는 않지만 그렇습니다. – Nasser

답변

2

여기서 가장 큰 문제는 당신의 eps 파일이 너무 자르기 소프트웨어가 작동하지 않습니다, 검은 색 테두리를 가지고 있다는 것입니다. 국경없는 포스트 스크립트 파일을 출력 한 다음 system 명령을 사용하여 ps2eps을 호출하여 이미지 자르기를 제안합니다. 이 경우 절차는 다음과 같습니다.

exportexpression:=proc(ee , filenm :: string , { width :: posint := 640 } , 
               { fontsize :: posint := 11 }) 

    uses plots; 

    local f : 

    f := cat(filenm , ".ps") : 

    plotsetup('ps' , 'plotoutput' = f , 'plotoptions' = cat("width = " , width , 
                     ", noborder")) : 

    print(display(textplot([ 0 , 0 , typeset(ee) ] , 
      'font' = [ "times" , "roman" , fontsize ]) , 'axes' = 'none' , 
          'view' = -0.5 .. 0.5 , 'scaling' = 'constrained')) : 

    fclose(f) : 

    system(cat("ps2eps -B -f " , f)) : 

    plotsetup('default') : 

    return : 

end proc : 

확장명이없는 파일 이름을 사용하여 이것을 호출해야합니다.