Перейти к содержимому

Как вставить код в latex

  • автор:

latex Подсветка программного кода (оформление листингов) — пакет, пример

vedro-compota's picture

В преамбулу добавляем пакет для подсветки кода:

\usepackage % для подсветки кода

\begin[language=SQL] CREATE TABLE `SliderImages` ( `sliderImageID` INT(11) NOT NULL AUTO_INCREMENT, `sliderID` INT(11) NOT NULL, `imageID` INT(11) NOT NULL, `priority` INT(11) NOT NULL DEFAULT ‘0’, PRIMARY KEY (`sliderImageID`), INDEX `FK__SliderImages_Slider` (`sliderID`), CONSTRAINT `FK_SliderImages_Slider` FOREIGN KEY (`sliderID`) REFERENCES `Slider` (`sliderID`) ON UPDATE CASCADE ON DELETE CASCADE ) COLLATE=’utf8_general_ci’ ENGINE=InnoDB ROW_FORMAT=COMPACT AUTO_INCREMENT=81 ; \end

Но чтобы подсветка была цветной пробуйте что-то типа (объяснения и продолжение напишу позже):

\documentclass[a4paper] \usepackage[14pt] % для того чтобы задать нестандартный 14-ый размер шрифта \usepackage[utf8] \usepackage[russian] \usepackage[active] \newcommand\,> \newcommand\,> % переименовываем список литературы в «список используемой литературы» \addto\captionsrussian> \newcounter \newtheorem % задаём выводимое слово (для теорем) \newtheorem % задаём выводимое слово (для определений) % объявляем новые команды % новая команда \RNumb для вывода римских цифр \newcommand<\RNumb>[1]<\uppercase\expandafter<\romannumeral #1\relax>> \usepackage \usepackage \definecolor \definecolor \definecolor \lstset< % backgroundcolor=\color, % choose the background color; you must add \usepackage or \usepackage basicstyle=\footnotesize, % the size of the fonts that are used for the code breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace breaklines=true, % sets automatic line breaking captionpos=b, % sets the caption-position to bottom commentstyle=\color, % comment style deletekeywords=, % if you want to delete keywords from the given language escapeinside=<*)>, % if you want to add LaTeX within your code extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 frame=single, % adds a frame around the code keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) keywordstyle=\color, % keyword style language=Octave, % the language of the code otherkeywords=<*. >, % if you want to add more keywords to the set numbers=left, % where to put the line-numbers; possible values are (none, left, right) numbersep=5pt, % how far the line-numbers are from the code numberstyle=\tiny\color, % the style that is used for the line-numbers rulecolor=\color, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) showspaces=false, % show spaces everywhere adding particular underscores; it overrides ‘showstringspaces’ showstringspaces=false, % underline spaces within strings only showtabs=false, % show tabs within strings adding particular underscores stepnumber=2, % the step between two line-numbers. If it’s 1, each line will be numbered stringstyle=\color, % string literal style tabsize=2, % sets default tabsize to 2 spaces title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title > \begin \lstset< % language=C, % выбор языка для подсветки (здесь это С) basicstyle=\small\sffamily, % размер и начертание шрифта для подсветки кода numbers=left, % где поставить нумерацию строк (слева\справа) numberstyle=\tiny, % размер шрифта для номеров строк stepnumber=1, % размер шага между двумя номерами строк numbersep=5pt, % как далеко отстоят номера строк от подсвечиваемого кода backgroundcolor=\color, % цвет фона подсветки - используем \usepackage showspaces=false, % показывать или нет пробелы специальными отступами showstringspaces=false, % показывать или нет пробелы в строках showtabs=false, % показывать или нет табуляцию в строках frame=single, % рисовать рамку вокруг кода tabsize=2, % размер табуляции по умолчанию равен 2 пробелам captionpos=t, % позиция заголовка вверху [t] или внизу [b] breaklines=true, % автоматически переносить строки (да\нет) breakatwhitespace=false, % переносить строки только если есть пробел escapeinside= <*)>% если нужно добавить комментарии в коде > \begin[label=some-code,caption=Some Code] int main(void) // main routine < int i, j; // Initialisation of counters // The code below prints the 3x3 matrix for (i=0; icblas_dgemv(CblasRowMajor, CblasNoTrans, 3, 3, 1.0, m, 3, x, 1, 0.0, y, 1); // The code below prints the 3x3 matrix - result of multiplication for (i=0; i \end Утверждение 2.11 (свойства протокола Шамира). \setcounter \setcounter \subsection Пусть именются абоненты $A, B, C, . $, которые хотят передавать друго другу зашифрованные сообщения, не имея никаких защищённых каналов связи. В этом разделе мы рассмотрим шифр предложенный Эль-Намалем (Taher ElGamal), который решает эту задачу, используя, в отличии от шифра Шамира только одну пересылку сообщения. Фактически здесь используется схема Даффи-Хеллмана, чтобы сформировать общий секретный ключдля двух абонентов, передающих друг другу сообщение, и затем вообщение шифруется путём умножения его на этот ключ. Для каждого следующего сообщения секретный ключ вычисляется заново. Перейдём к точному описанию метода. \begin[language=SQL] CREATE TABLE `SliderImages` ( `sliderImageID` INT(11) NOT NULL AUTO_INCREMENT, `sliderID` INT(11) NOT NULL, `imageID` INT(11) NOT NULL, `priority` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`sliderImageID`), INDEX `FK__SliderImages_Slider` (`sliderID`), CONSTRAINT `FK_SliderImages_Slider` FOREIGN KEY (`sliderID`) REFERENCES `Slider` (`sliderID`) ON UPDATE CASCADE ON DELETE CASCADE ) COLLATE='utf8_general_ci' ENGINE=InnoDB ROW_FORMAT=COMPACT AUTO_INCREMENT=81 ; \end Для всей группы абонентов выбирается некотрое большое простое число $p$ и число $g$, такие что различные степени $g$ суть различные числа по модулю $p$ (см. раздел 2.2). Числа $p$ и $g$ передаются абонентам в открытом виде (они могут использоваться всеми абонентами сети). Затем каждый абонент выбирает свое секретное число $c_i, 1$ \end

