พื้นที่เก็บข้อมูลนี้ประกอบด้วยรายการเครื่องมือ แนวปฏิบัติที่ดีที่สุด เคล็ดลับ และแนวทางอื่นๆ ที่เราพบว่ามีประโยชน์/สำคัญเมื่อเขียนบทความทางวิทยาศาสตร์ บางอย่างเป็นเรื่องของสไตล์ (เรามักจะปฏิบัติตามแนวทางของ Chicago Manual of Style) และเราทราบดีว่าคนอื่นๆ ชอบทำสิ่งที่แตกต่างออกไป แต่เราแสดงรายการไว้เพื่อให้มีแนวทางที่สอดคล้องกัน คุณสามารถปรับเปลี่ยน เพิกเฉย หรือแม้แต่ท้าทายทุกสิ่งที่เราเขียนได้ตามใจชอบ!
การเรียงพิมพ์เป็นองค์ประกอบของข้อความโดยการจัดประเภท เช่น ตัวอักษรและสัญลักษณ์ ส่วนใหญ่มันเป็นเรื่องของสุนทรียภาพ แต่การออกแบบตัวอักษรที่สวยงามทำให้เอกสารง่ายขึ้นและน่าอ่านยิ่งขึ้น ช่วยให้ผู้อ่านเข้าถึงข้อความได้
เราแสดงรายการเคล็ดลับและเครื่องมือในการเรียงพิมพ์ด้านล่างเพื่อช่วยคุณในการเขียนเอกสาร เคล็ดลับบางประการเป็นเคล็ดลับเฉพาะสำหรับ LaTeX แต่เคล็ดลับอื่นๆ อาจนำไปใช้ได้ไม่ว่าคุณจะใช้อะไรก็ตาม
เมื่อเขียนเอกสาร LaTeX ให้ใส่หนึ่งประโยคต่อบรรทัดในไฟล์ต้นฉบับของคุณ เขียน:
This is my first sentence.
This is the second one.
และไม่:
This is my first sentence. This is the second one.
เหตุผลหลักคือการควบคุมแหล่งที่มาและการทำงานร่วมกัน: เมื่อดูการเปลี่ยนแปลงของการคอมมิต จะง่ายกว่ามากในการระบุประโยคที่เปลี่ยนแปลงหากแต่ละประโยคแยกจากกัน เพื่อนร่วมงานของคุณจะสามารถเห็นการเปลี่ยนแปลงได้ง่ายขึ้น
ข้อดีอีกประการหนึ่งคือ คุณจะสามารถระบุข้อผิดพลาดได้ดีขึ้นเมื่อคอมไพเลอร์ LaTeX ของเราระบุหมายเลขบรรทัดเท่านั้น
เราจะอ้างอิงถึงการใช้อักษรตัวพิมพ์ใหญ่สองประเภทด้านล่าง:
ใช้รูปแบบชื่อเรื่องสำหรับทุกหัวข้อ ส่วนย่อย ฯลฯ เพื่อช่วยให้คุณใช้คำที่ถูกต้องให้เป็นประโยชน์ มีเว็บไซต์ที่มีประโยชน์: capitalizemytitle.com
บางครั้ง ชื่อของวัตถุ (เช่น รูปภาพ ตาราง กราฟ หรืออัลกอริทึม) และหมายเลขอ้างอิงจะถูกแบ่งออกเป็นสองบรรทัด ตัวอย่างเช่น ชื่อของวัตถุอาจอยู่ในบรรทัดเดียว ในขณะที่หมายเลขอ้างอิงปรากฏในบรรทัดถัดไป
เพื่อให้แน่ใจว่า LaTeX เก็บทั้งชื่อของออบเจ็กต์และการอ้างอิงไว้ในบรรทัดเดียวกัน คุณสามารถใช้อักขระ ~
ระหว่างออบเจ็กต์และข้อมูลอ้างอิงได้ การใช้อักขระเครื่องหมายตัวหนอน ~
ด้วยวิธีนี้ คุณสามารถหลีกเลี่ยงการขึ้นบรรทัดอย่างอึดอัด และรักษาการจัดรูปแบบที่สอดคล้องกันสำหรับชื่อวัตถุและหมายเลขอ้างอิงในเอกสาร LaTeX
Figure~ ref { fig:example } displays that the project ...
เพื่อให้แน่ใจว่าคุณไม่ลืมใช้อักขระตัวหนอน คุณสามารถทำให้กระบวนการง่ายขึ้นโดยการสร้างคำสั่งแบบกำหนดเองสำหรับระบบอัตโนมัติ นี่คือตัวอย่าง:
newcommand { refalg }[1]{Algorithm~ ref {# 1 }}
newcommand { refapp }[1]{Appendix~ ref {# 1 }}
newcommand { refchap }[1]{Chapter~ ref {# 1 }}
newcommand { refeq }[1]{Equation~ ref {# 1 }}
newcommand { reffig }[1]{Figure~ ref {# 1 }}
newcommand { refsec }[1]{Section~ ref {# 1 }}
newcommand { reftab }[1]{Table~ ref {# 1 }}
เมื่อกำหนดคำสั่งเหล่านี้แล้ว แทนที่จะเขียน:
Figure~ ref { fig:example }
เพียงพิมพ์:
reffig {fig:example}
(ตัวอย่างที่สมบูรณ์)
แถบหนังสือช่วยให้คุณสร้างโต๊ะที่สะอาดและสวยงามได้
usepackage { booktabs }
% --
begin { table }
centering
begin { tabular }{lcc}
toprule
& multicolumn {2}{c}{Data} \ cmidrule (lr){2-3}
Name & Column 1 & Another column \
midrule
Some data & 10 & 95 \
Other data & 30 & 49 \
addlinespace
Different stuff & 99 & 12 \
bottomrule
end { tabular }
caption {My caption.}
label { tab-label }
end { table }
โดยทั่วไป ให้หลีกเลี่ยงการใช้เส้นแนวตั้งในตารางของคุณ หากคุณต้องการจัดกลุ่มคอลัมน์ ให้ทำในส่วนหัวโดยใช้ cmidrule
คุณยังสามารถแทนที่เส้นแนวนอนด้วยการเว้นวรรคได้ โดยใช้ addlinespace
หัวคอลัมน์ควรใช้ตัวพิมพ์ใหญ่ตามรูปแบบประโยค (ดู http://www.chicagomanualofstyle.org/15/ch13/ch13_sec019.html)
คุณสามารถดูคำแนะนำเพิ่มเติมเกี่ยวกับการจัดรูปแบบตารางได้ที่นี่: http://www.inf.ethz.ch/personal/markusp/teaching/guides/guide-tables.pdf นี่คือ GIF ที่ดีที่แสดงให้เห็นกฎบางส่วนเหล่านี้:
(ตัวอย่างที่สมบูรณ์)
ใช้แพ็คเกจ siunitx เพื่อจัดรูปแบบตัวเลข สกุลเงิน หน่วย ฯลฯ ทั้งหมด:
usepackage { siunitx }
% ---
This thing costs SI {123456}{ $ }.
There are num {987654} people in this room, SI {38}{ percent } of which are male.
คุณยังสามารถใช้มันปัดเศษตัวเลขได้:
usepackage { siunitx }
% ---
sisetup {
round-mode = places,
round-precision = 3
} %
You can also round numbers, for example num {1.23456}.
สุดท้ายนี้ จะช่วยให้คุณจัดตำแหน่งตัวเลขในตารางได้ดียิ่งขึ้น:
usepackage { booktabs }
usepackage { siunitx }
% ---
begin { table }
centering
begin { tabular }{lS}
toprule
Name & {Value} \ % headers of S columns have to be in {}
midrule
Test & 2.3456 \
Blah & 34.2345 \
Foo & -6.7835 \
Bar & 5642.5 \
bottomrule
end { tabular }
caption {Numbers alignment with texttt { siunitx }.}
end { table }
(ตัวอย่างที่สมบูรณ์)
เมื่อเขียนสมการ การเขียนตัวแปร เวกเตอร์ เมทริกซ์ ฯลฯ ที่สอดคล้องกันและสม่ำเสมอจะเป็นประโยชน์ ช่วยให้ผู้อ่านระบุสิ่งที่คุณกำลังพูดถึงและจดจำความหมายของสัญลักษณ์แต่ละตัวได้
เราเสนอกฎต่อไปนี้สำหรับการเขียนคณิตศาสตร์:
$x$
)$mathbold{x}$
)$mathbold{X}$
)$X$
) คำสั่ง mathbold
มาจากแพ็คเกจ fixmath
และคล้ายกับ boldmath
หรือ bm
ยกเว้นว่าสัญลักษณ์ทั้งหมดเป็นตัวเอียง แม้กระทั่งตัวอักษรกรีกด้วย (แพ็คเกจอื่นๆ จะไม่ทำให้ตัวอักษรกรีกเป็นตัวเอียง)
เมื่อเพิ่มดัชนีหรือเลขยกกำลังให้กับตัวแปร ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มดัชนีหรือเลขยกกำลังไปนอกการกำหนดรูปแบบของตัวแปร เช่น เขียน $mathbold{x}_i$
ไม่ใช่ $mathbold{x_i}$
เนื่องจากเรามักจะอ้างถึงตัวแปร เราขอแนะนำให้กำหนดคำสั่งสองคำสั่งต่อไปนี้:
renewcommand { vec }[1]{ mathbold {#1}}
newcommand { mat }[1]{ mathbold {#1}}
จากนั้นคุณสามารถใช้ $vec{x}$
และ $mat{X}$
ในเอกสารของคุณ หากคุณตัดสินใจที่จะเปลี่ยนวิธีจัดรูปแบบเมทริกซ์ คุณเพียงแค่ต้องเปลี่ยนคำสั่ง mat
แล้วคำสั่งจะอัปเดตทั้งเอกสาร
นอกจากนี้เรายังแนะนำให้กำหนดคำสั่งสำหรับตัวแปรที่คุณใช้บ่อยที่สุด ตัวอย่างเช่น หากคุณใช้ vec{x}
และ mat{X}
บ่อยครั้ง ให้พิจารณากำหนดคำสั่งเหล่านี้:
newcommand { vx }{ vec {x}}
newcommand { vX }{ mat {X}}
จากนั้นคุณสามารถเขียนสมการที่มีขนาดกะทัดรัดมากขึ้นได้: $vx^T vy = vZ$
โปรดทราบว่าคุณควรจัดสไตล์ตัวแปรให้สัมพันธ์กับประเภทของตัวแปรเสมอ ตัวอย่างเช่น องค์ประกอบ $i$th ของเวกเตอร์ vx
คือ x_i
ไม่ใช่ vx_i
(มันคือตัวเลข) ในทำนองเดียวกัน หากคุณมีเมทริกซ์ vX
สามารถเรียกคอลัมน์ที่ i vx_i
(มันเป็นเวกเตอร์ดังนั้นจึงเป็นตัวหนา) และอีกอันหนึ่งถ้าองค์ประกอบ x_{ij}
ไม่ใช่ vX_i
และ vX_{ij}
ใช้ (...)
เพื่อเขียนสมการอินไลน์ คุณยังสามารถใช้ $...$
ได้ แต่มันเป็นคำสั่ง TeX และให้ข้อความแสดงข้อผิดพลาดที่ไม่ชัดเจนมากขึ้น
หากต้องการเขียนสมการที่มีศูนย์กลางบนบรรทัดของตัวเอง ห้ามใช้ $$...$$
(ซึ่งเป็นหนึ่งในบาปร้ายแรงของการใช้ LaTeX) ใช้งานได้แต่ให้ระยะห่างผิด ใช้ begin{equation*}
หรือ begin{align*}
แทน
(ตัวอย่างที่สมบูรณ์)
สำหรับเอกสารที่มีความยาว เช่น วิทยานิพนธ์ระดับปริญญาโทหรือปริญญาเอก การมีข้อมูลอ้างอิงด้านหลังในบรรณานุกรมอาจมีประโยชน์ เพื่อแสดงตำแหน่งที่มีการอ้างอิงข้อมูลอ้างอิง โดยเพิ่มตัวเลือก backref=page
ให้กับแพ็คเกจ hyperref
:
usepackage [ backref=page ]{ hyperref }
คุณสามารถปรับแต่งลักษณะที่ปรากฏของการอ้างอิงด้านหลังได้ด้วยคำสั่งต่อไปนี้:
renewcommand *{ backref }[1]{}
renewcommand *{ backrefalt }[4]{{ footnotesize [ %
ifcase #1 Not cited. %
or Cited on page~#2 %
else Cited on pages #2 %
fi %
]}}
ตัวเลขเป็นองค์ประกอบที่สำคัญในรายงานใดๆ เนื่องจากสามารถสื่อสารผลลัพธ์ของคุณกับผู้อ่านได้ คุณควรพิจารณาว่าข้อมูลในแต่ละรูปบอกผู้อ่านของคุณอย่างไร และมีข้อมูลเพียงพอที่จะสนับสนุนข้อความของคุณ ไม่ใช่มากกว่านั้น ตัวอย่างเช่น หากคุณต้องการแสดงรูปแบบเป็นจุด 2d (มีสองคลัสเตอร์ที่แยกกันอย่างดี) ไม่จำเป็นต้องใส่เครื่องหมายและค่าบนแกน (มาตราส่วนไม่สำคัญจริงๆ)? ตัวเลขไม่ควรซับซ้อนเกินไป จะดีกว่าถ้ามีหลายร่างที่สื่อข้อความหนึ่งหรือสองข้อความ (วิธี A ดีกว่า B แต่มาบรรจบกันช้ากว่า) ดีกว่าการมีร่างยุ่งๆ ตัวเดียว
ตัวเลขบางชิ้นเป็นตัวเลขที่ทำด้วยมือ เช่น เพื่ออธิบายระบบหรือให้ภาพรวม ในขณะที่บางชิ้นเป็นตัวเลขที่ขับเคลื่อนด้วยข้อมูล เช่น เพื่อแสดงข้อมูลบางส่วน ตัวเลขที่ขับเคลื่อนด้วยข้อมูลเหล่านี้ควรได้รับการเขียนสคริปต์ให้มากที่สุด: ตามหลักการแล้ว หากข้อมูลของคุณเปลี่ยนแปลง คุณควรเรียกใช้สคริปต์เพียงครั้งเดียวเพื่ออัปเดตตัวเลขของคุณ โดยไม่มีการแทรกแซงอื่นใด (การตั้งค่ามุมมอง การซูม การบันทึก/การครอบตัดตัวเลข ฯลฯ) ในทำนองเดียวกัน หากข้อมูลที่ต้องใช้ในการสร้างตัวเลขใช้เวลามากกว่าวินาทีในการสร้าง คุณควรมีสคริปต์แรกที่คำนวณและบันทึกข้อมูล และสคริปต์ตัวที่สองที่ลงจุด ด้วยวิธีนี้ คุณจะประหยัดเวลาได้มากในการทำงานกับโครงเรื่อง: คุณไม่ต้องรอหลังจากการเปลี่ยนแปลงเล็กๆ น้อยๆ แต่ละครั้งเพื่อดูผล
นอกจากนี้เรายังแนะนำให้บันทึกคำสั่งที่ใช้ในการสร้างฟิกเกอร์ในไฟล์ LaTeX เช่น ความคิดเห็นเหนือรูปภาพ โดยเฉพาะอย่างยิ่งหากสคริปต์ต้องมีอาร์กิวเมนต์
documentclass { article }
usepackage { graphicx }
begin { document }
% python figure_example.py --save ../../examples/figure/figure.eps
begin { figure }
centering
includegraphics {figure.eps}
caption {Example of a sigmoid function}
end { figure }
end { document }
หากเป็นไปได้ รูปภาพทั้งหมดควรใช้แบบอักษรเดียวกันสำหรับป้ายกำกับ แกน ฯลฯ โดยเฉพาะอย่างยิ่ง คุณไม่ควรมีรูปภาพตัวหนึ่งที่มีป้ายกำกับ/เครื่องหมายขนาดใหญ่ และอีกรูปหนึ่งที่มีขนาดเล็กกว่า ทางออกหนึ่งในการบรรลุเป้าหมายนี้คือการกำหนดขนาดของรูปภาพของคุณในสคริปต์ที่สร้างขึ้น และไม่ปรับขนาดใหม่ในเอกสารของคุณ (เช่น อย่าเปลี่ยนการตั้งค่าความกว้างของรูปภาพเป็น textwidth
ในเอกสาร LaTeX ของคุณ)
เพื่อให้ตัวเลขสอดคล้องกัน เราขอแนะนำให้ใช้สคริปต์ตัวช่วยที่คล้ายคลึงกับ plot_utils.py
ของเรา เมื่อใช้สคริปต์นี้ คุณเพียงแค่ต้องเรียกใช้ฟังก์ชัน figure_setup()
เพื่อกำหนดขนาดทั้งหมด จากนั้นสร้างตัวเลขตามขนาดที่คุณต้องการ แล้วบันทึก
import argparse
import matplotlib . pyplot as plt
import numpy as np
import plot_utils as pu
def main ( args ):
x = np . linspace ( - 6 , 6 , 200 )
y = 1 / ( 1 + np . exp ( - x ))
pu . figure_setup ()
fig_size = pu . get_fig_size ( 10 , 5 )
fig = plt . figure ( figsize = fig_size )
ax = fig . add_subplot ( 111 )
ax . plot ( x , y , c = 'b' , lw = pu . plot_lw ())
ax . set_xlabel ( '$x$' )
ax . set_ylabel ( '$ \ sigma(x)$' )
ax . set_axisbelow ( True )
plt . grid ()
plt . tight_layout ()
if args . save :
pu . save_fig ( fig , args . save )
else :
plt . show ()
if __name__ == '__main__' :
parser = argparse . ArgumentParser ()
parser . add_argument ( '-s' , '--save' )
args = parser . parse_args ()
main ( args )
เราขอแนะนำให้บันทึกตัวเลขทั้งหมดในรูปแบบ EPS
ด้วยวิธีนี้ คุณสามารถใช้ทั้ง latex
และ pdflatex
เพื่อสร้างเอกสารของคุณและเพลิดเพลินกับกราฟิกเวกเตอร์และข้อความที่สวยงาม
ในเดือนกันยายน 2558 บน Mac OS X และ Python, Matplotlib และ TeX Live เวอร์ชันล่าสุด คุณภาพจะสูญเสียไปเมื่อพิมพ์ตัวเลขที่บันทึกโดยตรงเป็น PDF
จาก Matplotlib จะชัดเจนเมื่อพิมพ์บนกระดาษจริง ลองด้วยตัวคุณเอง นี่เป็นอีกเหตุผลที่ชอบบันทึกรูปภาพที่สร้างโดย Matplotlib ใน EPS
หากคุณต้องการเก็บเฉพาะรูปภาพในเวอร์ชัน PDF ให้ใช้เครื่องมือบรรทัดคำสั่ง epspdf
--- ผลลัพธ์ PDF ที่ได้จะดีกว่าที่ Matplotlib สร้างขึ้นโดยตรง
เพื่อความสมบูรณ์ โปรดทราบว่ายังมีแบ็กเอนด์ Matplotlib อีกตัวหนึ่ง นั่นคือ PGF ที่ให้ผลลัพธ์ที่เหนือกว่าเล็กน้อย อย่างไรก็ตาม ณ เดือนกันยายน 2558 ผลลัพธ์ PDF จะมีน้ำหนักเป็นสองเท่าของไฟล์ที่ได้รับจากแบ็กเอนด์เริ่มต้นและ epspdf
Matplotlib แม้ว่าจะใช้คุณสมบัติเลย์เอาต์ที่แคบ แต่ก็เพิ่มพื้นที่สีขาวในระยะขอบมากเกินไปในบางครั้ง เครื่องมือบรรทัดคำสั่งที่ดีในการครอบตัด PDF ไปยังกรอบขอบเขตที่แคบที่สุด pdfcrop
หากคุณมีจุดข้อมูลหลายจุดในพล็อตของคุณ ไฟล์ EPS ที่ได้อาจมีขนาดใหญ่มาก คุณสามารถบันทึกรูปภาพของคุณเป็นไฟล์ PNG ได้ แต่จะทำให้ข้อความไม่ชัดเจน วิธีแก้ไขคือการแรสเตอร์บางส่วนของรูปภาพของคุณ เช่น เพื่อบอก matplotlib
ว่าจุดข้อมูลจะต้องถูกเรนเดอร์เป็นบิตแมปในไฟล์ EPS ในขณะที่ส่วนที่เหลืออยู่ในรูปแบบเวกเตอร์
คุณสามารถส่งคีย์เวิร์ด rasterized=True
ไปยังฟังก์ชันการวางแผนส่วนใหญ่ใน matplotlib
คุณยังสามารถใช้เลเยอร์ต่างๆ โดยใช้ zorder
และบอกให้ matplotlib
แรสเตอร์เลเยอร์ทั้งหมดที่อยู่ใต้ zorder
ที่ระบุโดยใช้เมธอด set_rasterization_zorder()
ของแกน ดูfigure_rasterized_example.pyและhttp://matplotlib.org/examples/misc/rasterization_demo.htmlสำหรับตัวอย่างการแรสเตอร์