<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Some stuff (Записи о LaTeX)</title><link>https://psss.site/</link><description></description><atom:link href="https://psss.site/categories/latex.xml" rel="self" type="application/rss+xml"></atom:link><language>ru</language><copyright>Contents © 2026 &lt;a href="mailto:none@example.com"&gt;None&lt;/a&gt; 
&lt;br/&gt;
Все материалы доступны как &lt;a rel="license" href="http://creativecommons.org/publicdomain/zero/1.0/"&gt;
общественное достояние CC0 1.0 Universal (CC0 1.0) Public Domain Dedication&lt;/a&gt;.
</copyright><lastBuildDate>Sat, 10 Oct 2026 15:26:38 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>LaTeX: параметры ключ=значение</title><link>https://psss.site/posts/latex-keyval/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Определение команды:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\ExplSyntaxOn&lt;/span&gt;

&lt;span class="k"&gt;\keys_define:nn&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; mymodule &lt;span class="nb"&gt;}&lt;/span&gt;
  &lt;span class="nb"&gt;{&lt;/span&gt;
    color .tl&lt;span class="nb"&gt;_&lt;/span&gt;set:N = &lt;span class="k"&gt;\l_mymodule_color_tl&lt;/span&gt; ,
    color .initial:n = &lt;span class="nb"&gt;{&lt;/span&gt; black &lt;span class="nb"&gt;}&lt;/span&gt; ,
    text .tl&lt;span class="nb"&gt;_&lt;/span&gt;set:N = &lt;span class="k"&gt;\l_mymodule_text_tl&lt;/span&gt; ,
    text .initial:n = &lt;span class="nb"&gt;{&lt;/span&gt; Default~Text &lt;span class="nb"&gt;}&lt;/span&gt; ,
    size .dim&lt;span class="nb"&gt;_&lt;/span&gt;set:N = &lt;span class="k"&gt;\l_mymodule_size_dim&lt;/span&gt; ,
    size .initial:n = &lt;span class="nb"&gt;{&lt;/span&gt; 12pt &lt;span class="nb"&gt;}&lt;/span&gt; ,
  &lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\NewDocumentCommand&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; &lt;span class="k"&gt;\mycommand&lt;/span&gt; &lt;span class="nb"&gt;}&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; O&lt;span class="nb"&gt;{}&lt;/span&gt; &lt;span class="nb"&gt;}&lt;/span&gt;
  &lt;span class="nb"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;\keys_set:nn&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; mymodule &lt;span class="nb"&gt;}&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; #1 &lt;span class="nb"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;\group_begin:&lt;/span&gt;
      &lt;span class="k"&gt;\color&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\l_mymodule_color_tl&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;
      &lt;span class="k"&gt;\fontsize&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\l_mymodule_size_dim&lt;/span&gt;&lt;span class="nb"&gt;}{&lt;/span&gt;&lt;span class="k"&gt;\dim_eval:n&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\l_mymodule_size_dim&lt;/span&gt; * 1.2&lt;span class="nb"&gt;}}&lt;/span&gt;&lt;span class="k"&gt;\selectfont&lt;/span&gt;
      &lt;span class="k"&gt;\l_mymodule_text_tl&lt;/span&gt;
    &lt;span class="k"&gt;\group_end:&lt;/span&gt;
  &lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\ExplSyntaxOff&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Использование:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\begin&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;document&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\mycommand&lt;/span&gt; &lt;span class="c"&gt;% Uses default values&lt;/span&gt;
