Как определить вывод в зависимости от переменной со статусом в LaTeX?
-
05-07-2019 - |
Вопрос
У меня есть несколько стандартных текстов, но какая-то их часть отличается. Но из этих разных частей существует только несколько.
Например, я хочу:
\mytext{...}{a}
\mytext{...}{b}
Что производит:
\section{Item: ...}\label{item...}
This is a standard item. Items of type a are very precious.
\section{Item: ...}\label{item...}
This is a standard item. Items of type b are cheap.
Простым решением этой проблемы было бы определение команд mytexta и mytextb, но, поскольку у меня есть больше опций, я хочу что-то вроде переключателя if или if в языках программирования. У кого-нибудь есть решение этой проблемы?
Решение
Пакет ifthen
(который входит в стандартную установку LaTeX) определяет команду \ ifthenelse
, которая используется следующим образом:
\usepackage{ifthen}
\ifthenelse{test}{then-code}{else-code}
чтобы вы могли сделать что-то похожее на:
\newcommand\mytext[1]{%
\ifthenelse{\equal{#1}{a}}{very precious}{%
\ifthenelse{\equal{#1}{b}}{cheap}{unknown}}}
Для программирования на LaTeX я бы порекомендовал получить копию The LaTeX Companion а>. Это действительно хорошая ссылка для этого материала.
Другие советы
Вы можете использовать \ newif \ iffoo для объявления нового условия. Затем \ footrue или \ foofalse устанавливает для него значение true или false, и вы можете использовать его с помощью \ iffoo ... \ else ... \ fi.
Есть еще несколько условий, см. стр. 209 и далее в TeXbook.