## 參考資料：運算式運算子

您需要瞭解如何使用織布花紋語言運算式運算子，有效製作織布花紋的初稿。

織布花紋運算式語言是圍繞著稱為花紋範圍的值群組所設計。針對經紗或緯紗順序，該範圍是由 1 到 8 個數字所組成，這會對應至編織中的綜絖和踏板。

花紋會以經線方式圍繞其範圍，因此比 8 多一的數字實際上是 1，而比數字 1 少一的數字實際上是 8。這稱為模組式算術。例如，有些可在順序 5678123 或 3218765 中找到。

下表定義一些常用詞彙。

詞彙 | 定義
運算元 | 在所有範例中，用於運算子的運算元是數值順序。但是，運算元可能是從其他運算子建立的其他花紋。如果是這種情況，請使用括號來區分運算元。
展開 | 請參考從速記花紋語言轉譯運算式時建立的實際經紗或紡紗數值順序。
長度 | 說明擴充順序中的元素數目。例如，(1-4-1)[](1-4-1) 可展開為 1223334444333221，長度為 16。

BLOCK

運算子的用法 | 簡短形式
<花紋> block <計數> | []

左邊運算元是任意長度的順序。右邊運算元是用以指定區塊長度之數字字元的花紋 (從 0 到 9)。

如果其中一個運算元長度比另一個運算元短，即可加以擴充 (透過重複方式)，以便與另一個運算元的長度完全相同。

接著，利用長度相等的運算元，左邊運算元的每個元素都會利用右邊運算元中對應位數的值個別進行重複。

展開的長度是 (可能延長) 右邊運算元中數字的總和。

右邊運算元的個別元素 (長度) 可由計數的 {number} 來取代 (從 1 到 127)。

範例 | 展開
1234 [] 2 | 11223344
34512 [] 23 | 334445511122
12345678 [] 87654321 | 111111112222222333333444445555666778
12 [] 123494321 | 12211122221111111112222111221
123 [] 1{12}3 | 1222222222222333

區塊運算式

區塊運算式可能是利用交錯格式來使用。這對於像是蘇格蘭格子呢毯中所使用的色彩順序特別有用。例如，以下為某個 Drummond 色彩順序的表示方式：

[G 8 R 2 G 2 R 56 G 16 B 2 G 2 B 2 G 36 R 2 G 2 R 8|]。

REPEAT

運算子的用法 | 簡短形式
<花紋> repeat <計數> | rep, *

左邊運算元是任意長度的花紋。右邊運算元是整數計數。展開是 <花紋> 重複的 <計數> 次數。

範例 | 展開
1234567 repeat 3 | 123456712345671234567

EXTEND

運算子的用法 | 簡短形式
<花紋> extend <計數> | ext, ->

左邊運算元是任意長度的花紋。右邊運算元是解譯為長度的整數。左邊運算元會重整為右邊運算元所指定的長度。若左邊運算元比所需長度還短，則會進行重複直到變成正確長度為止。如果左邊運算元比較短，則只會進行修剪。

範例 | 展開
123 -> 8 | 12312312
123456787654321 -> 10 | 1234567876

CONCAT

運算子的用法 | 簡短形式
<花紋> concat <花紋> | ,

左邊和右邊運算元都是任意長度的花紋。結果便是左邊運算元會與右邊運算元相連接。請注意，闡述花紋時 (例如 1234)，並不會在其中每個成員之間清楚表示連接作業 (例如，1234 相當於 1,2,3,4)。concat 運算子只有在需要時才會使用，例如，分隔括號運算元。

範例 | 展開
(1-4|),(4-1|) | 1234321
1-8,(1-8 [] 2) | 123456781122334455667788

INTERLEAVE

運算子的用法 | 簡短形式
<花紋> interleave <花紋> | int, ~

左邊和右邊運算元都是任意長度的花紋。如果其中一個運算元長度比另一個運算元短，即可加以擴充 (透過重複方式)，以便與另一個運算元的長度完全相同。接著運算元會進行交錯。交錯會使用右邊運算元的元素來替代左邊運算元的元素 (像是用帶子將手指繫在一起)。展開包含左邊第一個元素、右邊第一個元素、左邊第二個元素、右邊第二個元素，依此類推。

範例 | 展開
123 interleave 76 | 172637
12345678 ~ 4321 | 1423324154637281
123456787654321 ~ 121221222 | 112231425261728272615241322211

