<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 第?29?章?ConTeXt 入門指南 **目錄** [](ch29.html#id3138032) [TeX 簡介](ch29s02.html) [為什么要用 TeX](ch29s02.html#id3137416) [順流、逆流](ch29s02.html#id3137440) [LaTeX](ch29s03.html) [部署 LaTeX](ch29s03.html#id3138143) [安裝宏包](ch29s03.html#id3138323) [學習 LaTeX](ch29s03.html#id3138482) [Latex 結構化寫作](ch29s04.html) [ConTeXt 簡介](ch29s05.html) [部署 ConTeXt](ch29s06.html) [安裝](ch29s06.html#id3138931) [快速通道](ch29s06.html#id3139072) [字體設置](ch29s06.html#context-font) [](ch29s07.html) [Windows 下安裝](ch29s07.html#id3139709) [項目管理](ch29s08.html) [語法簡介](ch29s09.html) [空白距離](ch29s09.html#id3140461) [特殊字符](ch29s09.html#id3140535) [命令](ch29s09.html#id3140679) [標題](ch29s10.html) [列表](ch29s11.html) [數學公式](ch29s12.html) [運算符](ch29s12.html#id3141181) [上標、下標](ch29s12.html#id3141349) [打印字體配置文件](ch29s13.html) ## TeX 簡介 古來圣賢皆寂寞,唯有飲者留其名 滄海桑田,UNIX 的世界在風雨飄搖中悄悄變換了容顏 從傳統工具到 GNU 工具,從 4.4BSD-Lite 到 FreeBSD,從 Minix 到 Linux,從 VI 到 VIM……往日的 UNIX 已經不復存在 唯一歷久彌新的,只有 UNIX 的風骨;或者還有,TeX? ### 為什么要用 TeX TeX 足夠強大,可以滿足使用者的絕大多數要求。尤其在排版質量、數學公式、圖形生成、結構化控制等方面,幾乎無出其右者 盡管學習 TeX 相對困難,但是學習的收益比成本要大得多 TeX 尤其適合需要打印的文檔。恐怕你不能夠在辦公室里使用諸如 DocBook、reStructuredText 之類的格式寫一份文件,然后把它拿給你的老板 ### 順流、逆流 現代文檔工具,傾向于分離內容與樣式。而內容部分,則用結構化的方式進行梳理,對于規模比較大的文檔,這是最佳的方案。 Knuth 的 TeX 本身沒什么結構控制,它就像一套排版領域的"匯編語言",大約 300 多個標記。TeX 在處理一份文檔時,就是把整篇文檔當作一個很長很長的字符串一口吞下去,然后消化掉,最后排出 dvi 文件(現代的 TEX 輸出的是 PDF)。 由于 TeX 支持宏擴展,為了方便排版,Knuth 做了一個 Plain TeX,對 TeX 標記進行了一些功能邏輯上的封裝。不過,還是很不結構化。 LaTeX 是較早嘗試對 TeX 進行結構化封裝的宏包,它可以明確地實現樣式與內容的分離。不過,LaTeX 本身對排版方面的內建支持太少,需要許多其它宏包的支持,而那些宏包不是統一開發的,它們之間經常出現沖突。 ConTeXt 是對 TeX 進行結構化封裝的新嘗試,比 LaTeX 更加結構化,對排版方面的內建支持很好。而且 ConTeXt 對 XML 的支持相對完善,甚至可以直接用 ConTeXt 的 XML 語法來寫文檔[[63](ch29s02.html#ftn.id3138107)]。 總體說來,LaTex 是科技論文事實上的標準,如果要排論文,就用 LaTeX;而作個人的文檔、非正式散布的文檔、演示文檔,推薦用 ConTeXt * * * > [[63](ch29s02.html#id3138107)] DocBook與ConTeXt之間可以無縫轉換 ## LaTeX ### 部署 LaTeX 安裝 texlive-core 新建 `a.tex` 文件,內容如下: ``` \documentclass[11pt,a4paper]{article} %加入了一些針對XeTeX的改進并且加入了 \XeTeX 命令來輸入漂亮的XeTeX logo \usepackage{xltxtra} %啟用一些LaTeX中的功能 \usepackage{xunicode} %%%% fontspec 宏包 %%%% \usepackage{fontspec} % 指定字體 \setmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std} \setsansfont[BoldFont=Adobe Heiti Std]{Adobe Kaiti Std} %\setmonofont{Bitstream Vera Sans Mono} %%%% 版面 %%%% \usepackage[top=1in,bottom=1in,left=1.25in,right=1in]{geometry} % 設置行距 \linespread{1.3} %%%% 縮進 %%%% % 自動首行縮進 \usepackage{indentfirst} % 設置首行縮進的距離 \setlength{\parindent}{2.22em} %連字符 \defaultfontfeatures{Mapping=tex-text} %中文斷行 \XeTeXlinebreaklocale "zh" \XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt %以下為正文部分 \begin{document} % 生成目錄 \tableofcontents % 章節 \section{\XeLaTeX} XeTeX 可以使用系統自帶的字體,而不需要再另外生成 % 章節 \section{……} \end{document} ``` 使用 `fc-list` 命令查看可用字體,根據實際情況修改 % 指定字體 下面的幾行 使用以下命令生成 PDF ``` xelatex a.tex ``` ### 安裝宏包 LaTeX 只是一個基本框架,通過宏包擴展其功能。例如: fontspec 指定字體 geometry 設置版面 color 使用色彩 hyperref 設置鏈接 listings 代碼引用環境 titlesec 設置標題樣式 titletoc 設置目錄樣式 indentfirst 首行縮進(這是中文的排版習慣) xltxtra XeTeX 擴展功能 到 [CTAN](http://www.ctan.org/) 下載宏包,解壓后移動到 LaTeX 能找到的目錄,使用以下命令刷新: ``` sudo texhash ``` ### 學習 LaTeX 推薦兩本 LaTeX 的書: * [lshort-zh-cn 4.20](http://bbs.ctex.org/viewthread.php?tid=40736&extra=page%3D1) * [lnotes](http://bbs.ctex.org/viewthread.php?tid=43774&extra=page%3D1) ## Latex 結構化寫作 對于規模比較大的文檔項目,要用結構化方法寫作 首先樣式要與內容分離,將 LaTeX 的導言部分寫在一個文件里,例如 `style.tex`: ``` %\documentclass[11pt,a4paper,twoside]{article} \documentclass[11pt,a4paper,twoside]{book} %加入了一些針對XeTeX的改進并且加入了 \XeTeX 命令來輸入漂亮的XeTeX logo \usepackage{xltxtra} %啟用一些LaTeX中的功能 \usepackage{xunicode} %%%% fontspec 宏包 %%%% \usepackage{fontspec} % 指定字體 \setmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std} \setsansfont[BoldFont=Adobe Heiti Std]{Adobe Kaiti Std} %\setmonofont{Bitstream Vera Sans Mono} %%%% 版面 %%%% \usepackage[top=1in,bottom=1in,left=1.25in,right=1in]{geometry} % 設置行距 \linespread{1.3} %%%% 縮進 %%%% % 自動首行縮進 \usepackage{indentfirst} % 設置首行縮進的距離 \setlength{\parindent}{2.22em} %連字符 \defaultfontfeatures{Mapping=tex-text} %中文斷行 \XeTeXlinebreaklocale "zh" \XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt %%%% color %%%% \usepackage{color} \definecolor{gray}{rgb}{0.9,0.9,0.9} \definecolor{blue}{rgb}{0,0,1} %%%% 章節標題 %%%% \usepackage[center,pagestyles]{titlesec} \titleformat{\section}{\centering\Large\bfseries}{\thesection}{1em}{} \titleformat{\subsection}{\large\bfseries}{\thesubsection}{1em}{} \newpagestyle{main}{ \sethead{\small\thesection\quad\sectiontitle}{}{$\cdot$~\thepage~$\cdot$} \setfoot{}{}{}\headrule} \pagestyle{main} %%%% 目錄樣式 %%%% \usepackage{titletoc} \titlecontents{chapter} [0.0em] {} %\song {\thecontentslabel\hspace{1em}} {} {\normalfont\dotfill\textrm{\contentspage[{\bfseries\thecontentspage}]}} \titlecontents{section} [0.0em] {} %\song {\thecontentslabel\hspace{1em}} {} {\normalfont\dotfill\textrm{\contentspage[{\bfseries\thecontentspage}]}} %%%% hyperref %%%% \usepackage[ pdfstartview=FitH, CJKbookmarks=true, bookmarksnumbered=true, bookmarksopen=true, linkcolor=true, %注釋掉此項則交叉引用為彩色邊框(將colorlinks和pdfborder同時注釋掉) colorlinks=blue, pdfborder=001, %注釋掉此項則交叉引用為彩色邊框 citecolor=blue ]{hyperref} \usepackage{listings} \lstset{ numbers=none, numberstyle=\scriptsize, frame=single,framerule=0.1pt, backgroundcolor=\color{gray}, fontadjust=false, flexiblecolumns=true, language=[LaTeX]TeX, basicstyle=\ttfamily\small, commentstyle=\color{orange}, keywordstyle=\color{blue} escapebegin=\begin{esc},escapeend=\end{esc},texcl=true } \graphicspath{{img/}} %其它 %\usepackage[marginal,perpage,symbol]{footmisc} ``` 將所有會用的到詞匯在一個文件中定義,例如 `glossary.tex` ``` \def\xxx{The five boxing wizards jump quickly.\\} ``` * 使用命令 **\xxx** 插入定義的詞匯 使用 **\input** 命令將這兩個文件插入到主文檔中: ``` %插入樣式定義文件的內容 \input{style} %插入詞匯定義文件的內容 \input{glossary} %正文內容 \begin{document} %將前言放到 `info.tex` 文件中 %使用 \include 命令載入 \include{info} %插入目錄 \tableofcontents %將每章的內容放在單獨的文件中 (1st.tex) %使用 \include 命令載入 % `1st.tex` 文件中應包含 **\chapter** 等命令 \include{1st} % \include 命令會在新的一頁上排版載入的文本 %如果不想分頁,可以使用 \input 命令,它只是簡單的載入文本 (2nd.tex) \input{2nd} \end{document} ``` ## ConTeXt 簡介 LaTeX 是一個基本框架,主要依靠宏包擴展功能,這樣在保持自身精干的同時,可以擁有強大的功能,不失為一個靈活的方案 這種方案初衷是好的,但是在漫長的進化中,零零散散開發的宏包缺乏組織,多個宏包可能同時提供某一功能,這就可能引發沖突……而 ConTeXt 則不存在這一問題,因為它是的各種功能是統一開發的,而且開發進程相當活躍。 ConTeXt 制作的 PDF 文檔,可以擁有強大的交互特性,使用 ConTeXt 作出的 PDF 文檔,甚至可以作為計算器 當然,ConTeXt 并不是很容易掌握的,千里之行,始于足下,我們先搭建 ConTeXt 的工作環境 ## 部署 ConTeXt ### 安裝 目前,只有 ConTeXt Minimals (ConTEXt最小包)提供了最新的 ConTeXt 版本,而且可以與系統內其它 TeX 發行版和睦相處 ConTeXt Minimals 通過腳本安裝,安裝腳本會下載安裝文件到當前目錄。為了避免混亂,有必要手動為 ConTeXt Minimals 創建目錄 ``` export CTXDIR=/opt/context mkdir -p $CTXDIR cd $CTXDIR ``` > [![1](https://box.kancloud.cn/2015-10-12_561bcb76795ae.png)](ch29s06.html#context-s-1) 這是推薦的目錄 使用 rsync 下載 ConTeXt Minimals 的安裝腳本: ``` rsync -ptv rsync://contextgarden.net/minimals/setup/linux/first-setup.sh . ``` * 同樣,安裝腳本也使用 rsync 下載安裝文件。這種方式只下載升級過的文件,便于增量更新;也能夠最大程度的降低網絡不穩定所帶來的影響 執行安裝腳本[[64](ch29s06.html#ftn.id3139012)](第一次安裝可能會等待較長時間) ``` ./first-setup.sh ``` * 升級到最新版本,也使用這個腳本 下載完所有文件后,安裝腳本會自動配置 ConTeXt Minimals [[65](ch29s06.html#ftn.id3139043)] ### 快速通道 新建一個 `ctx` 文件,內容如下: ``` export CTEXDIR=/opt/context source $CTEXDIR/tex/setuptex $CTEXDIR/tex export OSFONTDIR="/usr/share/fonts/adobe" ``` > [![1](https://box.kancloud.cn/2015-10-12_561bcb76795ae.png)](ch29s06.html#context-e-1) 這里的目錄為 ConTeXt Minimals 安裝目錄 > [![2](https://box.kancloud.cn/2015-10-12_561bcb768596e.png)](ch29s06.html#context-e-2) ConTeXt 需要設置一些環境變量才能正常工作,使用 `setuptex` 腳本 > [![3](https://box.kancloud.cn/2015-10-12_561bcb94ee26f.png)](ch29s06.html#context-e-3) `OSFONTDIR` 為字體路徑變量,設置為系統中字體的實際路徑,見[“字體設置”一節](ch29s06.html#context-font "字體設置") 執行 `source ctx` 命令,設置好需要的環境變量,ConTeXt 工作環境便準備就緒 新建一個 `a.tex` 文件,內容如下: ``` % a.tex %這里是注釋 \starttext %正文開始 Hello World. %正文內容 \stoptext %正文結束 ``` 執行 `context a.tex` 命令,會得到 `a.pdf` 文件 > 提示:執行 `context --purge` 命令清除中間文件。但保留中間文件可以提高編譯速度 ### 字體設置 下面是一個包含中文的 `chinese.tex` 文件 ``` \usetypescriptfile[zhfonts] %加載打印字體配置文件(typescript) `zhfonts.tex` \usetypescript[myscript] %使用打印字體配置文件中定義打印字體的腳本 `myscript` \setupbodyfont[myfont,rm,11pt] %設置正文字體 \setupindenting[always,2em,first] %設置中文縮進格式(首行縮進兩字) \setupheads[indentnext=yes] %每節的首段也要縮進 \setupinterlinespace[big] %設置行距(big=1.5倍) \setupwhitespace[medium] %設置段間距[small, medium, big] \definepapersize[SCREEN][width=21cm,height=29.7cm] %設置頁面尺寸 \setuppapersize[SCREEN][SCREEN] %紙張尺寸,通常和頁面尺寸相同。(除非在印刷用紙上實現多頁排版) \starttext 世界,你好! \stoptext ``` `打印字體配置文件`(typescript) 文件是一個 TeX 文件,要求與 `chinese.tex` 文件在同一目錄,或者位于 ConTeXt Minimals 可以檢索到的某個目錄中[[66](ch29s06.html#ftn.id3139372)] 新建一個`打印字體配置文件`(typescript),名為 `zhfonts.tex`,內容如下: ``` % engine=luatex % \ctxlua{fonts.collections.trace = true} \let\synchronizetext\relax \synchronizemathfontsfalse \spaceskip .25em plus .25em \relax \definefontfeature[zh][mode=node,script=hang,lang=zhs] \starttypescript [serif] [zhfont] \definefontsynonym [ZhSerif][name:AdobeSongStd-Light][features=zh] \definefontsynonym [ZhSerifBold][name:AdobeHeitiStd-Regular][features=zh] \definefontsynonym [ZhSerifItalic][name:AdobeKaitiStd-Regular][features=zh] \definefontsynonym [ZhSerifBoldItalic][name:AdobeHeitiStd-Regular][features=zh] \definefontfallback [WesternSerif][name:TeXGyrePagella-Regular][0x0000-0x0400][force=yes] \definefontfallback [WesternSerifBold][name:TeXGyrePagella-Bold][0x0000-0x0400][force=yes] \definefontfallback [WesternSerifItalic][name:TeXGyrePagella-Italic][0x0000-0x0400][force=yes] \definefontfallback [WesternSerifBoldItalic][name:TeXGyrePagella-BoldItalic][0x0000-0x0400][force=yes] \definefontsynonym [Serif][ZhSerif][fallbacks=WesternSerif] \definefontsynonym [SerifBold][ZhSerifBold][fallbacks=WesternSerifBold] \definefontsynonym [SerifItalic][ZhSerifItalic][fallbacks=WesternSerifItalic] \definefontsynonym [SerifBoldItalic][ZhSerifBoldItalic][fallbacks=WesternSerifBoldItalic] \stoptypescript \starttypescript [sans][zhfont] \definefontsynonym [ZhSans][name:AdobeKaitiStd-Regular][features=zh] \definefontsynonym [ZhSansBold][name:AdobeHeitiStd-Regular][features=zh] \definefontsynonym [ZhSansItalic][name:AdobeKaitiStd-Regular][features=zh] \definefontsynonym [ZhSansBoldItalic][name:AdobeHeitiStd-Regular][features=zh] \definefontfallback [WesternSans][name:TeXGyreAdventor-Regular][0x0000-0x0400][force=yes] \definefontfallback [WesternSansBold][name:TeXGyreAdventor-Bold][0x0000-0x0400][force=yes] \definefontfallback [WesternSansItalic][name:TeXGyreAdventor-Italic][0x0000-0x0400][force=yes] \definefontfallback [WesternSansBoldItalic][name:TeXGyreAdventor-BoldItalic][0x0000-0x0400][force=yes] \definefontsynonym [Sans][ZhSans][fallbacks=WesternSans] \definefontsynonym [SansBold][ZhSansBold][fallbacks=WesternSansBold] \definefontsynonym [SansItalic][ZhSansItalic][fallbacks=WesternSansItalic] \definefontsynonym [SansBoldItalic][ZhSansBoldItalic][fallbacks=WesternSansBoldItalic] \stoptypescript \starttypescript [mono][zhfont] \definefontsynonym [ZhMono][name:AdobeFangsongStd-Regular][features=zh] \definefontsynonym [ZhMonoBold][name:AdobeHeitiStd-Regular][features=zh] \definefontsynonym [ZhMonoItalic][name:AdobeFangsongStd-Regular][features=zh] \definefontsynonym [ZhMonoBoldItalic][name:AdobeHeitiStd-Regular][features=zh] \definefontfallback [WesternMono][name:TeXGyreCursor-Regular][0x0000-0x0400][force=yes] \definefontfallback [WesternMonoBold][name:TeXGyreCursor-Bold][0x0000-0x0400][force=yes] \definefontfallback [WesternMonoItalic][name:TeXGyreCursor-Italic][0x0000-0x0400][force=yes] \definefontfallback [WesternMonoBoldItalic][name:TeXGyreCursor-BoldItalic][0x0000-0x0400][force=yes] \definefontsynonym [Mono][ZhMono][fallbacks=WesternMono] \definefontsynonym [MonoBold][ZhMonoBold][fallbacks=WesternMonoBold] \definefontsynonym [MonoItalic][ZhMonoItalic][fallbacks=WesternMonoItalic] \definefontsynonym [MonoBoldItalic][ZhMonoBoldItalic][fallbacks=WesternMonoBoldItalic] \stoptypescript \starttypescript[myscript] \definetypeface[myfont][rm][serif][zhfont] \definetypeface[myfont][ss][sans][zhfont] \definetypeface[myfont][tt][mono][zhfont] \stoptypescript ``` * 如何定制字體參閱[“打印字體配置文件”一節](ch29s13.html "打印字體配置文件") 下載中文字體[[67](ch29s06.html#ftn.id3139613)],安裝,并設置 `OSFONTDIR` 變量: ``` export OSFONTDIR="/usr/share/fonts/adobe" ``` > [![1](https://box.kancloud.cn/2015-10-12_561bcb76795ae.png)](ch29s06.html#context-e-31) 中文字體的安裝路徑,建議寫入 `ctx` 文件[[68](ch29s06.html#ftn.id3139659)] 執行以下命令刷新文檔數據庫: ``` context --generate ``` 最后,使用 `chinese.tex` 文件生成 PDF ``` context chinese.tex ``` * * * > [[64](ch29s06.html#id3139012)] 需要 ruby 支持 > [[65](ch29s06.html#id3139043)] 期間可能會出現幾次如下> 提示: ``` ! I can't find file `core-swd'. ``` 鍵入`core-swd.mkii`即可 > [[66](ch29s06.html#id3139372)] 如 `$TEXMFLOCAL``/tex/context/third` ``` mkdir -p $TEXMFLOCAL/tex/context/third mv zhfonts.tex $TEXMFLOCAL/tex/context/third context --generate ``` > [![1](https://box.kancloud.cn/2015-10-12_561bcb76795ae.png)](ch29s06.html#context-e-21) 在 `$TEXMFLOCAL` 目錄下新建第三方目錄 > [![2](https://box.kancloud.cn/2015-10-12_561bcb768596e.png)](ch29s06.html#context-e-22) 將 `zhfonts.tex` 文件移動到該目錄 > [![3](https://box.kancloud.cn/2015-10-12_561bcb94ee26f.png)](ch29s06.html#context-e-23) 刷新一下文檔數據庫,就可以使用該字體配置文件了 > [[67](ch29s06.html#id3139613)] 這個配置文件使用 Adobe Creative Suite 4 中附帶的四種字體 > [[68](ch29s06.html#id3139659)] 前面給出的 `ctx` 文件已設置此變量 ### Windows 下安裝 首先下載 [context-setup-mswin](http://minimals.contextgarden.net/setup/context-setup-mswin.zip) 和 [ruby](http://rubyinstaller.rubyforge.org/wiki/wiki.pl) 安裝 ruby ;解壓 context-setup-mswin ,運行 `first-setup.bat`[[69](ch29s07.html#ftn.id3139739)] 假設 conTeXt 安裝在 `D:\context` 目錄下,設置環境變量[[70](ch29s07.html#ftn.id3139753)],在 `PATH` 項中添加路徑: ``` ;D:\context\tex\texmf-mswin\bin ``` 將以下內容保存為 `environment.reg` ,雙擊導入注冊表 ``` Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Environment] "CYGWIN"="nontsec" "OSFONTDIR"="C:\\WINDOWS\\Fonts" "TEXMF"="{$TEXPATH\\texmf,$TEXPATH\\texmf-local,$TEXPATH\\texmf-context,$TEXPATH\\texmf-mswin}" "TEXMFCACHE"="$TEXPATH\\texmf-cache" "TEXMFCNF"="$TEXPATH\\texmf{-local,-context,}/web2c" "TEXMFOS"="$TEXPATH\\texmf-mswin" "TEXPATH"="D:\\context\\tex" ``` 將打印字體配置文件復制到 `D:\context\tex\texmf-local\tex\context\third` 目錄下[[71](ch29s07.html#ftn.id3139805)] 使用命令 `context --generate` 刷新文檔數據庫[[72](ch29s07.html#ftn.id3139823)] 最后,使用命令 `context a.tex` 或者 `texexec a.tex` 生成 PDF 文檔 * * * > [[69](ch29s07.html#id3139739)] 這是一個自動下載、升級的腳本 > [[70](ch29s07.html#id3139753)] 我的電腦:右鍵→屬性→高級→環境變量 > [[71](ch29s07.html#id3139805)] 默認的配置文件需要4個 Adobe 的字體,如果沒有這四個字體,可以將配置文件中使用到的 Adobe 字體改為系統中的字體 > [[72](ch29s07.html#id3139823)] 需要在 Windows 命令行中執行 ## 項目管理 為了養成良好的習慣,我們把 ConTeXt 文檔拆分到幾個單獨的 `.tex` 文件中,這樣維護起來比較方便。 首先是主文檔 `product.tex`[[73](ch29s08.html#ftn.id3139875)],生成 PDF 只要編譯此文件即可 ``` %%%%%此文件使用 product 環境,起始聲明 \startproduct{} %%%導言區使用 \environment 載入文件 %載入樣式文件 style.tex \environment style %載入詞匯定義文件 gloss.tex \environment gloss %%%正文起始 \starttext %%%正文區使用 \component 載入文件 %封面 cover.tex \component cover %目錄 \title{目錄} \placecontent %%正文內容 %載入章節 1.tex 2.tex 3.tex \component 1 \component 2 \component 3 %%%正文結束 \stoptext %%%%% product 環境結束聲明 \stopproduct ``` 在導言區載入的文件,要使用 `environment` 環境,例如樣式定義文件 `style.tex` ``` \startenvironment{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 中文設置 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usetypescriptfile[zhfonts] %加載打印字體配置文件(typescript) zhfonts.tex \usetypescript[myscript] %使用打印字體配置文件中定義打印字體的腳本 myscript \setupbodyfont[myfont,rm,11pt] %設置正文字體 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 正文 標題 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 啟用顏色模式, 設置鏈接文本顏色 \setupcolors[state=start] \definecolor[linktext][darkred] \setupinteraction[state=start,color=linktext] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %正文 \setupindenting[always,2em,first] %設置中文縮進格式(首行縮進兩字) \setupheads[indentnext=yes] %每節的首段也要縮進 \setupinterlinespace[big] %設置行距(big=1.5倍) \setupwhitespace[small] %設置段間距[small, medium, big] %標題 \setupheads[indentnext=yes] \setuphead [chapter] [style=\bfc,header=empty,footer=empty] \setuphead [section] [style=\bfa] \setuphead [title] [style=\bfb,header=empty,foote=empty] \setuphead [subsubject] [style=\bf] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 頁面設置 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %定義頁面尺寸為 SCREEN \definepapersize[mySCREEN][width=21cm,height=29.7cm] %紙張尺寸,通常和頁面尺寸相同。(除非在印刷用紙上實現多頁排版) \setuppapersize[SCREEN][mySCREEN] %布局 \setuplayout [width=fit, height=middle, leftmargin=3cm, rightmargin=3cm, backspace=4cm, topspace=.5cm, headerdistance=.4cm, footerdistance=.4cm, header=1cm, footer=1cm] %去掉頁眉正中 自動添加的頁碼 \setuppagenumbering [style=\tfx,location=] %頁眉 \def\CurrentChapter{% 第 \headnumber[chapter]\ 章% \hbox to 2em{}% \getmarking[chapter]% } \def\CurrentSection{% \headnumber[section]% \hbox to 2em{}% \getmarking[section]% } \setupheadertexts [\CurrentChapter][pagenumber] [pagenumber][\CurrentSection] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %邊注 \setupinmargin[left,right][style=\tfx] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %PDF 閱讀器中自適應頁寬 \setupinteraction[state=start,openaction=FitWidth] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 目錄 書簽 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 啟用書簽功能 \setupinteraction[state=start] \setupinteractionscreen[option=bookmark] \placebookmarks[chapter,section,subsection][chapter] %%%經典目錄樣式 %% turn off numbering of some levels %\setuphead[subsection][number=no] %\setuphead[subsubsection][number=no] %% TOC %% level=4, \subsubsubsections are not listed in TOC %% alternative=c, space to the page number is filled with dots %\setupcombinedlist[content][level=4,alternative=c] %%\setuplist[chapter][width=5mm,style=bold] %\setuplist[section][width=10mm,style=bold] %\setuplist[subsection][width=20mm] %% pagestyle=normal for changing the appearance of pagenumber %\setuplist[subsubsection][width=20mm,style=slanted,pagestyle=normal] %目錄樣式 \def\ChapterNumber#1{\doiftext{#1}{第\;#1\;章\quad}} \setuplist [chapter] [alternative=a, before={\page[preference]\blank}, after=\blank, style=bold, width=fit, pagestyle=boldslanted, pagenumber=no, numbercommand=\ChapterNumber] \def\PageNumber#1{\color[darkgray]{#1}.} \setuplist [section] [alternative=d, style=small, pagecommand=\PageNumber, pagestyle=\itx] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \stopenvironment ``` 詞匯定義文件 `gloss.tex` ``` \startenvironment{} %使用命令 \hello{mom} %得到 Good morning mom \define[1]\hello{Good morning, #1} %使用命令 \lxsc %得到 《開源世界旅行手冊》 \define\lxsc{《開源世界旅行手冊》} \stopenvironment ``` 章節放在單獨的文件中,例如 `1.tex` ``` \startcomponent{} \chapter{第一章} ConTeXt 組件文檔 \stopcomponent ``` * * * > [[73](ch29s08.html#id3139875)] 文件名任意 ## 語法簡介 ### 空白距離 TEX 將空格和制表符等空白字符視為相同的空白距離(space),多個連續的 空白字符 等同為一個空白字符, 每行開始的空白字符將被忽略, 而單個的 換行符 被視為一空格。 TEX 使用空行(兩個或以上換行符)來分隔段落。如同空格一樣,多個空行所起的作用和一個空行是相同的。 以下為示例代碼: ``` TEX 將空格和制表符等空白字符視為相同的空白距離(space), 多個連續的 空白字符 等同為一個空白字符, 每行開始的空白字符將被忽略, 而單個的 換行符 被視為一空格。 TEX 使用空行(兩個或以上換行符)來分隔段落。如同空格一樣,多個空行所起的作用和一個空行是相同的。 以下為示例代碼: ``` 可以使用 `\blank` [[74](ch29s09.html#ftn.id3140512)]命令插入空行,使用 `\\` 插入空格 ### 特殊字符 以下為 TeX 的保留字符: | 保留字符 | 禁止解析 | 說明 | | --- | --- | --- | | \ | \type{\} | 命令引導符 | | % | \% | 注釋 | | $ | \$ | 數學公式 | | ^ | \^ | 上標 | | _ | \_ | 下標 | | # | \# | | & | \& | | ~ | \~ | | { | \{ | 命令參數 | | } | \} | 命令參數 | `\backslash` 可以得到數學符號中的 **\**,而 `\\` 通常在標題、頁眉/頁腳、邊注等環境中作為換行符 ### 命令 TEX 命令以反斜線“`\`”引導,以任意非字母字符結束 命令可以使用花括號或方括號作為參數,例如: ``` \command[選項,設置,……]{操作對象} ``` 命令分為兩種:普通命令和環境命令。普通命令可以用于行內;環境命令包含起始聲明和結束聲明,用于多行。普通命令和環境命令可以互相嵌套 ``` \begin{itemize} %環境命令起始聲明 \item 列表項 %普通命令 \item 列表項 \end{itemize} %環境命令結束聲明 ``` * * * > [[74](ch29s09.html#id3140512)] `\blank[medium*4]` 插入4個中等高度空行 ## 標題 conTeXt 中,章節以下列命令開始,并使用 **{}** 指定標題,例如 `\chapter{第一章}`: | 章節 | 編號 | 不編號 | | --- | --- | --- | | 部 | \part | | 章 | \chapter | \title | | 節 | \section | \subject | | 小節 | \subsection | \subsubject | | | \subsubsection | \subsubsubject | * 章節無需結束聲明,遇到下一個章節命令,本章節結束 使用方括號給章節定義標記 ``` \title[引用]{標題} %定義標記 \at{page}[引用] %使用 `\at` 命令引用 ``` ## 列表 使用以下命令插入列表: ``` \startitemize[R,packed,broad] %列表起始聲明 [選項] \item 列表項一 %列表項使用 **\item** 命令 \item 列表項二 \item 列表項三 \stopitemize %列表結束聲明 ``` 第一個選項為列表項分隔符(前綴): | 選項 | 樣式 | | --- | --- | | 1 | 圓點 | | 2 | 短劃線 | | 3 | 星號 | | 4 | 三角形 | | 5 | 梅花 | | 6 | 空心圓 | | n | 數字 | | a | 小寫字母 | | A | 大寫字母 | | r | 小寫羅馬數字 | | R | 大寫羅馬數字 | 后兩個為格式選項 | 選項 | 格式 | | --- | --- | | standard | 標準 | | packed | 壓縮列表項垂直間距 | | serried | 壓縮分隔符和文本的間距 | | joinedup | 壓縮列表與正文間距 | | broad | 擴展分隔符和文本的間距 | | inmargin | 將分隔符放在而邊緣 | | atmargin | | stopper | | columns | | intro | | continue | **columns** 選項需要參數 ``` \startitemize[columns,three,broad] ``` ## 數學公式 數學環境 ``` \placeformula[1] %給數學公式編號[引用標記] \startformula %數學環境起始聲明 y=x^2 \stopformula %數學環境結束聲明 這是行內的數學環境 $\int_0^1 x^2 dx$ ``` ### 運算符 可以直接使用的基本運算符有: ``` + - = < > ``` | 數學符號 | 命令 | | --- | --- | | ± | \pm | | × | \times | | ÷ | \div | | * | \ast | | ★ | \star | | ● | \bullet | | ○ | \circ | | · | \cdot | | ≤ | \leq | | 《 | \ll | | ≥ | \geq | | 》 | \gg | | ≡ | \equiv | | ~ | \sim | | ≈ | \approx | | ≠ | \neq | | ∩ | \cap | | ∪ | \cup | | ∈ | \in | ### 上標、下標 使用 `^` 輸入上標 ``` 勾股定理 $3^2 + 4^2 = 5^2$ %`^2`為指數 二的十次方 $2^{10} = 1024$ %如果指數不止一位,要使用`{}`括起來 ``` ## 打印字體配置文件 conTeXt 使用以下方式定義字體: ``` \definefont %使用此命令定義字體。這三句可以寫在一行 [Song] %第一個參數為字體別名 [{`name`:Adobe Song Std*zh} at 14pt] %字體定義:使用14號的 Adobe 中文宋體 %`name`使用字體名稱;`file`使用字體文件 \starttext \Song 我使用的是 Adobe 宋體 %使用字體別名指定該行體樣式 \stoptext ``` 使用這種方式指定字體比較繁瑣,推薦建立一個打印字體配置文件(`typescript`),如 `zhfonts.tex` (如何使用 `zhfonts.tex` 參閱[“字體設置”一節](ch29s06.html#context-font "字體設置")) `.tex` 源文件中使用以下命令定義字體: ``` \usetypescriptfile[zhfonts] %加載打印字體配置文件 `zhfonts.tex` \usetypescript[myscript] %使用打印字體配置文件中定義打印字體的腳本 `myscript` \setupbodyfont[myfont,ss,11pt] %使用腳本預定義的 `myfont` 字體: 字型為 `ss` ,大小為 11pt ``` 通常有三種字型的字體:襯線、非襯線、等寬,襯線字型筆劃起始和結束的地方有一些修飾,非襯線字體筆劃為無修飾的線條,等寬字體所有的字符寬度相同 而一種字體,無論屬于何種字型,都可能有幾種樣式,例如:普通、粗體、斜體、斜粗體 我們在打印字體配置文件中,首先定義字型,然后為每種字型定義樣式。 在 `zhfonts.tex` 文件中定義打印字體 `myfont` 的字型: ``` \starttypescript[myscript] %定義打印字體的腳本為 `myscritp` \definetypeface[myfont][ss][sans][zhfont] %將 `myfont` 的字型 `ss` 定義為 `[sans][zhfont]`(非襯線) \stoptypescript %結束定義 ``` `[sans][zhfont]` 為非襯線字型,給它指定各種樣式,在上面定義之前寫入以下配置: ``` \starttypescript [sans][zhfont] %定義字型 `[sans][zhfont]` \definefontsynonym %此命令定義字體別名 %定義該字型的普通樣式 `[Sans]` 為 `[ZhSans]`,備用字體為 [fallbacks=WesternSans] [Sans][ZhSans][fallbacks=WesternSans] \definefontsynonym %定義該字型的粗體樣式 `[SansBold]` 為 `[ZhSansBold]`,備用字體為 [fallbacks=WesternSansBold] [SansBold][ZhSansBold][fallbacks=WesternSansBold] \definefontsynonym %定義斜體 [SansItalic][ZhSansItalic][fallbacks=WesternSansItalic] \definefontsynonym %定義斜粗體 [SansBoldItalic][ZhSansBoldItalic][fallbacks=WesternSansBoldItalic] \stoptypescript ``` 上一步定義使用別名定義別名,寫起來比較麻煩,但是卻可以選擇備用字體。接下來將各種樣式定義為實際的字體: ``` \starttypescript [sans][zhfont] %定義四種樣式實際使用的字體 %`name`使用字體名稱;`file`使用字體文件 %`[features=zh]` 字體使用 `zh` 屬性,還未定義 \definefontsynonym [ZhSans][name:AdobeKaitiStd-Regular][features=zh] \definefontsynonym [ZhSansBold][name:AdobeHeitiStd-Regular][features=zh] \definefontsynonym [ZhSansItalic][name:AdobeKaitiStd-Regular][features=zh] \definefontsynonym [ZhSansBoldItalic][name:AdobeHeitiStd-Regular][features=zh] %定義備用字體的四種樣式 \definefontfallback [WesternSans][name:TeXGyreAdventor-Regular][0x0000-0x0400][force=yes] \definefontfallback [WesternSansBold][name:TeXGyreAdventor-Bold][0x0000-0x0400][force=yes] \definefontfallback [WesternSansItalic][name:TeXGyreAdventor-Italic][0x0000-0x0400][force=yes] \definefontfallback [WesternSansBoldItalic][name:TeXGyreAdventor-BoldItalic][0x0000-0x0400][force=yes] \definefontsynonym [Sans][ZhSans][fallbacks=WesternSans] \definefontsynonym [SansBold][ZhSansBold][fallbacks=WesternSansBold] \definefontsynonym [SansItalic][ZhSansItalic][fallbacks=WesternSansItalic] \definefontsynonym [SansBoldItalic][ZhSansBoldItalic][fallbacks=WesternSansBoldItalic] \stoptypescript ``` 最后,定義字體屬性 `zh` ``` \definefontfeature[zh][mode=node,script=hang,lang=zhs] ``` 完整的 `zhfonts.tex` 文件,參閱[“字體設置”一節](ch29s06.html#context-font "字體設置")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看