&lt;span class="k"&gt;\par&lt;/span&gt;
&lt;span class="k"&gt;\mycommand&lt;/span&gt;&lt;span class="na"&gt;[color=blue, text=Hello~World, size=18pt]&lt;/span&gt;
&lt;span class="k"&gt;\par&lt;/span&gt;
&lt;span class="k"&gt;\mycommand&lt;/span&gt;&lt;span class="na"&gt;[size=24pt, color=red]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Свойства ключей в &lt;code&gt;keys_define&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Каждый ключ в &lt;code&gt;keys_define&lt;/code&gt; может иметь набор свойств:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.code:n&lt;/code&gt; = &lt;em&gt;code to execute&lt;/em&gt;: задает код для выполнения, когда ключ задан, 
при этом в коде может использоваться &lt;code&gt;#1&lt;/code&gt; и туда будет подставлено значение ключа. &lt;/li&gt;
&lt;li&gt;&lt;code&gt;.initial:n&lt;/code&gt; = &lt;em&gt;initial value&lt;/em&gt;: Задает начальное значение. 
Оно будет использоваться, если ключ вообще не задан.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.default:n&lt;/code&gt; = &lt;em&gt;default value&lt;/em&gt;: Задает значение по умолчанию.
Оно будет использоваться если ключ задан без значения (например, key=).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.choices:nn&lt;/code&gt; = &lt;em&gt;{ список выбора }&lt;/em&gt;: Задает список допустимых значений для ключа. 
Для каждого возможного значения задается код, который должен выполниться в соответствующем случае.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.bool_set:N&lt;/code&gt;, &lt;code&gt;.bool_set_true:N&lt;/code&gt;, &lt;code&gt;.bool_set_false:N&lt;/code&gt;: Задает что делать для boolean-ключей, 
установить значение, true или false.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.int_set:N&lt;/code&gt;, &lt;code&gt;.dim_set:N&lt;/code&gt;, &lt;code&gt;.tl_set:N&lt;/code&gt;: Задает присвоение переменным для числа, размера или строки.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\ExplSyntaxOn&lt;/span&gt;
&lt;span class="k"&gt;\keys_define:nn&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; mymodule &lt;span class="nb"&gt;}&lt;/span&gt;
  &lt;span class="nb"&gt;{&lt;/span&gt;
    color .code:n = &lt;span class="k"&gt;\tl_set:Nn&lt;/span&gt; &lt;span class="k"&gt;\l_mymodule_color_tl&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; #1 &lt;span class="nb"&gt;}&lt;/span&gt;,
    color .initial:n = black,
    shape .choices:nn =
      &lt;span class="nb"&gt;{&lt;/span&gt;
        circle .code:n = &lt;span class="k"&gt;\tl_set:Nn&lt;/span&gt; &lt;span class="k"&gt;\l_mymodule_shape_tl&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; circle &lt;span class="nb"&gt;}&lt;/span&gt;,
        square .code:n = &lt;span class="k"&gt;\tl_set:Nn&lt;/span&gt; &lt;span class="k"&gt;\l_mymodule_shape_tl&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt; square &lt;span class="nb"&gt;}&lt;/span&gt;
      &lt;span class="nb"&gt;}&lt;/span&gt;,
    shape .initial:n = circle,
    linewidth .int&lt;span class="nb"&gt;_&lt;/span&gt;set:N = &lt;span class="k"&gt;\l_mymodule_linewidth_int&lt;/span&gt;,
    linewidth .initial:n = 1
  &lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\ExplSyntaxOff&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;В этом примере определены ключи &lt;em&gt;color&lt;/em&gt;, &lt;em&gt;shape&lt;/em&gt; и &lt;em&gt;linewidth&lt;/em&gt; для модуля &lt;em&gt;mymodule&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;color&lt;/em&gt; принимает значение, &lt;em&gt;shape&lt;/em&gt; значение из списка, a &lt;em&gt;linewidth&lt;/em&gt; задает числовую переменную.&lt;/p&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-keyval/</guid><pubDate>Tue, 21 Oct 2025 22:42:06 GMT</pubDate></item><item><title>LaTeX mbox на список</title><link>https://psss.site/posts/latex-mbox/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Есть: строка, разделенная запятыми. &lt;/p&gt;
&lt;p&gt;Надо: завернуть каждый элемент отдельно в функцию (например, в &lt;em&gt;\mbox&lt;/em&gt;) и
собрать строку обратно, возможно с другими разделителями.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\ExplSyntaxOn&lt;/span&gt;

