2011-04-08 1 views
2

각 초기화 Cell이 임의의 이름으로 자체 .m- 파일에 자동 저장되는 노트를 만드는 방법이 있습니까?하나의 노트에 두 개의 초기화 셀이 각각 별도의 .m- 파일로 자동 저장됩니까?

P. 질문은 Wolfram Research Inc.에서 개발 한 Mathematica 프로그램과 관련이 있습니다. 수학 또는 수학 문제가 아닙니다.

+0

나는 그 답을 모른다. 그러나 단지 호기심이있다. 왜 그렇게하고 싶습니까? –

+0

할 수 있다고 생각하지 않습니다. 아마도 코드를 평가하고 고유 한 파일에 작성하는 초기화 셀을 작성할 수는 있지만 초기화 셀을 평가할 때마다 발생하며 파일이 저장 될 때마다 발생하지는 않습니다. –

+0

@belisarius 이유는 MathLink를 통해 슬레이브 커널을 사용하기위한 어플리케이션을 개발하고 있기 때문입니다. 해당 커널에 대해 별도의 초기화 파일이 필요합니다. ** ** ** ** 노트북에 모든 코드를 포함시키는 것이 매우 편하다고 느낍니다. –

답변

1

다음 접근 방식이 만족스럽지 않은지 잘 모르겠다. 개발 용 노트북에있는 초기화 셀만 포함 된 소형 노트북을 만드는 방법을 원했습니다. 다음 코드는 현재 노트북의 초기화 셀을 하나의 새 노트에 기록하고 .m 파일을 부작용으로 자동 저장하지만 각 초기화 셀에 대해 별도의 노트와 .m 파일을 생성하도록 쉽게 조정할 수 있습니다.

In[162]:= nbToExtract = SelectedNotebook[] 

In[163]:= 
extractInitializationCells[nb_] := 
Block[{nbNew = CreateDocument[], count = 0}, 
    (SelectionMove[nb, Next, Cell]; 
    While[NotebookRead[nb] =!= {}, (If[InitializationCell /. 
      Options[NotebookSelection[nb], InitializationCell], 
     (count++; 
     NotebookWrite[nbNew, NotebookRead[nb]]), {}]; SelectionMove[nb, Next, Cell])]; 
    Print[ToString[count] <> " initialization cell(s) found"]; 
    CurrentValue[nbNew, AutoGeneratedPackage] = Automatic; 
    NotebookSave[nbNew, fn]; 
    NotebookClose[nbNew]; 
    Clear[nbNew](* just in case *))] 

extractInitializationCells[nbToExtract] 

이것은 단지 기능 extractInitializationCells가 호출 한 셀 아래 초기화 세포를 추출한다. 그리고 자동 생성 패키지 메커니즘을 사용하는 것에 대한 이전주의 사항에 동의합니다. 또한 CurrentValue은 역 호환성을 통해 무기한으로 보호되지 않지만 지금까지 여러 주요 Mathematica 버전에서 살아 남았습니다.

+0

오, 그리고 @ BrettChampion의 버튼이나 그 비슷한 아이디어는이 방법에 필요합니다. 저장시 자동으로 실행되지 않습니다. 아마 각 저장에 이것을 달리기 위하여 정면 끝을 변경하는 방법이있다. 어떻게해야할지 모르겠다. – fairflow