譯自: https://opensource.com/article/18/10/book-to-website-epub-using-pandoc
作者: Kiko Fernandez-reyes
譯者: jlztan
通過 Markdown 和 Pandoc,可以做到編寫一次,發布兩次。
Pandoc 是一個命令行工具,用于將文件從一種標記語言轉換為另一種標記語言。在我 對 Pandoc 的簡介 一文中,我演示了如何把 Markdown 編寫的文本轉換為網頁、幻燈片和 PDF。
在這篇后續文章中,我將深入探討 Pandoc ,展示如何從同一個 Markdown 源文件生成網頁和 ePub 格式的電子書。我將使用我即將發布的電子書《 面向對象思想的 GRASP 原則 》為例進行講解,這本電子書正是通過以下過程創建的。
首先,我將解釋這本書使用的文件結構,然后介紹如何使用 Pandoc 生成網頁并將其部署在 GitHub 上;最后,我演示了如何生成對應的 ePub 格式電子書。
你可以在我的 GitHub 倉庫 Programming Fight Club 中找到相應代碼。
我用 Markdown 語法完成了所有的寫作,你也可以使用 HTML 標記,但是當 Pandoc 將 Markdown 轉換為 ePub 文檔時,引入的 HTML 標記越多,出現問題的風險就越高。我的書按照每章一個文件的形式進行組織,用 Markdown 的 H1 標記(#)聲明每章的標題。你也可以在每個文件中放置多個章節,但將它們放在單獨的文件中可以更輕松地查找內容并在以后進行更新。
元信息遵循類似的模式,每種輸出格式都有自己的元信息文件。元信息文件定義有關文檔的信息,例如要添加到 HTML 中的文本或 ePub 的許可證。我將所有 Markdown 文檔存儲在名為 parts 的文件夾中(這對于用來生成網頁和 ePub 的 Makefile 非常重要)。下面以一個例子進行說明,讓我們看一下目錄,前言和關于本書(分為 toc.md、preface.md 和 about.md 三個文件)這三部分,為清楚起見,我們將省略其余的章節。
關于本書這部分內容的開頭部分類似:
# About this book {-}
## Who should read this book {-}
Before creating a complex software system one needs to create a solid foundation.
General Responsibility Assignment Software Principles (GRASP) are guidelines to assign
responsibilities to software classes in object-oriented programming.
每一章完成后,下一步就是添加元信息來設置網頁和 ePub 的格式。
我創建的網頁的元信息文件(web-metadata.yaml)是一個簡單的 YAML 文件,其中包含 <head> 標簽中的作者、標題、和版權等信息,以及 HTML 文件中開頭和結尾的內容。
我建議(至少)包括 web-metadata.yaml 文件中的以下字段:
---
title: <a href="/grasp-principles/toc/">GRASP principles for the Object-oriented mind</a>
author: Kiko Fernandez-Reyes
rights: 2017 Kiko Fernandez-Reyes, CC-BY-NC-SA 4.0 International
header-includes:
- |
```{=html}
<link rel="stylesheet">
<link rel="stylesheet">
```
include-before:
- |
```{=html}
<p>If you like this book, please consider
spreading the word or
<a >
buying me a coffee
</a>
</p>
```
include-after:
- |
```{=html}
<div class="footnotes">
<hr>
<div class="container">
<nav class="pagination" role="pagination">
<ul>
<p>
<span class="page-number">Designed with</span> ?? <span class="page-number"> from Uppsala, Sweden</span>
</p>
<p>
<a rel="license" ><img alt="Creative Commons License" style="border-width:0" src="http://www.jungjaehyung.com/uploadfile/2024/1012/20241012032002517.png" /></a>
</p>
</ul>
</nav>
</div>
</div>
```
---
下面幾個變量需要注意一下:
這些只是其中一部分可用的變量,查看 HTML 中的模板變量(我的文章 Pandoc簡介 中介紹了如何查看 LaTeX 的模版變量,查看 HTML 模版變量的過程是相同的)對其余變量進行了解。
網頁可以作為一個整體生成,這會產生一個包含所有內容的長頁面;也可以分成多章,我認為這樣會更容易閱讀。我將解釋如何將網頁劃分為多章,以便讀者不會被長網頁嚇到。
為了使網頁易于在 GitHub Pages 上部署,需要創建一個名為 docs 的根文件夾(這是 GitHub Pages 默認用于渲染網頁的根文件夾)。然后我們需要為 docs 下的每一章創建文件夾,將 HTML 內容放在各自的文件夾中,將文件內容放在名為 index.html 的文件中。
例如,about.md 文件將轉換成名為 index.html 的文件,該文件位于名為 about(about/index.html)的文件夾中。這樣,當用戶鍵入 http://<your-website.com>/about/ 時,文件夾中的 index.html 文件將顯示在其瀏覽器中。
下面的 Makefile 將執行上述所有操作:
# Your book files
DEPENDENCIES=toc preface about
# Placement of your HTML files
DOCS=docs
all: web
web: setup $(DEPENDENCIES)
@cp $(DOCS)/toc/index.html $(DOCS)
# Creation and copy of stylesheet and images into
# the assets folder. This is important to deploy the
# website to Github Pages.
setup:
@mkdir -p $(DOCS)
@cp -r assets $(DOCS)
# Creation of folder and index.html file on a
# per-chapter basis
$(DEPENDENCIES):
@mkdir -p $(DOCS)/$@
@pandoc -s --toc web-metadata.yaml parts/$@.md \
-c /assets/pandoc.css -o $(DOCS)/$@/index.html
clean:
@rm -rf $(DOCS)
.PHONY: all clean web setup
選項 - c /assets/pandoc.css 聲明要使用的 CSS 樣式表,它將從 /assets/pandoc.cs 中獲取。也就是說,在 <head> 標簽內,Pandoc 會添加這樣一行:
<link rel="stylesheet" href="/assets/pandoc.css">
使用下面的命令生成網頁:
make
根文件夾現在應該包含如下所示的文件結構:
.---parts
| |--- toc.md
| |--- preface.md
| |--- about.md
|
|---docs
|--- assets/
|--- index.html
|--- toc
| |--- index.html
|
|--- preface
| |--- index.html
|
|--- about
|--- index.html
通過以下步驟將網頁部署到 GitHub 上:
你可以在 GitHub Pages 的網站上獲得更多詳細信息。
我的書的網頁 便是通過上述過程生成的,可以在網頁上查看結果。
ePub 格式的元信息文件 epub-meta.yaml 和 HTML 元信息文件是類似的。主要區別在于 ePub 提供了其他模板變量,例如 publisher 和 cover-image 。ePub 格式圖書的樣式表可能與網頁所用的不同,在這里我使用一個名為 epub.css 的樣式表。
---
title: 'GRASP principles for the Object-oriented Mind'
publisher: 'Programming Language Fight Club'
author: Kiko Fernandez-Reyes
rights: 2017 Kiko Fernandez-Reyes, CC-BY-NC-SA 4.0 International
cover-image: assets/cover.png
stylesheet: assets/epub.css
...
將以下內容添加到之前的 Makefile 中:
epub:
@pandoc -s --toc epub-meta.yaml \
$(addprefix parts/, $(DEPENDENCIES:=.md)) -o $(DOCS)/assets/book.epub
用于產生 ePub 格式圖書的命令從 HTML 版本獲取所有依賴項(每章的名稱),向它們添加 Markdown 擴展,并在它們前面加上每一章的文件夾路徑,以便讓 Pandoc 知道如何進行處理。例如,如果 $(DEPENDENCIES 變量只包含 “前言” 和 “關于本書” 兩章,那么 Makefile 將會這樣調用:
@pandoc -s --toc epub-meta.yaml \
parts/preface.md parts/about.md -o $(DOCS)/assets/book.epub
Pandoc 將提取這兩章的內容,然后進行組合,最后生成 ePub 格式的電子書,并放在 Assets 文件夾中。
這是使用此過程創建 ePub 格式電子書的一個 示例 。
從 Markdown 文件創建網頁和 ePub 格式電子書的過程并不困難,但有很多細節需要注意。遵循以下大綱可能使你更容易使用 Pandoc。
via: https://opensource.com/article/18/10/book-to-website-epub-using-pandoc
作者: Kiko Fernandez-Reyes 選題: lujun9972 譯者: jlztan 校對: wxy
本文由 LCTT 原創編譯, Linux中國 榮譽推出
量是什么
一個變量,就是一個用于存放數值的容器。這個數值可能是一個用于累加計算的數字,或者是一個句子中的字符串。變量的獨特之處在于它存放的數值是可以改變的。讓我們看一個簡單的例子:
Press me
var button=document.querySelector('button');
button.onclick=function() {
var name=prompt('What is your name?');
alert('Hello ' + name + ', nice to see you!'); }
在上面的例子中,點擊按鈕之后,第一行代碼會在屏幕上彈出一個對話框,讓你輸入名字,然后存儲輸入的名字到一個變量。第二行代碼將會顯示包含你名字的歡迎信息,你的名字就是從之前的變量里面讀取的。
變量的另一個特性就是它們能夠存儲任何的東西 -- 不只是字符串和數字。變量可以存儲更復雜的數據,甚至是函數。你將在后續的內容中體驗到這些用法。
我們說,變量是用來存儲數值的,那么有一個重要的概念需要區分。變量不是數值本身,它們僅僅是一個用于存儲數值的容器。你可以把變量想象成一個個用來裝東西的紙箱子。
聲明變量
要想使用變量,你需要做的第一步就是創建它 -- 更準確的說,是聲明一個變量。聲明一個變量的語法是在var關鍵字之后加上這個變量的名字
var myName;
var myAge;
提示: 在JavaScript中,所有代碼指令都會以分號結尾 (;) — 如果忘記加分號,你的單行代碼可能執行正常,但是在多行代碼在一起的時候就可能出錯。所以,最好是養成主動以分號作為代碼結尾的習慣。提示: 千萬不要把兩個概念弄混淆了,“一個變量存在,但是沒有數值”和“一個變量并不存在” — 他們完全是兩回事 — 在前面你看到的盒子的類比中,不存在意味著沒有可以存放變量的“盒子”。沒有定義的值意味著有一個“盒子”,但是它里面沒有任何值。
初始化變量
一旦你定義了一個變量,你就能夠初始化它. 方法如下,在變量名之后跟上一個“=”,然后是數值:
myName='Chris';
myAge=37; //你還可以向下面這樣
var myName='Chris';
更新變量
一旦變量賦值,您可以通過簡單地給它一個不同的值來更新它。試試在你的控制臺中輸入
關于變量命名的規則:
你可以給你的變量賦任何你喜歡的名字,但有一些限制。 一般你應當堅持使用拉丁字符(0-9,a-z,A-Z)和下劃線字符。
age
myAge
init
initialColor
finalOutputValue
audio1
audio2
變量類型
可以為變量設置不同的數據類型。 ps:數據類型與數據結構并不是一回事
Number
你可以在變量中存儲數字,不論這些數字是像30(也叫整數)這樣,或者像2.456這樣的小數(也叫做浮點數)。與其他編程語言不同,在 JavaScript 中你不需要聲明一個變量的類型。當你給一個變量數字賦值時,不需要用引號括起來。
var myAge=17;
String
字符串是文本的一部分。當你給一個變量賦值為字符串時,你需要用單引號或者雙引號把值給包起來,否則JavaScript將會把這個字符串值理解成別的變量名。
var dolphinGoodbye='So long and thanks for all the fish';
Boolean
Boolean 的值有2種:true或false。它們通常被用于在適當的代碼之后,測試條件是否成立。舉個例子,一個簡單的示例如下
var iAmAlive=true;
通常更加常用的是
var test=6 < 9;
這是使用“小于”操作符(<)來測試6小于3。正如你所料的,將會返回true
Array-數組
數組是一個單個對象,其中包含很多值,方括號括起來,并用逗號分隔。嘗試在您的控制臺輸入以下行
var myNameArray=['Chris', 'Bob', 'Jim'];
當數組被定義以后,您可以使用以下所示的語法來訪問相對應的值
myNameArray[0]; // should return 'Chris'
myNumberArray[2]; // should return 40
此處的方括號包含一個索引值,該值指定要返回的值的位置。 您可能已經注意到,計算機從0開始計數,而不是像我們人類那樣的1。
Object
在編程中,對象是現實生活中的模型的一種代碼結構。您可以有一個簡單的對象,代表一個停車場,并包含有關其寬度和長度的信息,或者您可以有一個代表一個人的對象,并包含有關他們的名字,身高,體重,他們說什么語言,如何說 你好,他們,等等。
動態類型
JavaScript是一種“動態類型語言”,這意味著不同于其他一些語言(譯者注:如C、JAVA),您不需要指定變量將包含什么數據類型(例如number或string)
例如,如果你聲明一個變量并給它一個帶引號的值,瀏覽器就會知道它是一個字符串;
var myNumber='500'; // oops, this is still a string
typeof myNumber;
myNumber=500; // much better — now this is a number
typeof myNumber
嘗試依次將上述代碼輸入您的控制臺,看看結果是什么(無須輸入//之后的注釋)。 我們使用了一個名為typeof()的特殊函數 ——它會返回所傳遞給它的變量的數據類型。 第一次在上面的代碼中調用它,它應該返回string,因為此時myNumber變量包含一個字符串'500'。 看看它第二次將返回什么。
JavaScript中的基礎數學 - 數字與操作符
好吧,可能不是。有些人喜歡數學,有些人可能從在學校必須學習乘法表和長除法時就討厭數學,還有人介于兩者之間。但我們都不能否認,數學是生活的基本組成部分,我們離不了它。尤其如此,當我們學習編寫 JavaScript 程序(或任何其他語言),我們所做的很多事情都依賴于處理數值數據,計算新值等。你將不會驚訝地認識到 JavaScript 有一套可用的全功能的數學功能。
數字類型
var myInt=5; var myFloat=6.667
2.在JavaScript中有一個 typeof 的運算符,是用來檢查所屬對象的類型的
typeof myInt;
typeof myFloat;
算數運算符
算術運算符是我們用來做和的基本運算符
運算符名稱作用示例
8 % 3 (返回 2,將8分成3份,余下2 。)
運算符優先級
這是因為運算符優先級 - 一些運算符將在計算總和的結果(在編程中稱為表達式)時被應用于其他運算符。 JavaScript中的運算符優先級與學校的數學課程相同 - 乘法和除法總是先完成,然后加法和減法(總和總是從左到右進行評估)。
如果要覆蓋運算符優先級,可以首先對要顯式處理的部分進行括號。
具體的查看這個
遞增遞減運算符
它們最常用于循環中,您將在以后的課程中了解。 例如,假設您想循環查看價格表,并為每個價格增加銷售稅。 您可以使用循環依次查看每個值,并在每種情況下進行必要的計算,以添加銷售稅。 當需要時,增量器用于移動到下一個值。 我們實際上提供了一個簡單的例子,顯示了如何完成 —— 在線查看效果,并 查看源代碼,看看是否可以發現增量器! 我們稍后將會詳細介紹循環。
num++;num--;
您可以使瀏覽器以其他方式進行操作 - 遞增/遞減變量,然后返回值 - 將操作符放在變量的開頭,而不是結束。 再次嘗試上面的例子,但這次使用++ num1和--num2。
操作運算符
運算符名稱作用示例等價于
+=遞增賦值右邊的數值加上左邊的變量,然后再返回新的變量。x=3;
x +=4;x=3;
x=x + 4;
-=遞減賦值左邊的變量減去右邊的數值,然后再返回新的變量。x=6;
x -=3;x=6;
x=x - 3;
*=乘法賦值左邊的變量乘以右邊的數值,然后再返回新的變量。x=2;
x *=3;x=2;
x=x * 3;
/=除法賦值左邊的變量除以右邊的數值,然后再返回新的變量。x=10;
x /=5;x=10;
x=x / 5;
比較運算符
運算符名稱作用示例
===嚴格等于測試左右值是否相同5===2 + 4
!==嚴格不等于測試左右值是否相同5 !==2 + 3
<小于測試左值是否小于右值。10 < 6
大于測試左值是否大于右值10 > 20
<=小于或等于測試左值是否小于或等于右值。3 <=2
=大于或等于測試左值是否大于或等于正確值。5 >=4
: 您可能會看到有些人在他們的代碼中和!=來判斷相等和不相等,這些都是JavaScript中的有效運算符,但它們與=/!==不同,前者測試值是否相同, 但是數據類型可能不同,而后者的嚴格版本測試值和數據類型是否相同。 嚴格的版本往往導致更少的錯誤,所以我們建議您使用這些嚴格的版本。
文本處理-JavaScript中的字符串
接下來,我們將把注意力轉向字符串——這是在編程中調用的文本片段。在本文中,我們將了解在學習JavaScript時,您應該了解的所有常見的事情,例如創建字符串、在字符串中轉義引號、并將它們連接在一起。
字符串-基本知識
就像我們處理數字一樣,我們聲明一個變量,用一個字符串值初始化它,然后返回值。這里惟一的區別是,在編寫字符串時,我們需要在字符串上加上雙引號。
var badString=This is a test;
var badString='This is a test;
var badString=This is a test';
這些行不起作用,因為沒有引號的任何文本字符串都被假定為變量名、屬性名、保留字或類似。如果瀏覽器不能找到它,那么將會引發語法錯誤(例如:"missing ; before statement")。
如果瀏覽器能夠識別字符串從哪里開始,但是不能找到字符串的結尾符,如第二行所示,那么它則會提示這樣的錯誤(“unterminated string literal”)。如果您寫的程序目前也引發這樣的錯誤,那么請你回過頭來仔細檢查你的代碼,看是否漏寫了引號
在引用字符串中引號應該是統一的。
轉義字符串中的字符
一般是用來確保一些文本能夠使用,而不是被解釋器錯誤的解釋為代碼,而產生錯誤。
在JavaScript中,我們通過在字符之前放一個反斜杠來實現這一點。試試這個:
var bigmouth='I've got no right to take my place...';
連接字符串
連接是一個很花哨的編程詞,意思是“連接在一起”。在JavaScript中連接字符串使用加號(+)操作符,我們用它來將數字加在一起,但是在這種情況下,它做了一些不同的事情。讓我們在控制臺中嘗試一個例子。
var one='Hello, ';
var two='how are you?';
var joined=one + two;
joined;
變量 joined 的值的結果,它包含的值為 "Hello, how are you?"。
最后一個例子中, 我們只是把兩個字符串連接在一起,但是你可以喜歡連接多少就多少個, 只需要在它們之間加上 + 操作符。試試這個:
var multiple=one + one + one + one + two;
multiple;
你還能用真實的字符串和變量來混合。試試這個:
var response=one + 'I am fine — ' + two;
response;
注意: 當您在您的代碼中輸入一個實際的字符串時,用單引號或雙引號括起來,它被稱為字符串文字。
數字與字符
當我們嘗試添加(或連接)一個字符串和一個數字時,會發生什么?你可能認為他會報錯,但是她并沒有。在遇到這種情況下,解釋器重名的將數字轉換為字符串。你可以通過typeof測試一下這個變量類型究竟是數字還是字符串。
讓我們在我們的控制臺中嘗試一下:
'Front ' + 242;
var myDate='19' + '67';
typeof myDate;
如果您有一個數值變量,您想要將其轉換為字符串,但不改變其他方式,或者您想要轉換為一個數字而不改變的字符串變量,那么您可以使用以下兩個構造:
如果可以的話, Number 對象將把傳遞給它的任何東西轉換成一個數字。
試一試:
var myString='123';
var myNum=Number(myString);
typeof myNum;
另一方面,每個數字都可以用一個名為 toString() 的方法,它將把它轉換成等價的字符串。
試試這個:
var myNum=123;
var myString=myNum.toString();
typeof myString;
有用的字符串方法
現在我們重申一遍—在javascript中,一切東西都可以被當作對象。例如我們創建一個字符串。
var string='This is my string';
browserType[0];
電腦從0開始,不是1! 要檢索任何字符串的最后一個字符,我們可以使用下面這行,將這種技術與我們上面看到的length屬性相結合起來:
browserType[browserType.length-1];
mozilla”的長度為7,但由于計數從0開始,所以字符位置為6,因此需要長度為1。 例如,您可以使用它來查找一系列字符串的第一個字母,并按字母順序排列。
您可以使用它來查找不包含子串“mozilla”的所有字符串實例,或者如果使用否定運算符,請執行以下操作。 你可以這樣做:
if(browserType.indexOf('mozilla') !==-1) {
// do stuff with the string
}
當你知道字符串中的子字符串開始的位置,以及想要結束的字符時,slice()可以用來提取 它。 嘗試以下:
browserType.slice(0,3);
這時返回"moz"——第一個參數是開始提取的字符位置,第二個參數是提取的最后一個字符的后一個位置。所以提取從第一個位置開始,直到但不包括最后一個位置。(此例中)你也可以說第二個參數等于被返回的字符串的長度。
此外,如果您知道要在某個字符之后提取字符串中的所有剩余字符,則不必包含第二個參數,而只需要包含要從中提取的字符位置 字符串中的其余字符。 嘗試以下:
browserType.slice(2);
這返回“zilla” - 這是因為2的字符位置是字母z,并且因為沒有包含第二個參數,所以返回的子字符串是字符串中的所有剩余字符。
它需要兩個參數 - 要被替換下的字符串和要被替換上的字符串。 嘗試這個例子:
browserType.replace('moz','van');
注意,在實際程序中,想要真正更新browserType變量的值,您需要設置變量的值等于剛才的操作結果;它不會自動更新子串的值。所以事實上你需要這樣寫:browserType=browserType.replace('moz','van');。
數組
數組通常被描述為“像列表一樣的對象”; 簡單來說,數組是一個包含了多個值的對象。數組對象可以存儲在變量中,并且能用和其他任何類型的值完全相同的方式處理,區別在于我們可以單獨訪問列表中的每個值,并使用列表執行一些有用和高效的操作,如循環 - 它對數組中的每個元素都執行相同的操作。 也許我們有一系列產品和價格存儲在一個數組中,我們想循環遍歷所有這些產品,并將它們打印在發票上,同時將所有產品的價格統計在一起,然后將總價格打印在底部。
如果我們沒有數組,我們必須將每個產品存儲在一個單獨的變量中,然后調用打印的代碼,并為每個產品單獨添加。 花費的時間要長得多,效率很低,而且也容易出錯。 如果我們有 10 個產品需要添加發票,那就只是有點麻煩而已,但是 100 個,或者 1000 個呢? 我們稍后將在文章中使用這個例子。
創建數組
數組由方
括號構成,其中包含用逗號分隔的元素列表。
假設我們想在一個數組中存儲一個購物清單 - 我們會做一些像下面這樣的事情。 在您的控制臺中輸入以下行:
var shopping=['bread', 'milk', 'cheese', 'hummus', 'noodles'];
shopping;
在這種情況下,數組中的每個項目都是一個字符串,但請記住,您可以將任何類型的元素存儲在數組中 - 字符串,數字,對象,另一個變量,甚至另一個數組。 您也可以混合和匹配項目類型 - 它們并不都是數字,字符串等。嘗試下面這些:
var sequence=[1, 1, 2, 3, 5, 8, 13];
var random=['tree', 795, [0, 1, 2]];
訪問和修改數組
然后,您可以使用括號表示法訪問數組中的元素,與 訪問字符串中的字符 的方法相同。
在您的控制臺中輸入以下內容:
shopping[0];
// returns "bread"
您還可以簡單地為單個數組元素提供新值來修改數組中的元素。 例如:
shopping[0]='tahini';
shopping;
PS:我們以前說過,但還是提醒一下 - 電腦從 0 開始計數!
請注意,數組中包含數組的話稱之為多維數組。 您可以通過將兩組方括號鏈接在一起來訪問數組內的另一個數組。 例如,要訪問數組中的另一個數組內第三個元素的值(見上一節),我們可以這樣做:
random[2][2];
獲取數組長度
你可以通過使用 length 屬性獲取數組的長度(數組中有多少項元素)。 嘗試以下代碼:
sequence.length;
// should return 7
雖然 length 屬性也有其他用途,但最常用于循環(循環遍歷數組中的所有項)。 例如:
var sequence=[1, 1, 2, 3, 5, 8, 13];
for (var i=0; i < sequence.length; i++) {
console.log(sequence[i]);
}
字符串與數組之間的轉換
通常,您會看到一個包含在一個長長的字符串中的原始數據,您可能希望將有用的項目分成更有用的表單,然后對它們進行處理,例如將它們顯示在數據表中。 為此,我們可以使用 split() 方法。 在其最簡單的形式中,這需要一個參數,您要將字符串分隔的字符,并返回分隔符之間的子串,作為數組中的項。
我們來玩一下這個方法,看看它是如何工作的。 首先,在控制臺中創建一個字符串:
var myData='Manchester,London,Liverpool,Birmingham,Leeds,Carlisle';
現在我們用每個逗號分隔它:
var myArray=myData.split(',');
myArray;
最后,嘗試找到新數組的長度,并從中檢索一些項目:
myArray.length;
myArray[0]; // the first item in the array
myArray[1]; // the second item in the array
myArray[myArray.length-1]; // the last item in the array
您也可以使用 join() 方法進行相反的操作。 嘗試以下:
var myNewString=myArray.join(',');
myNewString;
將數組轉換為字符串的另一種方法是使用 toString() 方法。 toString()可以比join()更簡單,因為它不需要一個參數,但更有限制。 使用 join() 可以指定不同的分隔符(嘗試使用與逗號不同的字符運行步驟4)。
var dogNames=["Rocket","Flash","Bella","Slugger"];
dogNames.toString(); //Rocket,Flash,Bella,Slugger
添加和刪除數組項
我們還沒有涵蓋添加和刪除數組元素,現在讓我們來看看。 我們將使用在上一節中最后提到的 myArray 數組。 如果您尚未遵循該部分,請先在控制臺中創建數組:
var myArray=['Manchester', 'London', 'Liverpool', 'Birmingham', 'Leeds', 'Carlisle'];
首先,要在數組末尾添加或刪除一個項目,我們可以使用 push() 和 pop()。
讓我們先使用 push() - 注意,你需要添加一個或多個要添加到數組末尾的元素。 嘗試下面的代碼:
myArray.push('Cardiff');
myArray;
myArray.push('Bradford', 'Brighton');
myArray;
當方法調用完成時,將返回數組的新長度。 如果要將新數組長度存儲在變量中。例如:
var newLength=myArray.push('Bristol');
myArray;
newLength;
從數組中刪除最后一個元素的話直接使用 pop() 就可以。 例如:
myArray.pop();
當方法調用完成時,將返回已刪除的項目。 你也可以這樣做:
var removedItem=myArray.pop();
myArray;
removedItem;
迎觀看indesign自學教程,小編帶大家學習 InDesign 的基本工具和使用技巧,了解如何向 InDesign 項目添加文本。
在本文中,將使用類型工具添加和處理此明信片或文件中的文本,并應用一些簡單的文本格式。首先,繪制一個文本框并鍵入一些文本。在左側的「工具」面板中選擇「文字工具」。
來到文檔前,按住并拖動以創建一個稱為文本框的文本區域。繪制文本框后,光標將出現在文本框中。
使用大寫字母鍵入 DESIGN TALKS 。
如果在其他程序中創建了文本,可以通過多種不同的方式將該文本帶入InDesign文檔,包括復制和粘貼或選擇「文件」-「置入」…以放置Word文檔、RTF或其他文件格式。
如果您還不知道此處將顯示什么文本,也可以通過選擇「文字」-「用假字填充」填充文本框。
創建文本后,通過拖動文本框將該文本移動到位。在左側的「工具」面板中選擇「選擇工具」,并將指針移到文本上。拖動文本,使其在橙色線的左邊緣對齊。
指針變為白色,框架的左邊緣可能會出現一條綠線,告訴您它與該線對齊。這條綠線是一個智能指南,它對對齊內容很有用。
默認情況下,智能輔助線處于打開狀態,可以通過選擇「視圖」-「網絡和參考線」-「智能參考線」來關閉和打開智能輔助線。
這個復選標記意味著他們已經開始了。如果此菜單處于打開狀態,可以按ESC鍵隱藏此菜單。
單擊并拖動文本框的右下角,如果在釋放鼠標按鈕時使其足夠窄,則文本將在其中環繞。
如果拖動并使文本框太小而無法容納文本,則右下角將顯示一個紅色加號,表示文本不再適合。這稱為重疊文本。
拖動同一個角點,使框架變大,以便可以看到所有文本,并使右邊緣與其下方線條的右邊緣對齊,如下所示。
接下來,更改一些簡單的文本格式。首先,選擇框架中的文本,將指針向右移動到文本上,然后雙擊以切換到「文字工具」。
光標現在應該位于文本中。現在可以拖動文本來選擇它,但需要小心。注意指針,如果指針位于文本上方,并顯示類似于此的眼線,則可以在文本上拖動以選擇它,但如果將指針移離框架外的文本,指針的外觀將發生變化。
如果看到此指針時拖動,將創建一個新的文本框。指針位于文本框中時,拖動文本以將其選中。
在文檔右側的「屬性」面板中,可以看到一系列文本格式選項。轉到「字體大小」選項并在字段中選擇值,鍵入29,然后按Return鍵進行更改。
現在,如果文本不適合文本框,如果在文本框的右下角看到紅色加號,嘗試在「屬性」面板中鍵入較小的字體。
要更改文本的顏色以使其更具可讀性,在文檔右側的「屬性」面板中單擊「填色」并確保選中此處的「色板」選項。
此選項顯示與名為樣例的文檔一起保存的一系列默認顏色。選擇可用作白色的[紙色],按ESC鍵隱藏此面板。
如果不再選擇文本,選擇「編輯」,選擇「全部取消選擇」。
現在已經知道如何將文本添加到所有類型的項目中,例如小冊子的描述性文本或目錄中的副本,然后應用一些簡單的格式更改,如字體大小和顏色。
以上就是在 InDesign 中添加文本的方法。
https://www.macz.com/mac/7645.html?id=NzY4OTYwJl8mMjcuMTg2LjguMTUy
*請認真填寫需求信息,我們會在24小時內與您取得聯系。