UPTO

運算子的用法 | 簡短形式
<花紋> upto <花紋> | <, -

唯有當左邊運算元的最後一個元素完全小於右邊運算元的第一個元素時，才會使用「-」作為 upto 運算子。

左邊和右邊運算元都是任意長度的花紋。

展開是利用左邊運算元的最後一個元素與右邊運算元的第一個元素間之順序來連接的左邊運算元，其會與右邊運算元的其餘元素相連接。

Upto 會以經紗方式來圍繞該範圍。例如，7 upto 2 可展開為 7812。

Upto 運算子後面可能會緊接著 (沒有任何交錯字元) 任意數量的刻度標記 (')。刻度標記表示在往上執行到右邊運算元之前，會循環執行整個範圍。刻度標記的數量會設定循環次數。

範例 | 展開
1-8 | 12345678
1-''5 | 123456781234567812345
123-765 | 123456765
2<1 | 23456781
13 upto'' 5812 | 13456781234567812345812

DOWNTO

運算子的用法 | 簡短形式
<花紋> extend <計數> | ext, ->

運算子的用法：<花紋> downto <花紋> 簡短形式：>, -

唯有當左邊運算元的最後一個元素完全大於右邊運算元的第一個元素時，可能才會使用「-」做為 downto 運算子。

左邊和右邊運算元都是任意長度的花紋。

展開是利用左邊運算元的最後一個元素與右邊運算元的第一個元素間之遞減順序來連接的左邊運算元，其會與右邊運算元的其餘元素相連接。

Downto 會以經紗方式來圍繞該範圍。例如，2 downto 7 可展開為 2187。

Downto 運算子後面可能會緊接著 (沒有任何交錯字元) 任意數量的刻度標記 (')。刻度標記表示在往下執行到右邊運算元之前，會循環執行整個範圍。刻度標記的數量會設定循環次數。

範例 | 展開
8-1 | 87654321
1-8-1 | 123456787654321
5-''1 | 543218765432187654321
567-321 | 567654321
2>1 | 21
13 downto'' 5812 | 132187654321876543218765812

TEMPLATE

運算子的用法 | 簡短形式
<花紋> template <花紋> | temp, :

右邊和左邊運算元都是任意長度的花紋。

Template 允許利用材質花紋 (右邊運算元) 來製作主花紋 (左邊運算元) 的材質 (子連接)。

範本的第一個元素會用來做為根項目。範本順序中的所有其他元素則會根據它們與根項目的差異來進行考量。例如，若 342 是範本花紋，則第一個元素 (3) 是根項目 (r)。第二個元素 (4) 是 r+1，而第三個元素 (2) 是 r-1。因此 template 是 r、 r+1 和 r-1。

此範本接著會利用取代根項目的元素值，套用至左邊運算元中的每個元素。

請記住，值會以經紗方式來圍繞該範圍。

範例 | 展開
1-8 temp 121 | 121232343454565676787818
1-8 :12121 | 1212123232343434545456565676767878781818
12321 temp 878 | 878181212181878
12321:3 | 34543

PALINDROME

運算子的用法 | 簡短形式
<花紋> palindrome | pal, |

此運算子只有一個運算元 (左邊運算元)。該運算元可以是任意長度的花紋。展開的結果是與其本身往後方連接的左邊運算元。

但是，中間元素不會重複，而且會自動捨棄結果的最後一個元素。這對於重複雙向的順序時非常重要，且有助於從織布初稿中移除瑕疵。

雙向字在向前拼或向後拼時都是相同的，例如「太太」。

範例 | 展開
1-8| | 12345678765432
1223334444555 | 122333444455555444433322

PERMUTE

運算子的用法 | 簡短形式
<花紋> permute <排列> | perm

左邊運算元是任意長度的花紋。右邊運算元是排列向量。

左邊運算元會展開為右邊運算元長度之整數倍數的長度。

接著，左邊運算元會以右邊運算元的長度區塊來排列。排列花紋的組織方式可用來重新組織花紋每個區塊中的元素。

例如，312 的排列會「先放置第三個元素，接著放置第一個元素，然後放置第二個元素」。

範例 | 展開
123456787654321 permute 312 | 312645778465132
1-8 perm 1324 | 13245768

PBOX

運算子的用法 | 簡短形式
<花紋> pbox <排列> | 無

左邊運算元是任意長度的花紋。右邊運算元是排列向量。您可以視需要調整它的長度 (透過修剪或重複)，使其等於左邊運算元的長度。

接著，排列花紋的組織方式可用來重新組織花紋的元素。

Pbox 會保留左邊運算元花紋的長度。

範例 | 展開
123456787654321 pbox 21436587 | 214365878563412
1-'8 pbox 4-18-5 | 4321876543218765

UPDOWN

運算子的用法 | 簡短形式
<花紋> updown <花紋> | <>

左邊和右邊運算元都是任意長度的花紋。如果其中一個運算元長度比另一個運算元短，即可加以擴充 (透過重複方式)，以便與另一個運算元的長度完全相同。

接著，UPDOWN 會產生交替式遞增和遞減執行。一律會產生奇數的執行數目。展開包含從左邊運算元之第一個元素到右邊運算元之第一個元素的遞增執行，之後緊接著從此處到第一個運算元之第二個元素的遞減執行，依此類推。在進行從左邊運算元之最後一個元素到右邊運算元之最後一個元素的遞增執行之後，作業才會完成。

Updown 運算子後面可能會緊接著 (沒有任何交錯字元) 任意數量的刻度標記 (')。刻度標記表示在完成往上與往下執行之前，會循環執行整個範圍。刻度標記的數量會設定循環次數。

範例 | 展開
1234 updown 5678 | 12345432345654345676545678
12 <>' 567 | 123456781234543218765432345678123456543218765432123456781234567

DOWNUP

運算子的用法 | 簡短形式
<花紋> downup <花紋> | ><

左邊和右邊運算元都是任意長度的花紋。如果其中一個運算元長度比另一個運算元短，即可加以擴充 (透過重複方式)，以便與另一個運算元的長度完全相同。

接著，DOWNUP 會產生交替式遞增和遞減執行。一律會產生奇數的執行數目。展開包含從左邊運算元之第一個元素到右邊運算元之第一個元素的遞減執行，之後緊接著從此處到第一個運算元之第二個元素的遞增執行，依此類推。在進行從左邊運算元之最後一個元素到右邊運算元之最後一個元素的遞減執行之後，作業才算完成。

Downup 運算子後面可能會緊接著 (沒有任何交錯字元) 任意數量的刻度標記 (')。刻度標記表示在完成往上與往下執行之前，會循環執行整個範圍。刻度標記的數量會設定循環次數。

範例 | 展開
1234 downup 5678 | 18765678121876781232187812343218
12 ><' 567 | 18765432187656781234567812187654321876781234567818765432187

ROTATE

運算子的用法 | 簡短形式
<花紋> rotate <數字> | rot, #

左邊運算元是任意長度的花紋。右邊運算元是解譯為長度的整數 (可能是負數)。Rotate 會從花紋的開頭取得 <數字> 所指定的元素組，並將其移至結尾。負數會從花紋的結尾取得元素組，並將它們移至開頭。

範例 | 展開
12345678 rotate 3 | 45678123
1-4-1 rotate -3 | 3211234

REVERSE

運算子的用法 | 簡短形式
<花紋> reverse | rev, `

此運算子只有一個運算元 (左邊運算元)。該運算元可能是任意長度的花紋。展開的結果是往回寫入的左邊運算元。

範例 | 展開
1-8 reverse | 87654321
1223334444555` | 5554444333221

優先順序

在運算式中使用數個運算子時，會依照優先順序來評估它們。也就是說，某些運算會在其他運算之前執行。花紋語言的優先順序等級如下所示：

• | upto、downto、concat

• | downup、updown

• | repeat、extend、template、interleave,

• | permute、pbox

• | palindrome

若有兩個運算子的優先順序相同，即會遵照從左至右的順序。

範例 | 解譯為
1-4-2 | ((1 upto 4) downto 2)
1234[]4321| | ((1234 block 4321) palindrome)
1-4 block 4-1 | ((1 upto 4) block (4 upto1))
(1-4|),(4-1|)| | ((((1 upto 4) palindrome) concat ((4 upto 1) palindrome)) palindrome)

• | 如果優先順序出現錯誤或不清楚，請使用括號來清楚表示所需的評估順序。

Copyright 2016 Corel Corporation. 保留所有權.