作者tonygump (阿尼)
看板LaTeX
標題Re: [問題] (更新)scientific workplace 輸出問題 beamer
時間Mon Apr 17 20:39:25 2017
sorry之前說的好像有錯,這邊整理一下我所看到的,希望能跟板上前輩討論一下。
1. 關於你所說SW(與SWP這裡統稱SW)的圖形預覽,以及圖形縮放很方便這點,我非常同意
阿。而且,由於我後來沒有用這個功能,我都忘記這點了!SW的圖片安插與處理算是他的
一個非常大的優點。它應該(?)是唯一一個軟體可以讓使用者直接拉圖進去SW視窗裡來插
入圖形的。還不只如此,它也會自動判斷圖片大小並且依照目前圖片與視窗的相對大小自
動調整輸出的PDF圖片大小!還不只如此,使用者還可以直接用拉圖的方式將圖片放大縮
小。而且他還可以預覽!這些都是SW相當便利的地方,這比LYX或其他所見近乎所得的軟
體還來的方便多了阿。由於你的當頭棒喝,我之後也想再來改良我的方法,沒錯,還是會
希望能看到圖,而且若能以拉圖的方式放大縮小,就更好了!
2. 有一類型的環境是特別的,包括beamer使用的frame,常見的listing,還有minted,
等等。這些指令通常是這樣\begin{frame}...\end{frame},或\begin{listing}...
\end{listing}此類型環境叫做脆弱環境(fragile environment),稍後會討論。脆
弱環境的\begin{...}及\end{...}指令在檔案中必須單獨存在一行,前後不能有任何
文字,前面也不能縮排,但可以接%。請見連結
[
http://www.tug.org/pipermail/pstricks/2010/008307.html],[(d)
https://books.google.com.tw/books?id=xgbapN_8aTwC&pg=PA226&lpg=PA226&dq=%5Cend%7Bframe%7D%25+on+its+own+line&source=bl&ots=PRVzCpsOrN&sig=9c0O2RoMiCRaQ1gNHF8iJ2cBrAQ&hl=zh-CN&sa=X&ved=0ahUKEwiU0urs_vbSAhXHEbwKHcNAD28Q6AEINDAD#v=onepage&q=%5Cend%7Bframe%7D%25%20on%20its%20own%20line&f=false||
連結二]。
Beamer must collect the contents of a frame before it will be typeset. And
the end of the contents is reached if the current line is \end{frame},
without additional characters before and after – Herbert Nov 11 '15 at 21:22
One warning: be very careful to put the end tag for the fragile environment
(listings, minted, etc) on its own line. In particular, the closing brace of
the macro being defined to hold the fragile content should come on a separate
line from the end of the environment. The terrifying things LaTeX does to
construct some of these pieces of fragile content seems to depend on the end
of the environment being on its own line. The error messages that it produces
when this is not the case are, as always in LaTeX, completely useless.
因此這裡我之前所說的\end{...}後面不能接%是錯誤的。抱歉。是可以接%,但不能加其
他東西。而且蠻多人會加%,以避免後面接了雙元空白而不知道(?),並且SW也會在這些環
境指令後自動加%。
但為何我們error會停在這行呢?這是下面要討論的。
1. 在這類型脆弱環境中出錯,若是fragile選項設false(這是預設值),則error會停在
\end{環境}那行。我們就是遇到這情況,停在\end{frame}那行。只有fragile=True,
error才會停在正確的行數。好像是因為,此類型環境,比如frame,會先把start以及end
中間的東西先全部讀下來,讀完後再來排,這與一般TeX模式邊讀邊排是不一樣的。因此
我以為錯誤停在\end{frame},但其實不是,若fragile設false,則看不出錯在哪行,只
知道這個frame環境出錯。請參考
[
https://tex.stackexchange.com/questions/136240/drawbacks-of-using-fragile-frames-in-beamer||
連結]及
[
http://tex.stackexchange.com/questions/116940/undefined-control-sequence-endframe||
連結二]。
2. 接著就來解釋脆弱環境(fragile environment)可能會出錯的狀況。此類型環境中,若
用上一些指令是在不同頁面間挪用變數,如\sectiontitle{這是第一節},則這一行的內
容會自動拿到目錄頁。在這類型挪用變數的指令裡,若有其他運算,如\sectitle{這是第
\variable節},則有時候必須要加上\protect這指令。好像是因為脆弱環境中的變數挪用
以及運算在不同系統有不同的做法。這也正是脆弱環境稱為脆弱的原因。請參考
[
http://tex.stackexchange.com/questions/4736/what-is-the-difference-between-fragile-and-robust-commands||
連結]。如同回文者所說,同事的檔案拿來自己的電腦就編譯不了,然後才看到有行註解
說,若編譯不了,這邊要加\protect。所以有可能是你用了這類型指令,可能要加
\protect指令?當然只是猜測。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.219.46
※ 文章網址: https://webptt.com/m.aspx?n=bbs/LaTeX/M.1492432773.A.D97.html