Key Words for FKN + antitotal forum (CS VSU):

  • Log in to post comments
  • 7273 reads

Вставка JS кода в latex

Подскажите пожалуйста, как мне вставить JS код в Latex введите сюда описание изображения Для того чтобы он выглядел после преобразования из tex в pdf код выглядел в своем первоначальном виде , а не так: введите сюда описание изображения

Отслеживать

задан 13 дек 2022 в 22:52

166 11 11 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

\usepackage
\begin class Node < constructor(value, next) < this.value = value this.next = next >> \end

Отслеживать

ответ дан 13 дек 2022 в 23:56

Vadik Sirekanyan Vadik Sirekanyan

8,571 4 4 золотых знака 21 21 серебряный знак 36 36 бронзовых знаков

Предложу альтернативу — пакет minted: ctan.altspu.ru/macros/latex/contrib/minted/minted.pdf Его использовать несколько сложнее (нужен Python в ОС и разрешить редактору обращаться к консоли), но он понимает многие языки и подсвечивает синтаксис. Особенно удобно, если кода не 3 строки, а отдельный файл, который можно подключить.

Code listing

L a T e X is widely used in science and programming has become an important aspect in several areas of science, hence the need for a tool that properly displays code. This article explains how to use the standard verbatim environment as well as the package listings, which provide more advanced code-formatting features. This separate article discusses the minted package, which performs syntax-highlighting using Python’s pygmentize library.

The verbatim environment

The default tool to display code in L a T e X is verbatim , which generates an output in monospaced font.

\beginverbatim> Text enclosed inside \textttverbatim> environment is printed directly and all \LaTeX<> commands are ignored. \endverbatim> 

The code above produces the following output:

Verbatim1.png

Just as in the example at the introduction, all text is printed keeping line breaks and white spaces. There’s a starred version of this command whose output is slightly different.

\beginverbatim*> Text enclosed inside \textttverbatim> environment is printed directly and all \LaTeX<> commands are ignored. \endverbatim*> 

The code above produces the following output:

Verbatim2.png

In this case spaces are emphasized with a special «visible-space» character: .

Verbatim-like text can also be used in a paragraph by means of the \verb command.

In the directory \verb|C:\Windows\system32| you can find a lot of Windows system applications. The \verb+\ldots+ command produces \ldots 

The code above produces the following output:

Verbatim3OLV2.png

The command \verb|C:\Windows\system32| prints the text inside the delimiters | in verbatim format. Any character, except letters and * , can be used as delimiter. For instance \verb+\ldots+ uses + as delimiter.

Using listings to highlight code

To use the lstlisting environment you have to add the following line to the preamble of your document:

\usepackagelistings> 

Here’s an example of using the lstlisting environment from the listings package:

\beginlstlisting> import numpy as np def incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M \endlstlisting> 

The code above produces the following output:

CodeListingEx1.png

In this example, the output ignores all L a T e X commands and the text is printed keeping all the line breaks and white spaces typed. Let’s see a second example:

\beginlstlisting>[language=Python] import numpy as np def incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M \endlstlisting> 

The code above produces the following output:

CodeListingEx2.png

The additional parameter inside brackets [language=Python] enables code highlighting for this particular programming language (Python), special words are in boldface font and comments are italicized. See the reference guide for a complete list of supported programming languages.

Importing code from a file

Code is usually stored in a source file, therefore a command that automatically pulls code from a file becomes very handy.

The next code will be directly imported from a file \lstinputlisting[language=Octave]BitXorMatrix.m> 

CodeListingEx3.png

The command \lstinputlisting[language=Octave] imports the code from the file BitXorMatrix.m, the additional parameter in between brackets enables language highlighting for the Octave programming language. If you need to import only part of the file you can specify two comma-separated parameters inside the brackets. For instance, to import the code from the line 2 to the line 12, the previous command becomes

\lstinputlisting[language=Octave, firstline=2, lastline=12]BitXorMatrix.m> 

If firstline or lastline is omitted, it’s assumed that the values are the beginning of the file, or the bottom of the file, respectively.

Code styles and colours

Code formatting with the listing package is highly customisable. Let’s see an example

