LaTeX 代碼有沒有統一的規範?
請教 LaTeX 的代碼是否有統一的規範?
例如,對於數學公式:a,b代表兩個變數,它們相乘的時候一般直接寫為ab了,在寫LaTeX代碼的時候要不要在a和b之間打個空格?又比如數字2和圓周率pi的乘,2和pi之間要不要敲一個空格?希臘字母
ho和pi相乘呢?相關問題:
LaTeX源代碼編輯時是自己手動換行還是依賴編輯器提供的自動換行(line wrapping)功能?
有什麼比較好的 LaTeX 模板值得學習?
----其實是把以前的答案刪掉了----
你關注的其實是空格問題。讓我們來複習一下C語言好了。
我們給出第一種風格:
#include &
int main (void) {
printf("Hello");
return 0;
}
下面是第二種風格:
#incude&
int main (void)
{
printf("Hello");
return 0;
}
這兩種風格,差別:tab寬度,括弧位置。
只要你願意,在不違反語法規則的情況下,C語言裡面可以隨便寫。
C裡面的白字元,就是這樣。
在TeX裡面,白字元是可編程的,也就是通過catcode。
這種語言特性導致很多人不了解TeX裡面的空格是什麼行為。
我們看兩個不同寫法的代碼:
%% style 1
$$
E = m c^2
$$
%% style 2
$$E=mc^2$$
這兩種風格,差別在換行和空格上。但是效果是一樣的。
(第一個通常是我自己寫的,第二種是給別人弄的,當然要對自己好一點了)
因為在數學環境下空格一般不會被轉為表示space的glue。
所以,在數學模式下一般都是通過下面的一些命令來調整間距的:
% quad
% ,
% &>
% ;
% !
這幾個你自己去查什麼意思。其實要是好習慣,在The TeXbook的第18章 Fine Points of Mathematics Typing裡面就講了不少。
有很多人不注意的是math italic和text ialic:
%% math italic
$$
BMI = Weight / Height
$$
%% text italic
$$
{
m BMI} = {it Weight} / {it Height}
$$
你能看到的效果,就是math italic的letter之間的間距略大。這種誤用在LaTeX裡面也存在。
我給你簡單解釋一下,在文本中,一般將連續的letter視作word。
在在數學模式下,則將letter視作Ord,這相當於數學公式裡面的某個變數或者常量。
這種處理在使得在$ c = ab $的時候,a與b之間能夠出現一定的距離而視作a乘b。
TeX的公式,不同的部分被視作不同於文本的8種數據結構:
------------------------------------------
| Type | Meaning |
-------+----------------------------------
| 1 | Ord (ordinary) |
| 2 | Op (large operator) |
| 3 | Bin (binary operation) |
| 4 | Rel (relation) |
| 5 | Open (opening) |
| 6 | Close (closing) |
| 7 | Punct (punctuation) |
| 8 | Inner (a delimited subformula) |
-------+----------------------------------
其實能把上面的做好的,就已經能排出不錯的公式了。
但前提是得把那一章全過一遍。否則,算我白說。
順便提一個,你們自己領會我下面例子裡面的重點是什麼:
%% 下面式子並無實際意義
$$
left{ {pi over
u} middle| {pi over
u}
ight}
$$
----2017/09/19更新----
恢復了答案。
這個實際上是一個代碼規範問題吧.自己寫得順手,看著舒服就好了吧.
減少自定義的宏,我只在初學的時候學過宏的定義,往後從來沒有過;另外,減少引用不標準的宏包,用圈內人用的多的宏包;其他盡量讓公式的代碼結構和公式有比較好的匹配。比較好的實踐。我現在已經放棄直接編輯代碼使用texmacs了,有一定編程基礎的人可以將它定製更加合用。一般輸出latex代碼之後,做的改動就很少了。
LaTex的公式代碼是有一定的規範的,但就相乘問題來看是不需要空格的,遇到類似的問題其實只要把代碼敲出來,編譯以後系統自然會提示你是否出現錯誤了,這大概是最好的試錯方法了。如果入門的話比較建議看一下《一份不太簡短的LaTex介紹》,在我最近寫的一篇文章里有這本書的雲盤鏈接,還有一些基本的LaTex入門問題,可以參考
推薦閱讀:
※編程中如何給變數命名?有哪些規範的做法值得學習借鑒?
※在函數中需要用到大量參數時如何傳參可以更簡潔合理?
※在寫代碼時,你們對變數的命名都是按照什麼規則,如何使變數名變成別人一看就懂的?
※當開發同事辭職,接手到垃圾代碼怎麼辦?