3

いくつかの標準テキストがありますが、一部が異なります。しかし、これらのさまざまな部分のうち、存在するのはほんのわずかです。

たとえば、私が欲しい:

\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 や switch のようなものがもっと必要になります。この問題の解決策はありますか?

4

3 に答える 3

4

ifthenパッケージ (標準の LaTeX インストールに含まれています) は、次のように使用される command を定義します\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のコピーを入手することをお勧めします。これは本当に良い参考書です。

于 2009-01-07T21:10:00.657 に答える
0

もう 1 つのオプションは、etoolbox(XeLaTeX で動作する) を使用することです。以下は MWE です。

\documentclass{article}

\usepackage{etoolbox}

\begin{document}

\newcommand{\mytext}[1]
{
\ifstrequal{#1}{a} %% make the first comparison
{ %% print text in the first scenario
\section{Item: #1}\label{item.#1}
This is a standard item. Items of type a are very precious.
}
{} %% do nothing if false
\ifstrequal{#1}{b} %% make the second comparison
{ %% print text in the second scenario
\section{Item: #1}\label{item.#1}
This is a standard item. Items of type b are cheap.
}
{} %% do nothing if false
}

\mytext{a}
\mytext{b}
\\

\noindent
We can refer to sections \ref{item.a} and \ref{item.b}

\end{document}

そしてそれは生み出す

my_text

于 2021-08-15T17:43:01.943 に答える