&lt;span class="k"&gt;\NewDocumentCommand&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\MBoxingList&lt;/span&gt;&lt;span class="nb"&gt;}{&lt;/span&gt;O&lt;span class="nb"&gt;{&lt;/span&gt;,&lt;span class="k"&gt;\&lt;/span&gt; &lt;span class="nb"&gt;}&lt;/span&gt;m&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;\seq_clear_new:N&lt;/span&gt; &lt;span class="k"&gt;\l__in_seq&lt;/span&gt;
  &lt;span class="k"&gt;\seq_set_from_clist:Nn&lt;/span&gt; &lt;span class="k"&gt;\l__in_seq&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt;#2&lt;span class="nb"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;\seq_set_map:NNn&lt;/span&gt; &lt;span class="k"&gt;\l__in_seq&lt;/span&gt; &lt;span class="k"&gt;\l__in_seq&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\mbox&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;##1&lt;span class="nb"&gt;}}&lt;/span&gt;
  &lt;span class="k"&gt;\seq_use:Nn&lt;/span&gt; &lt;span class="k"&gt;\l__in_seq&lt;/span&gt; &lt;span class="nb"&gt;{&lt;/span&gt;#1&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;%  \quad\seq_count:N \l__in_seq&lt;/span&gt;
&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\ExplSyntaxOff&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Использовать так: `\expanded{\MBoxingList[, ]{123, 123, 5234, 6543}}&lt;/p&gt;
&lt;p&gt;Как вариант определить через &lt;code&gt;\NewExpandableDocumentCommand&lt;/code&gt;, но тогда
вызывать без &lt;code&gt;\expanded&lt;/code&gt; и могут быть сюрпризы если исходная строка передается
не явно, а определена командой.&lt;/p&gt;
&lt;p&gt;P.S. Вроде и работает, но с этим expansion что-нибудь да не нравится. 
В общем, глаз да глаз.&lt;/p&gt;
&lt;p&gt;P.P.S. Можно попробовать через пакет &lt;code&gt;listofitems&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;P.P.P.S Есть какое-то решение на классическом синтаксисе:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\makeatletter&lt;/span&gt;

&lt;span class="c"&gt;% Functional foreach construct&lt;/span&gt;
&lt;span class="c"&gt;% #1 - Function to call on each comma-separated item in #3&lt;/span&gt;
&lt;span class="c"&gt;% #2 - Parameter to pass to function in #1 as first parameter&lt;/span&gt;
&lt;span class="c"&gt;% #3 - Comma-separated list of items to pass as second parameter to function #1&lt;/span&gt;
&lt;span class="k"&gt;\def\foreach&lt;/span&gt;#1#2#3&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\@test@foreach&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#1&lt;span class="nb"&gt;}{&lt;/span&gt;#2&lt;span class="nb"&gt;}&lt;/span&gt;#3,&lt;span class="k"&gt;\@end@token&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;% Internal helper function - Eats one input&lt;/span&gt;
&lt;span class="k"&gt;\def\@swallow&lt;/span&gt;#1&lt;span class="nb"&gt;{}&lt;/span&gt;

&lt;span class="c"&gt;% Internal helper function - Checks the next character after #1 and #2 and&lt;/span&gt;
&lt;span class="c"&gt;% continues loop iteration if \@end@token is not found&lt;/span&gt;
&lt;span class="k"&gt;\def\@test@foreach&lt;/span&gt;#1#2&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\@ifnextchar\@end@token&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
    &lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\@swallow&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
    &lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\@foreach&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#1&lt;span class="nb"&gt;}{&lt;/span&gt;#2&lt;span class="nb"&gt;}}&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;% Internal helper function - Calls #1{#2}{#3} and recurses&lt;/span&gt;
&lt;span class="c"&gt;% The magic of splitting the third parameter occurs in the pattern matching of the \def&lt;/span&gt;
&lt;span class="k"&gt;\def\@foreach&lt;/span&gt;#1#2#3,#4&lt;span class="k"&gt;\@end@token&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  #1&lt;span class="nb"&gt;{&lt;/span&gt;#2&lt;span class="nb"&gt;}{&lt;/span&gt;#3&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\@test@foreach&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#1&lt;span class="nb"&gt;}{&lt;/span&gt;#2&lt;span class="nb"&gt;}&lt;/span&gt;#4&lt;span class="k"&gt;\@end@token&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\makeatother&lt;/span&gt;

&lt;span class="c"&gt;%% Функция для использования&lt;/span&gt;
&lt;span class="k"&gt;\def\makembox&lt;/span&gt;#1#2&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\mbox&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;#2&lt;span class="nb"&gt;}&lt;/span&gt;, &lt;span class="nb"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-mbox/</guid><pubDate>Sun, 19 Oct 2025 20:47:17 GMT</pubDate></item><item><title>Вызов сторонних скриптов из LaTeX</title><link>https://psss.site/posts/latex-write18/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Latex при сборке документа может вызывать сторонние
программы. Иногда это удобно.&lt;/p&gt;
&lt;p&gt;По умолчанию такое поведение запрещено, но опцией командной
строки &lt;code&gt;--shell-escape&lt;/code&gt; это разрешается.&lt;/p&gt;
&lt;h3&gt;Настройка latexmk&lt;/h3&gt;
&lt;p&gt;Если сборка производится через &lt;code&gt;latexmk&lt;/code&gt;, то в файл конфигурации
&lt;code&gt;latexmkrc&lt;/code&gt; надо добавить строчки:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_pdflatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'-shell-escape'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_xelatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'-shell-escape'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_lualatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'-shell-escape'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Альтернативный вариант для того же &lt;code&gt;latexmkrc&lt;/code&gt; 
переопределить переменные для запуска, по сути:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;$latex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'latex  %O  --shell-escape %S'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$pdflatex&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'pdflatex  %O  --shell-escape %S'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;В документе&lt;/h3&gt;
&lt;p&gt;В самом документе можно вызывать внешние программы с параметрами
и сразу же вставлять на это место документа их выхлоп.
Например:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\makeatletter&lt;/span&gt;
&lt;span class="k"&gt;\@@input&lt;/span&gt;|"python3 ff.py"
&lt;span class="k"&gt;\makeatother&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-write18/</guid><pubDate>Thu, 09 Oct 2025 11:45:10 GMT</pubDate></item><item><title>LaTeX переменное количество строк и их вывод</title><link>https://psss.site/posts/latex-pseudo-arrays/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Иногда бывает нужно добавлять переменное количество строк,
к примеру, в преамбуле. 
А потом, где-то в недрах документа (или стилей) это все 
как-то вывести.&lt;/p&gt;
&lt;p&gt;Такой пример:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c"&gt;% счетчик количества элементов в массиве&lt;/span&gt;
&lt;span class="k"&gt;\newcount\My@arrname@cnt&lt;/span&gt;
&lt;span class="k"&gt;\My@arrname@cnt&lt;/span&gt; = 0

&lt;span class="c"&gt;% временные счетчики (используются для вывода)&lt;/span&gt;
&lt;span class="c"&gt;% Могут быть одни на много массивов - уникальность не нужна&lt;/span&gt;
&lt;span class="k"&gt;\newcount\My@tmpcnta&lt;/span&gt;
&lt;span class="k"&gt;\newcount\My@tmpcntb&lt;/span&gt;

&lt;span class="c"&gt;% команда добавить в массив&lt;/span&gt;
&lt;span class="k"&gt;\newcommand&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\MyArrayAddRaw&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;[1]&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\advance&lt;/span&gt; &lt;span class="k"&gt;\My@arrname@cnt&lt;/span&gt; 1
  &lt;span class="k"&gt;\@namedef&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;My@arrname@txt@&lt;span class="k"&gt;\number\My@arrname@cnt&lt;/span&gt;&lt;span class="nb"&gt;}{&lt;/span&gt;#1&lt;span class="nb"&gt;}}&lt;/span&gt;

&lt;span class="c"&gt;% команда на вывод&lt;/span&gt;
&lt;span class="k"&gt;\newcommand&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\OutputArray&lt;/span&gt;&lt;span class="nb"&gt;}{&lt;/span&gt;

  &lt;span class="c"&gt;% вывод массива&lt;/span&gt;
  &lt;span class="k"&gt;\My@tmpcnta&lt;/span&gt; = 1                   &lt;span class="c"&gt;% a = 1&lt;/span&gt;
  &lt;span class="k"&gt;\My@tmpcntb&lt;/span&gt; = &lt;span class="k"&gt;\My@arrname@cnt&lt;/span&gt;     &lt;span class="c"&gt;% b = number of elements&lt;/span&gt;
  &lt;span class="k"&gt;\advance&lt;/span&gt; &lt;span class="k"&gt;\My@tmpcntb&lt;/span&gt; 1            &lt;span class="c"&gt;% b++&lt;/span&gt;
  &lt;span class="k"&gt;\loop&lt;/span&gt;
  &lt;span class="k"&gt;\ifnum&lt;/span&gt; &lt;span class="k"&gt;\My@tmpcnta&lt;/span&gt; &amp;lt; &lt;span class="k"&gt;\My@tmpcntb&lt;/span&gt;  &lt;span class="c"&gt;% while (a &amp;lt; b)&lt;/span&gt;
    &lt;span class="k"&gt;\@nameuse&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;My@arrname@txt@&lt;span class="k"&gt;\number\My@tmpcnta&lt;/span&gt;&lt;span class="nb"&gt;}&lt;/span&gt;&lt;span class="k"&gt;\par&lt;/span&gt; &lt;span class="c"&gt;% use Array[a]&lt;/span&gt;
    &lt;span class="k"&gt;\advance&lt;/span&gt; &lt;span class="k"&gt;\My@tmpcnta&lt;/span&gt; 1          &lt;span class="c"&gt;% a++;&lt;/span&gt;
  &lt;span class="k"&gt;\repeat&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;

&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-pseudo-arrays/</guid><pubDate>Fri, 31 Mar 2023 16:40:55 GMT</pubDate></item><item><title>Текст в две колонки в LaTeX</title><link>https://psss.site/posts/latex-paracol/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Если надо сделать текст в две колонки, но не на весь документ,
а на какую-то его часть (например, чтоб сделать синхронно
"было-стало"), то можно использовать пакет &lt;code&gt;paracol&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Для этого в преамбуле документа надо добавить:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\usepackage&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;paracol&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;\setlength&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\columnseprule&lt;/span&gt;&lt;span class="nb"&gt;}{&lt;/span&gt;0.5pt&lt;span class="nb"&gt;}&lt;/span&gt; &lt;span class="c"&gt;% толщина разделительной линии (закомментировать если линия не нужна)&lt;/span&gt;
&lt;span class="k"&gt;\colseprulecolor&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;black&lt;span class="nb"&gt;}&lt;/span&gt;  &lt;span class="c"&gt;% цвет разделительной линии&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;В теле документа использовать, например, так:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\begin&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;paracol&lt;span class="nb"&gt;}{&lt;/span&gt;2&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;/span&gt;
&lt;span class="k"&gt;\textbf&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\emph&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;Имеется:&lt;span class="nb"&gt;}}&lt;/span&gt;

&lt;span class="k"&gt;\switchcolumn&lt;/span&gt; &lt;span class="c"&gt;% переключение на правый столбец&lt;/span&gt;

&lt;span class="k"&gt;\textbf&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\emph&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;Должно быть:&lt;span class="nb"&gt;}}&lt;/span&gt;

&lt;span class="c"&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;/span&gt;
&lt;span class="k"&gt;\switchcolumn&lt;/span&gt; &lt;span class="c"&gt;% переключение на левый столбец&lt;/span&gt;

&lt;span class="c"&gt;% пусто в этом столбце&lt;/span&gt;

&lt;span class="k"&gt;\switchcolumn&lt;/span&gt; &lt;span class="c"&gt;% переключение на правый столбец&lt;/span&gt;
&lt;span class="k"&gt;\textcolor&lt;/span&gt;&lt;span class="na"&gt;[rgb]&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;0,0.4,0&lt;span class="nb"&gt;}{&lt;/span&gt;Сделать дело&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;/span&gt;
&lt;span class="k"&gt;\switchcolumn*&lt;/span&gt; &lt;span class="c"&gt;% переключение на левый столбец (с выравниванием по высоте = *)&lt;/span&gt;
&lt;span class="k"&gt;\textcolor&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;red&lt;span class="nb"&gt;}{&lt;/span&gt;Гулять смело&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\switchcolumn&lt;/span&gt; &lt;span class="c"&gt;% переключение на правый столбец&lt;/span&gt;
&lt;span class="k"&gt;\textcolor&lt;/span&gt;&lt;span class="na"&gt;[rgb]&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;0,0.4,0&lt;span class="nb"&gt;}{&lt;/span&gt;Отдыхать смело&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Выравнивание по высоте (команду со &lt;code&gt;*&lt;/code&gt;) следует использовать только если разная
высота абзацев получается, а надо чтоб абзацы шли синхронно слева и справа.&lt;/p&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-paracol/</guid><pubDate>Wed, 28 Sep 2022 13:58:06 GMT</pubDate></item><item><title>Поворот страницы в LaTeX</title><link>https://psss.site/posts/latex-rotate-page/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Если надо сделать посреди нормального портретного документа страницу landscape,
но так, чтобы колонтитулы оставались вертикальными, а в итоговом pdf-документе
страница отображалась повернутой на 90 градусов, то надо
в преамбуле документа добавить:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\usepackage&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;pdflscape&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;А там где должно быть повернуто писать как обычно, но все это обернуть в &lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\begin&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;landscape&lt;span class="nb"&gt;}&lt;/span&gt;
...
&lt;span class="k"&gt;\end&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;landscape&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;В этом случае страницы станут повернутыми уже в pdf-файле, то есть, 
при просмотре файла не надо будет крутить головой,
а для печати ничего отдельно делать не надо. &lt;/p&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-rotate-page/</guid><pubDate>Tue, 27 Sep 2022 14:43:00 GMT</pubDate></item><item><title>LaTeX центрировать текст в ячейке таблицы</title><link>https://psss.site/posts/latex-centering-text-in-table-cells/</link><dc:creator>None</dc:creator><description>&lt;p&gt;При центрировании текста внутри ячеек при помощи &lt;code&gt;\centering&lt;/code&gt;
в последнем столбце ряда возникает сложность из-за проблем с &lt;code&gt;\\&lt;/code&gt;,
которые означает разное в таблицах и в абзацах.&lt;/p&gt;
&lt;p&gt;Для того, чтобы это решить следует использовать:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\centering\arraybackslash&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;ну или использовать в таблице &lt;code&gt;\tabularnewline&lt;/code&gt; вместо &lt;code&gt;\\&lt;/code&gt;
(что может далеко не всегда работать).&lt;/p&gt;
&lt;p&gt;Источник: &lt;a href="https://texfaq.org/FAQ-tabcellalign"&gt;https://texfaq.org/FAQ-tabcellalign&lt;/a&gt;&lt;/p&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-centering-text-in-table-cells/</guid><pubDate>Fri, 22 Apr 2022 21:42:04 GMT</pubDate></item><item><title>Конфигурационный файл latexmkrc</title><link>https://psss.site/posts/latexmkrc/</link><dc:creator>None</dc:creator><description>&lt;p&gt;latexmk ищет настройки, помимо параметров командной строки, в файле
конфигурации &lt;code&gt;latexmkrc&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Типовой шаблон&lt;/h3&gt;
&lt;p&gt;Вот его типовое содержимое:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# Jobname: as with current tex, etc indicates basename of generated files.&lt;/span&gt;
&lt;span class="nv"&gt;$jobname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'trd'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;

&lt;span class="nv"&gt;$out_dir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'__output'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# Directory for output files.&lt;/span&gt;

&lt;span class="c1"&gt;# Array of LaTeX files to process when no files are specified on the command line.&lt;/span&gt;
&lt;span class="c1"&gt;# Wildcards allowed&lt;/span&gt;
&lt;span class="nv"&gt;@default_files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'main.tex'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;$diagnostics&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$pdf_mode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# No pdf file requested to be made by pdflatex&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="c1"&gt;# Possible values: &lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="c1"&gt;#     0 = don't create pdf file&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="c1"&gt;#     1 = pdflatex to create pdf file by pdflatex&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="c1"&gt;#     2 = pdf from ps by ps2pdf&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="c1"&gt;#     3 = pdf from dvi by dvipdf&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="c1"&gt;#     4 = lualatex    &lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="c1"&gt;#     5 = xelatex     &lt;/span&gt;

&lt;span class="nv"&gt;$do_cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="c1"&gt;# Do not do cd to directory of source file.&lt;/span&gt;


&lt;span class="nv"&gt;$force_mode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# =1 to force processing past errors&lt;/span&gt;

&lt;span class="nv"&gt;$recorder&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;# Whether to use recorder option on latex/pdflatex&lt;/span&gt;
&lt;span class="nv"&gt;$silent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="c1"&gt;# Silence latex's messages?&lt;/span&gt;


&lt;span class="nb"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_pdflatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'-file-line-error'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nb"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_xelatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'-file-line-error'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;#push @extra_pdflatex_options, '-halt-on-error';&lt;/span&gt;
&lt;span class="c1"&gt;#push @extra_pdflatex_options, '-interaction=batchmode';&lt;/span&gt;
&lt;span class="c1"&gt;#push @extra_pdflatex_options, '-synctex=1';&lt;/span&gt;

&lt;span class="nv"&gt;$dependents_list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="c1"&gt;# Whether to display list(s) of dependencies&lt;/span&gt;
&lt;span class="nv"&gt;$dependents_phony&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$rules_list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c1"&gt;# Whether to display list(s) of dependencies&lt;/span&gt;
&lt;span class="nv"&gt;$deps_file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$out_dir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'/'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$jobname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'.dep'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="c1"&gt;# File for dependency list output.  Default stdout.&lt;/span&gt;

&lt;span class="nv"&gt;$clean_ext&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"dep gz"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# space separated extensions of files that are&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="c1"&gt;# to be deleted when doing cleanup, beyond&lt;/span&gt;
&lt;span class="w"&gt;                        &lt;/span&gt;&lt;span class="c1"&gt;# standard set&lt;/span&gt;

&lt;span class="nv"&gt;$show_time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exists&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$ENV&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;TEXINPUTS&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;$ENV&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;TEXINPUTS&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nv"&gt;$ENV&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;TEXINPUTS&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;'../sty'&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$search_path_separator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$ENV&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;TEXINPUTS&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Опции для разных вариантов latex одновременно&lt;/h3&gt;
&lt;p&gt;Если надо добавлять опции одновременно для &lt;code&gt;pdflatex&lt;/code&gt;, &lt;code&gt;xelatex&lt;/code&gt; и &lt;code&gt;lualatex&lt;/code&gt;,
то можно сделать функцию (это ж просто perl-скрипт!) и использовать её:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;sub&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;add_option1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_pdflatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_xelatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;@extra_lualatex_options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;add_option1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'-file-line-error'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;add_option1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'-halt-on-error'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;add_option1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'-interaction=batchmode'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;
&lt;span class="c1"&gt;#add_option1 ('-interaction=errorstopmode');&lt;/span&gt;

&lt;span class="n"&gt;add_option1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'-synctex=1'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;add_option1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'-shell-escape'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latexmkrc/</guid><pubDate>Tue, 19 Oct 2021 12:08:14 GMT</pubDate></item><item><title>Показ меток в LaTeX</title><link>https://psss.site/posts/latex-show-labels/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Для показа меток используется пакет &lt;code&gt;showlabels&lt;/code&gt;.
Пример использования:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;\usepackage&lt;/span&gt;&lt;span class="na"&gt;[inline,inner]&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;showlabels&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-show-labels/</guid><pubDate>Fri, 10 Sep 2021 11:15:19 GMT</pubDate></item><item><title>LaTeX прикрепить файл к pdf если файл существует</title><link>https://psss.site/posts/latex-attach-file-to-pdf/</link><dc:creator>None</dc:creator><description>&lt;p&gt;Для примера - включаем файл с архивом исходников внутрь самого pdf.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c"&gt;%%% Включить в pdf файл исходного кода если существует файл ./src/src.zip&lt;/span&gt;
&lt;span class="k"&gt;\RequirePackage&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;embedfile&lt;span class="nb"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;\IfFileExists&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;./src/src.zip&lt;span class="nb"&gt;}{&lt;/span&gt;
  &lt;span class="k"&gt;\embedfile&lt;/span&gt;&lt;span class="na"&gt;[filespec=src.zip,mimetype=application/zip,desc=Source code]&lt;/span&gt;&lt;span class="nb"&gt;{&lt;/span&gt;./src/src.zip&lt;span class="nb"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;}{}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>LaTeX</category><guid>https://psss.site/posts/latex-attach-file-to-pdf/</guid><pubDate>Fri, 10 Sep 2021 11:13:20 GMT</pubDate></item></channel></rss>