\documentclassarticle> \usepackagelistings> \usepackagexcolor> \definecolorcodegreen>rgb>0,0.6,0> \definecolorcodegray>rgb>0.5,0.5,0.5> \definecolorcodepurple>rgb>0.58,0,0.82> \definecolorbackcolour>rgb>0.95,0.95,0.92> \lstdefinestylemystyle> backgroundcolor=\colorbackcolour>, commentstyle=\colorcodegreen>, keywordstyle=\colormagenta>, numberstyle=\tiny\colorcodegray>, stringstyle=\colorcodepurple>, basicstyle=\ttfamily\footnotesize, breakatwhitespace=false, breaklines=true, captionpos=b, keepspaces=true, numbers=left, numbersep=5pt, showspaces=false, showstringspaces=false, showtabs=false, tabsize=2 > \lstsetstyle=mystyle> \begindocument> The next code will be directly imported from a file \lstinputlisting[language=Octave]BitXorMatrix.m> \enddocument> 

The code above produces the following output:

CodeListingEx4.png

As you see, the code colouring and styling greatly improves readability.

In this example the package xcolor is imported and then the command \definecolor<><><> is used to define new colours in rgb format that will later be used. For more information see: using colours in L a T e X

There are essentially two commands that generate the style for this example:

\lstdefinestyle <. >Defines a new code listing style called «mystyle». Inside the second pair of braces the options that define this style are passed; see the reference guide for a full description of these and some other parameters. \lstset Enables the style «mystyle». This command can be used within your document to switch to a different style if needed.

Captions and the list of Listings

Just like in floats (tables and figures), captions can be added to a listing for a more clear presentation.

\beginlstlisting>[language=Python, caption=Python example] import numpy as np def incmatrix(genl1,genl2): m = len(genl1) n = len(genl2) M = None #to become the incidence matrix VT = np.zeros((n*m,1), int) #dummy variable #compute the bitwise xor matrix M1 = bitxormatrix(genl1) M2 = np.triu(bitxormatrix(genl2),1) for i in range(m-1): for j in range(i+1, m): [r,c] = np.where(M2 == M1[i,j]) for k in range(len(r)): VT[(i)*n + r[k]] = 1; VT[(i)*n + c[k]] = 1; VT[(j)*n + r[k]] = 1; VT[(j)*n + c[k]] = 1; if M is None: M = np.copy(VT) else: M = np.concatenate((M, VT), 1) VT = np.zeros((n*m,1), int) return M \endlstlisting> 

The code above produces the following output:

CodeListingEx5.png

Adding the comma-separated parameter caption=Python example inside the brackets, enables the caption. This caption can be later used in the list of Listings.

\lstlistoflistings 

CodeListingEx6OLV2.png

Sample Overleaf project

Reference guide

Supported languages

supported languages (and its dialects if possible, dialects are specified in brackets and default dialects are italized):

ABAP (R/2 4.3, R/2 5.0, R/3 3.1, R/3 4.6C, R/3 6.10) ACSL
Ada (2005, 83, 95) Algol (60, 68)
Ant Assembler (Motorola68k, x86masm)
Awk (gnu, POSIX) bash
Basic (Visual) C (ANSI, Handel, Objective, Sharp)
C++ (ANSI, GNU, ISO, Visual) Caml (light, Objective)
CIL Clean
Cobol (1974, 1985, ibm) Comal 80
command.com (WinXP) Comsol
csh Delphi
Eiffel Elan
erlang Euphoria
Fortran (77, 90, 95) GCL
Gnuplot Haskell
HTML IDL (empty, CORBA)
inform Java (empty, AspectJ)
JVMIS ksh
Lingo Lisp (empty, Auto)
Logo make (empty, gnu)
Mathematica (1.0, 3.0, 5.2) Matlab
Mercury MetaPost
Miranda Mizar
ML Modula-2
MuPAD NASTRAN
Oberon-2 OCL (decorative, OMG)
Octave Oz
Pascal (Borland6, Standard, XSC) Perl
PHP PL/I
Plasm PostScript
POV Prolog
Promela PSTricks
Python R
Reduce Rexx
RSL Ruby
S (empty, PLUS) SAS
Scilab sh
SHELXL Simula (67, CII, DEC, IBM)
SPARQL SQL
tcl (empty, tk) TeX (AlLaTeX, common, LaTeX, plain, primitive)
VBScript Verilog
VHDL (empty, AMS) VRML (97)
XML XSLT

Options to customize code listing styles

  • backgroundcolor — colour for the background. External color or xcolor package needed.
  • commentstyle — style of comments in source language.
  • basicstyle — font size/family/etc. for source (e.g. basicstyle=\ttfamily\small )
  • keywordstyle — style of keywords in source language (e.g. keywordstyle=\color )
  • numberstyle — style used for line-numbers
  • numbersep — distance of line-numbers from the code
  • stringstyle — style of strings in source language
  • showspaces — emphasize spaces in code (true/false)
  • showstringspaces — emphasize spaces in strings (true/false)
  • showtabs — emphasize tabulators in code (true/false)
  • numbers — position of line numbers (left/right/none, i.e. no line numbers)
  • prebreak — displaying mark on the end of breaking line (e.g. prebreak=\raisebox[0ex][0ex]<\ensuremath<\hookleftarrow>> )
  • captionpos — position of caption (t/b)
  • frame — showing frame outside code (none/leftline/topline/bottomline/lines/single/shadowbox)
  • breakatwhitespace — sets if automatic breaks should only happen at whitespaces
  • breaklines — automatic line-breaking
  • keepspaces — keep spaces in the code, useful for indetation
  • tabsize — default tabsize
  • escapeinside — specify characters to escape from source code to L a T e X (e.g. escapeinside=<*)>)
  • rulecolor — Specify the colour of the frame-box

