LaTeX/Макрои
Документи производе са командама које сте научили до сад и они изгледају прихватљиво за велики део аудиторијума. Иако не изгледају фенси, они поштују сва утврђена правила и текстуални распоред, који их чини лаким за читање и пријатним за око. Међутим, постоје ситуације у којима LaTeX не даје команду или окружење које одговара вашим потребама, или излазна вредност неке већ постојеће команде не може задовољити ваше захтеве.
У овом поглављу ћемо покушати да дамо неке савете о томе како да научите нове LaTeX трикове и како да направите да штампање изгледа другачије од онога што је обезбеђено по подразумеваној опцији.
LaTeX је језик на релативно високом нивоу у односу на Plain TeX и стога је ограниченији. Следеће поглавље ће се фокусирати на Plain TeX и обајсниће напредне технике за програмирање.
Нове команде
Да бисте додали своје команде, користите Шаблон:LaTeX/Употреба команду. У суштини, команда захтева два аргумента: име команде коју желите да креирате и дефиниција команде. Запамтите да команда име може, али не мора бити затворена у заградама, како ви желите. Аргумент num у загради је опциони и прецизира број аргумената које нова команда узима (могуће је до 9 команди). Ако нема подразумевану 0, онда ниједан аргумент није дозвољен.
Следећа два примера требало би да вам помогну да добијете идеју. Први пример дефинише нову команду под називом \wbal која ће штампати “Викикњига о LaTeX-у”. Таква наредба може добро доћи ако бисте морали да напишете наслов ове књиге изнова и изнова.
Следећи пример илуструје како треба дефинисати нову команду која узима један аргумент. Таг Шаблон:LaTeX/LaTeX бива замењен аргументом који сте одредили. Ако желите да користите више од једног аргумента, користите Шаблон:LaTeX/LaTeX и тако даље, ови аргументи се додају у додатни сет заграда.
Именујте своју нову команду Шаблон:LaTeX/LaTeX а не Шаблон:LaTeX/LaTeX са бројевима јер се не може користити за именовање макроа — неважећи знакови ће избацити грешку при компајловању.
LaTeX неће дозволити да креирате нову команду која ће прегазити постојећу. Али постоји посебна команда у случају да експлицитно желите ово: Шаблон:LaTeX/LaTeX. Користи исту синтаксу као Шаблон:LaTeX/LaTeX команда.
У одређеним случајевима можда ћете желети да користите Шаблон:LaTeX/LaTeX команду. Радио исто као Шаблон:LaTeX/LaTeX, али ако је команда већ дефинисана, LaTeX ће тихо игнорисати нову команду.
Са LaTex2e, такође је могуће додати подразумевани параметар у команду са следећом синтаксом:
Ако је подразумевани параметар Шаблон:LaTeX/LaTeX присутан, онда је први број аргумената онај који је навео Шаблон:LaTeX/Параметар је уствари опционалан са подразумеваном вредношћу Шаблон:LaTeX/Параметар; ако нема, онда су сви аргументи обавезни.
- Напомена
- Када се команда користи са експлицитним првим параметром, он је дат у загради (овде "Шаблон:LaTeX/Параметар").
Ево једног честог примера: ако пишете књигу о Математици и морате да користите векторе, морате да одлучите како ће изгледати. Постоји неколико различитих стандарда, који се користе у многим књигама. Ако је a вектор, неки људи воле да додају стрелицу изнад њега (), други људи подвлаче (a); још једна честа верзија је болдовање (a). Претпоставимо да желите да пишете векторе са стрелицом изнад њих; онда додајте следећу линију у ваш mystyle.sty.
и пишете ваше векторе у новој Шаблон:LaTeX/LaTeX команди. Можете га звати како год желите, али је боље да изаберете кратко име јер ћете га вероватно писати веома често. Затим, ако се предомислите и желите да ваши вектори другачије изгледају само треба да промените дефиницију ваше Шаблон:LaTeX/LaTeX команде. Користите овај приступ кад год можете: то ће вам уштедети много времена и повећати доследност вашег документа.
Декларисање јаких команди
Неке команде су ломљиве, тако да не успевају у неким срединама. Ако макро ради у телу текста, али не и у (на пример) фигури натписа, вреди покушавати замену Шаблон:LaTeX/LaTeX декларацију са Шаблон:LaTeX/LaTeX у преамбули. Ово посебно важи за макро који, када је проширен, производи текст који је уписан у .aux фајл.
Нова окружења
Баш као и са Шаблон:LaTeX/LaTeX командом, постоји команда за стварање својег окружења. Команда Шаблон:LaTeX/LaTeX користи следећу синтаксу:
Поново Шаблон:LaTeX/LaTeX може имати опциони аргумент. Када је Шаблон:LaTeX/LaTeX команда (са којом почиње окружење) пронађена, материјал који је наведен у Шаблон:LaTeX/Параметар аргументу се води пре текста у окружење на обрађивање. Материјал у Шаблон:LaTeX/Параметар аргументу бива обрађен када се наиђе на Шаблон:LaTeX/LaTeX команду (са којим се завршава окружење).
Аргумент Шаблон:LaTeX/Параметар се користи на исти начин као и у Шаблон:LaTeX/LaTeX команди. LaTeX проверава да не дефинише окружење које већ постоји. Ако икада пожелите да промените постојеће команде, можете користити Шаблон:LaTeX/LaTeX команду. Користи исту синтаксу као и Шаблон:LaTeX/LaTeX команда.
Пример испод илуструје употребу Шаблон:LaTeX/LaTeX команде:
Додатан простор
Када креирате ново окружење можете лако бити успорени од стране додатног простора, који потенцијално могу имати фаталне последице. На пример, када ви желите да створите окружење за наслове које их потискује својим увлачењем као и наредни параграф. Команда Шаблон:LaTeX/LaTeX у begin блоку окружења ће игнорисати сваки простор након извршавања овог дела команде. Блок end је мало компликованији јер се јавља као посебна обрада на крају окружења. With the Шаблон:LaTeX/LaTeX LaTeX ће издати команду Шаблон:LaTeX/LaTeX након што је посебна ‘end’ обрада завршена.
Такође, ако и даље имате проблема са додатним простором који се појавља на крају вашег окружења када се користи \input за спољни извор, уверите се да нема размака између почетка, извора и краја окружења, као што је:
или
Декларисање команди са новим окружењем
Нове команде могу бити декларисане у новим окружењима. Команде које су декларисане са новим окружењем се односе на њихове аргументе са удвајањем # знака. У следећем примеру, ново окружење је декларисано уз гранање команде:
Ако грешком, аргументи прођу до \topics , макро је дефинисан са једним # знаком, и изаћиће следећа порука о грешци:
! Illegal parameter number in definition of \topics.
Проширење броја аргумената
Пакет Шаблон:LaTeX/Пакет ће вам омогућити да дефинишете кључ/вредност опција за команде. Шаблон:LaTeX/Употреба
Пакет је прилично комплетан и документација је потпуна. Препоручујемо програмерима да о пакету прочитају. [1]
Хајде да погледамо један једноставан пример [1]:
Аритметика
LaTeX може манипулисати бројевима.
Пакет Шаблон:LaTeX/Пакет обезбеђује заједничку infix нотацију.
За високе прецизности код израчунавања, можете користити Шаблон:LaTeX/Пакет[2] пакет.
Кондиционали
LaTeX може користити кондиционале захваљујући Шаблон:LaTeX/Пакет пакету.
Петље
Екстензија Шаблон:LaTeX/Пакет пружа Шаблон:LaTeX/LaTeX команду.
Ако користите само Шаблон:LaTeX/LaTeX а не цртање графика, можете користити директно pgffor пакет.
Алтернативно, можете проверити Шаблон:LaTeX/Пакет пакет.
Стрингови
Шаблон:LaTeX/Пакет пружа пуно могућности. Из CTAN:
- тестирање садржаја стринга
- распакивање подстрингова
- замена подстрингова
- дужина стринга
- позиција подстринга
- број појављивања подстринга
Примери: Шаблон:LaTeX/Употреба
LaTeX "куке"
LaTeX пружа две врсте куке:
- Шаблон:LaTeX/LaTeX ће вам одредити скуп команди које ће бити извршене када се наиђе на Шаблон:LaTeX/LaTeX.
- Шаблон:LaTeX/LaTeX ради исто само на Шаблон:LaTeX/LaTeX.
То вам даје мало више флексибилности за макрое. То може бити корисно за замену поставки које се извршавају после преамбуле. Ове куке се могу искористити неколико пута. Команде ће бити извршене у циљу због кога су и постављене.
На пример, хајде да заменимо бројеве страница са oldstylenums: Шаблон:LaTeX/Употреба
Ту су и куке за класе и пакете. Погледајте Креирање пакета.
Командна линија LaTeX-а
Ако радите на Unix-like OS, можете да користите Makefiles или било какву другу скрипту како би направили ваше LaTeX пројекте. С тим у вези могло би бити интересантно прављење различитих верзија истог документа позивом LaTeX-а са параметрима командне линије. Ако додате следећу структуру у ваш документ:
Сада можете позвати LaTeX овако:
latex '\providecommand{\blackandwhite}{true}\input{test.tex}'
Прво се команда Шаблон:LaTeX/LaTeX дефинише, а затим се стварни фајл учита са уносом. Онда, постављањем Шаблон:LaTeX/LaTeX на false верзија боје документа би се направила.