Further reading

For more information see:

  • Code Highlighting with minted
  • Using colours in LaTeX
  • Table of contents
  • Management in a large project
  • Multi-file LaTeX projects
  • Font sizes, families, and styles
  • Font typefaces
  • listings package documentation
  • listings CTAN website
  • Documentation Home
  • Learn LaTeX in 30 minutes

Overleaf guides

  • Creating a document in Overleaf
  • Uploading a project
  • Copying a project
  • Creating a project from a template
  • Using the Overleaf project menu
  • Including images in Overleaf
  • Exporting your work from Overleaf
  • Working offline in Overleaf
  • Using Track Changes in Overleaf
  • Using bibliographies in Overleaf
  • Sharing your work with others
  • Using the History feature
  • Debugging Compilation timeout errors
  • How-to guides
  • Guide to Overleaf’s premium features

LaTeX Basics

  • Creating your first LaTeX document
  • Choosing a LaTeX Compiler
  • Paragraphs and new lines
  • Bold, italics and underlining
  • Lists
  • Errors

Mathematics

  • Mathematical expressions
  • Subscripts and superscripts
  • Brackets and Parentheses
  • Matrices
  • Fractions and Binomials
  • Aligning equations
  • Operators
  • Spacing in math mode
  • Integrals, sums and limits
  • Display style in math mode
  • List of Greek letters and math symbols
  • Mathematical fonts
  • Using the Symbol Palette in Overleaf

Figures and tables

  • Inserting Images
  • Tables
  • Positioning Images and Tables
  • Lists of Tables and Figures
  • Drawing Diagrams Directly in LaTeX
  • TikZ package

References and Citations

  • Bibliography management with bibtex
  • Bibliography management with natbib
  • Bibliography management with biblatex
  • Bibtex bibliography styles
  • Natbib bibliography styles
  • Natbib citation styles
  • Biblatex bibliography styles
  • Biblatex citation styles

Languages

  • Multilingual typesetting on Overleaf using polyglossia and fontspec
  • Multilingual typesetting on Overleaf using babel and fontspec
  • International language support
  • Quotations and quotation marks
  • Arabic
  • Chinese
  • French
  • German
  • Greek
  • Italian
  • Japanese
  • Korean
  • Portuguese
  • Russian
  • Spanish

Document structure

  • Sections and chapters
  • Table of contents
  • Cross referencing sections, equations and floats
  • Indices
  • Glossaries
  • Nomenclatures
  • Management in a large project
  • Multi-file LaTeX projects
  • Hyperlinks

Formatting

  • Lengths in L a T e X
  • Headers and footers
  • Page numbering
  • Paragraph formatting
  • Line breaks and blank spaces
  • Text alignment
  • Page size and margins
  • Single sided and double sided documents
  • Multiple columns
  • Counters
  • Code listing
  • Code Highlighting with minted
  • Using colours in LaTeX
  • Footnotes
  • Margin notes

Fonts

  • Font sizes, families, and styles
  • Font typefaces
  • Supporting modern fonts with X Ǝ L a T e X

Presentations

Commands

Field specific

  • Theorems and proofs
  • Chemistry formulae
  • Feynman diagrams
  • Molecular orbital diagrams
  • Chess notation
  • Knitting patterns
  • CircuiTikz package
  • Pgfplots package
  • Typesetting exams in LaTeX
  • Knitr
  • Attribute Value Matrices

Class files

  • Understanding packages and class files
  • List of packages and class files
  • Writing your own package
  • Writing your own class

Advanced TeX/LaTeX

Работа с TeX/LaTeX с использованием пакета AUCTeX

TeX-mode не обеспечивает в полной мере полноценной работы с исходными текстами TeX/LaTeX. Для обеспечения более комфортабельной работы с этими файлами, был разработан пакет AUCTeX который обеспечивает следующие возможности:

  • поддержку работы с TeX/LaTeX/ConTeXt;, с автоматическим выбором соотвествующего набора команд;
  • подстветку синтаксиса команд TeX;
  • ввод команд, названий разделов и окружений, с использованием дополнения имен и парамаетров;
  • быстрый ввод команд изменения шрифтов;
  • правильный ввод TeX’вских кавычек;
  • вставку математических команд с помощью меню и клавиатуры;
  • запуск внешних команд для обработки исходных текстов и просмотра результатов;
  • показ ошибок компиляции и переход на соответствующее место в исходных текстах;
  • поддержка документов, состоящих из нескольких файлов;
  • скрытие частей документа (fold);
  • поддержка макросов и окружений, предоставляемых специальными стилевыми файлами;
  • возможность создания поддержки для стилевых файлов пользователя.

Это только основные возможности пакета. Более подробную информацию вы можете найти в справочных страницах пакета или на сайте Emacs WiKi.

Установка пакета

Для установки пакета требуется наличие относительно свежих версий GNU Emacs (как минимум версия 21), или XEmacs версии 21. Для обработки файлов с исходными текстами требуется наличие работающего LaTeX. А для сборки пакета также потребуется наличие пакета texinfo.

Сборка пакета производится с помощью стандартных скриптов configure . Тонкая настройка параметров производится с помощью опций configure . После настройки пакета нужно выполнить лишь две команды: make — для сборки, и make install — для установки.

Загрузка пакета производится с помощью следующих команд, помещенных в файл инициализации Emacs:

(setq load-path (cons "~/elisp" load-path)) (require 'tex-site)

первая строка нужна лишь в том случае, если вы установили пакет в нестандартное место, а всю работу по загрузке пакета выполняет функция, указанная во второй строке. Кроме этого, вы можете указать команды установки переменных, которые позволят производить более тонкую настройку пакета. Эти переменные будут обсуждаться в разделе Настройка.

Работа с пакетом

Работа с пакетом может осуществляться разными способами — через меню, с помощью сочетаний клавиш и используя именованные команды. Команды пакета можно разделить на две группы — команды работы с текстом, и команды обработки исходных текстов.

Команды работы с текстом, такие как команды вставки окружений, макросов и т.п., сосредоточены в меню LaTeX, а команды обработки исходных текстов сосредоточены в меню Command.

Редактирование исходных текстов

AUCTeX очень сильно помогает пользователю при вводе команд разметки TeX и LaTeX. Это и использование стандартных механизмов дополнений при вводе названий команд, а также генерация имен меток, и многие другие вещи.

Пакет AUCTeX позволяет пользователю вводить команды разметки TeX удобным способом. Для ввода названий команд TeX могут использоваться стандартные механизмы дополнений Emacs. И кроме того, для многих команд пакет знает какие аргументы им требуются, и запрашивает нужные значения у пользователя. Он даже может различать обязательные и необязательные аргументы. Вставка команды разметки производится с помощью сочетания клавиш C-c C-m или C-c RET , которые вызывают функцию TeX-insert-macro . При вводе имени команды, и аргументов, пользователь может использовать стандартные клавиши работы с дополнениями, такие как TAB . В качестве имени команды, пакет обычно предлагает имя последней введенной команды. Пользователь может также переопределить клавишу \ , так, чтобы она вызывала нужную команду для ввода имени макроса, например с помощью следующего кода, помещенного в файл инициализации:

(add-hook 'TeX-mode-hook '(lambda () (local-set-key "\\" 'TeX-electric-macro)))

Кроме этого, пользователь может вводить имена макросов используя сочетание клавиш M-TAB , что позволяет избежать запроса аргументов.

Для ввода команд секционирования пользователь может воспользоваться командой LaTeX-section , привязанной к сочетанию клавиш C-c C-s . При выполнении этой команды, у пользователя запросят имя соответствующей команды, обозначающей раздел документа (при вводе имени, пользователь может использовать механизмы дополнений), заголовок раздела, и имя метки, которая будет связанна с данным разделом. При этом, имя раздела может быть автоматически сгенерировано на основании имени раздела (правда это работает только для латинских названий разделов). При вставке нового раздела, пакет выполняет команды, хранящиеся в переменной LaTeX-section-hook , что позволяет выполнить тонкую настройку поведения данной команды. О том, как можно настроить поведение данной команды, вы можете прочитать в разделе «Inserting chapters, sections, etc.» руководства по AUCTeX.

Пакет AUCTeX также позволяет пользователю более удобно вводить команды для обозначения окружений LaTeX, вставляя пару команд \begin<> и \end<> , и также запрашивая параметры для данного окружения, в том случае, если он про него знает. Для вставки команд окружения используется команда LaTeX-environment , привязанная к сочетанию клавиш C-c C-e . Также, как и для предыдущих команд, при вводе имени окружения, пакет позволяет использовать механизмы дополнения, а также использовать историю ввода предыдущих имен. Пакет позволяет работать не только со стандартными окружениями LaTeX, но и учитывает текущий класс документа, а также список загруженных пакетов (это происходит в том случае, если переменная TeX-parse-self имеет истинное значение).

Для вставки команд изменения шрифтов текста, пакет AUCTeX предлагает большое количество функций. Для ускорения ввода, они все привязаны к сочетаниям клавиш, начинающимся с префикса C-c C-f , после которого идет сочетание клавиши Control и буквы, которая обозначает нужный шрифт. Эти команды вставляют соотвествующую команду разметки и помещают курсор между фигурными скобками. В том случае, если вы хотите изменить шрифт для уже написанного текста, то просто выделите область и выполните соотвествующую команду. При работе в математическом режиме, эти команды вставляют соотвестсвующие аналоги. Пакет определяет следующие команды для изменения шрифтов:

  • C-c C-f C-b вставляет команду жирного шрифта \textbf
  • C-c C-f C-i вставляет команду шрифта italics \textit
  • C-c C-f C-e вставляет команду акцентирования (emphasized) \emph
  • C-c C-f C-s вставляет команду наклонного шрифта \textsl
  • C-c C-f C-r вставляет команду шрифта roman \textrm
  • C-c C-f C-f вставляет команду шрифта sans serif \textsf
  • C-c C-f C-t вставляет команду шрифта печатной машинки \texttt
  • C-c C-f C-c вставляет команду шрифта SMALL CAPS \textsc
  • C-c C-f C-d удаляет окружающую команду изменения шрифта.

В процессе работы с исходными текстами, пакет пытается сделать их более читаемыми за счет использования некоторых вещей — подсветки ключевых слов TeX и LaTeX в тексте, а также за счет вставки отступов для показа отношения между частями текстов. Для вставки нужного отступа может испльзоваться клавиша TAB, или это может быть сделано автоматически при заполнении параграфа с помощью M-q , или для всего буфера, с помощью команды LaTeX-fill-buffer .

Часто неободимо закомментировать область исходного кода TeX или LaTeX. Это можно сделать с помощью команд C-c ; и C-c % . C-c ; закомментирует все строки в выделенной области, а C-c % закомментирует строки текущего параграфа. Наберите C-c ; для того, чтобы раскомментировать все строки выделенной области, или C-c % для раскомментирования всех закомментированных строк параграфа. Эти команды всталяют или удаляют знаки % .

Кроме указанных выше команд, пакет старается вставлять правильные знаки кавычек, знаки доллара для обозначение математического режима, а также пары скобок для того, чтобы избежать проблем с непарными скобками.

Обработка исходных текстов

Все действия по обработке текста в AUCTeX приведены к одному сочетанию клавиш — C-c C-c в зависимости от контекста, данная комманда приводит в вызову LaTeX (или TeX), программы просмотра или печати. Во многих случаях, пакет предлагает правильную команду: если текст изменялся, то предлагается команда компиляции текста — latex или tex в зависимости от контекста; если текст был скомпилирован нормально, то вызывается программа просмотра и т.д. Это же самое касается программ создания индексов и библиографий. Пакет AUCTeX может определить достаточно точно, нужно ли еще раз запускать программу компиляции, но это может происходить не всегда.

В качестве выходого формата вы можете выбрать либо DVI или PDF. Вы можете определять эти и другие параметры выходного файла с помощью нескольких сочетаний клавиш, перечисленных ниже:

  • C-c C-t C-p Переключает между выводом в форматах DVI и PDF;
  • C-c C-t C-i Включает и выключает интерактивный режим;
  • C-c C-t C-s Включает и выключение поддержки специальных тагов исходных текстов;
  • C-c C-t C-o Включает и выкулючает использование Omega/lambda.

При обработке исходного текста, создается временный буфер, в который выводится результат компиляции. Если в файле находится ошибка, то пользователь может переместиться на первую найденную ошибку с помощью сочетания клавиш C-c ` . При этом, окно разбивается на два: в верхнем отображается исходный текст, а в нижнем — результат компиляции. После исправления ошибки, можно переместиться на следующую ошибку, используя это же сочетание клавиш. Используя команду TeX-toggle-debug-boxes , привязанную к сочетанию клавиш C-c C-w , можно отображать также предупреждения о переполнение или недополнении боксов.

Если вы хотите обработать только некоторые части документа, то вы можете отметить нужную область и использовать сочетание клавиш C-c C-r для обработки выделенных данных. Выделенная область обрабатывается точно также как и весь документ. При обработке области будет использоваться преамбула основного документа. В том случае, если ваш документ состоит из нескольких файлов, то вы можете обработать текущий буфер с помощью сочетания клавиш C-c C-b . При этом, при компиляции буфера будет использоваться преамбула главного документа.

В том случае, если команда входит в бесконечный цикл, или вы просто хотите завершить ее выполнение, то вы можете исполльзовать сочетание клавиш C-c C-k для ее завершения. Для просмотра вывода команды, который добавляется в конец буфера команды, вы можете использовать сочетание клавиш C-c C-l .

AUCTeX позволяет запустить внешнюю программу для просмотра вашего документа. Обычно это происходит когда пользователь набирает C-c C-c после того, как документ отформатирован, или используя соответствующий пункт меню Command . Команда TeX-view , привязаная к сочетанию клавиш C-c C-v , запускает программу просмотра без подтверждения. Программа просмотра запускается либо для области текста, либо для основного файла, в зависимости от последней использованной команды. Это особенно полезно если вы хотите перейти к точке текста, соответствующей точке в программе просмотра DVI при использовании режима TeX-source-specials-mode .

AUCTeX старается угадать какой тип программы просмотра (DVI, PostScript или PDF) будет использоваться и какие опции должны быть переданы ей. Это решение основывается на файлах результатов, присутствующих в рабочем каталоге, а также на классе документа и используемых стилевых файлах. Например, если в рабочем каталоге находится файл DVI, то будет запущена программа просмотра DVI. А при наличии PDF файла будет запущена программа просмотра PDF. Если пользователь указывает специальный формат бумаги, такой как a5paper или использует опцию landscape, то программе просмотра будут переданы соответствующие опции. Некоторые программы просмотра DVI особенно нуждаются в такой информации для того, чтобы корректно отображать документ. Если используются пакеты pstricks или psfrag, то программа просмотра DVI не сможет корректно отобразить его содержимое, и вместо него будет запущена программа просмотра PostScript.

Информация о типах файлов и стилевых опциях и связанных с ними программах просмотра и соответсвующих опциях хранится в переменных TeX-output-view-style и TeX-view-style .

При обработке исходных текстов с помощью TeX или LaTeX пользователь сможет найти только общие ошибки, но не примеры плохого стиля. Для нахождения стилевых ошибок, таких как потерю пробела после сокращения, или использования . вместо \ldots и т.п., может использоваться утилита lacheck . Вы можете запустить lacheck с помощью команды C-c C-c Check . В качестве результата, пользователь получит список ошибок в буфере *compilation* . Вы можете использовать теже приемы что и при обработке ошибок компиляции. Кроме lacheck , пользователи могут использовать программу chktex , которая является более настраиваемой, но может не находить всех ошибок, которые находит lacheck .

Работа с частями документа

Пакет AUCTeX предоставляет пользователю мозможность работы с частями документа. Существует два метода работы с частями документов — свертывание (folding) и ранжирование (outlining).

Используя возможности свертывания, предоставляемые AUCTeX, вы можете свертывать части документа, и они будут отображаться как фиксированная строка, или будут использовать для отображения часть свернутых данных. Эта функциональность полезна в том случае, если вы часто используете цитаты и сноски, и не хотите загромождать ими текст. Свернутые части будут автоматически разворачиваться когда вы будете перемещаться в них.

Для использования данной возможности, вы должны активизировать TeX-fold-mode , который предоставляет необходимые команды для свертывания и развертывания макросов и окружений. Данный режим можно включить с помощью команды M-x TeX-fold-mode или сочетания клавиш C-c C-o C-f . Вы можете включать этот режим автоматически, воспользовавшись хуками. Например, вот так:

(add-hook 'TeX-mode-hook '(lambda () (TeX-fold-mode 1)))

После активации данного режима, пользователю становятся доступны команда свертывания всех макросов и окружений в документе — TeX-fold-buffer ( C-c C-o C-b ), свертывания текущего макроса — TeX-fold-macro ( C-c C-o C-m ) и свертывания текущего окружения — TeX-fold-env ( C-c C-o C-e ). Для того, чтобы развернуть все свернутые объекты может использоваться команда TeX-fold-clearout-buffer ( C-c C-o C-x ), а для развертывания текущего объекта — команда TeX-fold-clearout-item ( C-c C-o C-c ). Все команды свертывания используют переменные TeX-fold-macro-spec-list и TeX-fold-env-spec-list для того, чтобы определить какие макросы и окружения необходимо сворачивать, и что отображать вместо свернутых объектов. Если макросы или окружения не перечисленны в указанных переменных, то используются значения переменных TeX-fold-unspec-macro-display-string и TeX-fold-unspec-env-display-string . Все эти переменные доступны для изменения через стандартные механизмы настройки Emacs.

AUCTeX реализует поддержку вспомогательного режима outline, используя команды секционирования LaTeX/ConTeXt в качестве строк заголовков. Просто включите outline-minor-mode и вы сможете скрывать разделы используя стандартные команды. Дополнительные заголовки секционирования могут быть добавлены с помощью переменной TeX-outline-extra . Каждый из элементов списка является списком из двух элементов — регулярного выражения и уровня, которому соотвествует данное выражение. Знак ^ автоматически добавляется в начало каждого регулярного выражения. Для лучшей поддержки режима outline вы можете воспользоваться пакетом out-xtra, который доступен через архив кода Emacs Lisp.

Настройка

Настройка пакета может осуществляться с помощью стандартных средств настройки Emacs — с помощью команды customize-group . Группа настройки называется AUCTeX . В этой группе определено множество переменных, которые будут описаны далее.

Для того, чтобы обеспечить поддержку многих пакетов LaTeX, которые вы хотите использовать в ваших документах, вы должны разрешить парсинг документов, что можно сделать с помощью следующих команд:

(setq TeX-auto-save t) (setq TeX-parse-self t)

Если вы часто используете команды \include или \input , то вы должны предупредить AUCTeX о том, что вы используете документы из нескольких файлов. Это можно сделать с помощью команды:

(setq-default TeX-master nil)

Так что каждый раз, когда вы будете открывать новый файл, то AUCTeX будет запрашивать у вас имя главного файла.

Поддержка разных языков

В настоящее время Emacs и TeX вполне нормально поддерживают языки отличные от английского, но все таки для работы с корейским, китайским и японским, вам могут понадобиться специальные версии Emacs и TeX. Пакет AUCTeX распознает использование пакета inputenc, что позволяет более корректно обрабатывать работу с разными кодировками.

Для более удобной работы с европейскими языками существует несколько пакетов, которые позволяют преобразовывать символы в макросы TeX и обратно, при чтении и записи редактируемых файлов. Сюда относятся пакеты iso-cvt.el, который поставляется вместе с GNU Emacs, x-compose.el, который поставляется с XEmacs, и пакет X-Symbol, который позволяет корректно отображать большое количество математических и других символов (пакет может работать и с GNU Emacs и с XEmacs).

AUCTeX имеет в своем составе поддержку для разных языков. Поддержка каждого из языков реализуется в виде отдельных стилевых файлов, которые улучшают работу AUCTeX. Например, пользователь может добавить автоматическую смену словаря при работе с файлами, которые включают в себя, например, файл dk.sty. Чтобы это работало, вам необходимо включить поддержку разбора файлов. Для каждого из поддерживаемых языков, определяется хук с именем TeX-language-XX-hook , где XX — двух-символьный код языка. В настоящее время поддерживаются датский, голландский, немецкий, итальянский и польский языки.

Автоматическая настройка

AUCTeX пытается произвести самонастройку путем сканирования файлов TeX, выделения из них символов, окружений и т.п. данных. Эта информация позволяет сделать редактирование текстов более удобным. Автоматическая настройка может производиться на трех уровнях. Самый главный уровень — данные, которые используются всеми пользователями системы, и содержащий все стилевые файлы TeX. Вторым уровнем являются файлы, принадлежащие конкретному пользователю, но которые используются в разных проектах. К третьему уровню относятся файлы расположенные в рабочем каталоге. По умолчанию, AUCTeX производит поиск файлов на всех трех уровнях, но вы можете явно задать пути поиска с помощью переменной TeX-style-path . По умолчанию AUCTeX обрабатывает каталоги рекурсивно, но вы можете настроить это поведение с помощью переменной TeX-file-recurse . AUCTeX игнорирует некоторые имена файлов ( . , .. , SCCS , RCS и CVS ), которые определены в переменной TeX-ignore-file .

Настройка для глобального уровня производится с помощью переменных TeX-macro-global , которая содержит список каталогов со стилевыми файлами TeX; TeX-style-global , которая содержит название каталога с информацией, созданной вручную; и TeX-auto-global , в которой хранится информация автоматически выделенная из стилевых файлов.

Настройки для уровня пользователя хранятся в переменных TeX-macro-private , в которой указывается список каталогов со стилями TeX; TeX-auto-private , в которой указывается каталог для хранения выделенной информации; и TeX-style-private , в которой указывается список каталогов со стилями AUCTeX, написанными вручную. Для перегенерации автоматически выделяемых данных используется фукнция TeX-auto-generate .

Настройка для локального использования проводится с помощью переменных TeX-auto-local , в которой указывается каталог для сохранения автоматически выделенной инфомации (по умолчанию она имеет значение auto ) и TeX-style-local , в которой хранится имя каталога со стилевыми файлами. По умолчанию, автоматически выделяемая информация сохраняется каждый раз, когда вы сохраняете ваши файлы.

Создание стилевых файлов

Пользователь AUCTeX может улучшить свою работу с помощью дополнительных стилевых файлов, которые позволяют лучше настроить AUCTeX при использовании конкретных стилевых файлов TeX/LaTeX и/или конкретных команд и окружений.

Функция TeX-add-style-hook позволяет пользователю задать код, который будет выполнен при использовании определенного стилевого файла TeX. Например,

(TeX-add-style-hook "book" (function (lambda () (setq LaTeX-largest-level (LaTeX-section-level ("chapter"))))))

устанавливает самый главный уровень секционирования равным chapter при использовании стиля book. Аналогичным образом, может добавляться поддержка и других стилевых файлов. Достаточно большое их количество уже определено и поставляется в дистрибутиве AUCTeX (в подкаталоге style ).

Основным предназначением стилевого хука является объявление новых макросов и окружений, которые существуют в стилевом файле. Явные объявления используются для указания аргументов макросов, а сами макросы определяются автоматически. Добавление новых макросов выполняется с помощью функции TeX-add-symbols , которой передается список, который в свою очередь состоит из списка первым в котором идет название макроса, а затем идет описание аргументов данного объекта. Если у объекта нет аргументов, то он просто вставляется и точка вставки помещается между фигурными скобками. Если у объекта есть аргументы, то AUCTeX запрашивает их у пользователя.

Для указания аргументов используется некоторое количество функций вида TeX-arg-TYPE , где TYPE указывает на соответствующий тип, и AUCTeX будет проверять вводимые пользователем данные. Описания этих функций смотрите в документации по AUCTeX.

Добавление окружений происходит аналогично добавлению макроса. Добавление новых окружений производится с помощью функции LaTeX-add-environments , которой передаются список списков из имени окружения и описания аргуметов. Для детального описания аргументов, также смотрите в документации по AUCTeX.

Кроме добавления информации о макросах и окружениях, AUCTeX позволяет добавить информацию о библиографиях и метках. Это выполняется с помощью функций LaTeX-add-bibliographies и LaTeX-add-labels соответственно.

AUCTeX пытается автоматически выделить информацию об объектах при разборе стилевых файлов. Он делает это с помощью набора регулярных выражений. Эти выражения хранятся в переменной TeX-auto-regexp-list , которую вы можете изменять, добавляя собственные регулярные выражения. Кроме этого, AUCTeX определяет два хука, которые вызываются перед и после парсинга файла TeX. Они называются TeX-auto-prepare-hook и TeX-auto-cleanup-hook . Вы можете использовать эти хуки для выполнения вашего кода.

Пакеты, расширяющие функциональность AUCTeX

Существует некоторое количество дополнительныз пакетов, которые позволяют улучшить работу с TeX/LaTeX при использовании AUCTeX. Некоторые из этих пакетов могут работать отдельно, но наилучшие результаты дает их совместное использование с AUCTeX:

Preview-LaTeX В настоящее время, пакет preview-latex (описанный в соответствующем разделе) стал частью пакета AUCTeX, значительно улучшив возможности пакета по визуальной работе с исходными текстами TeX и LaTeX. RefTeX и BibTeX Пакеты RefTeX и BibTeX, описанные в следующих разделах умеют интегрироваться с пакетом AUCTeX, позволяя существенно улучшить работу с ссылками и библиографиями. latex-units Данный пакет добавляет еще одно меню, с помощью которого можно вставлять объявления единиц измерения (например, kg и т.п.). Этот пакет работает только в математическом режиме, когда для корректного отображения текста требуется вставка нескольких команд TeX, что может сильно раздражать. Для установки пакета скачайте его с домашней страницы и загрузите его, также как и другие пакеты, с помощью функции require .

Дополнительная информация

Дополнительную информацию о пакете AUCTeX вы можете найти на страницах проекта, находящихся по адресам http://www.gnu.org/software/auctex/ и http://savannah.gnu.org/projects/auctex. Кроме этого, большое количество информации можно найти на страницах Emacs WiKi.

Last change: 05.03.2013 16:54

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *