Latex 中的 ifthenelse

Latex 中的 ifthenelse

我在 Latex 中有一个表格,在表格的左侧我有一个空框 ( \Square),我想在\xBox选择了特定值的情况下将它们替换为 。我写了命令,\newcommand{\jobtype}但我不知道如何将其与表格集成。

这是我的代码:

\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}  % Включаем пакет для поддержки русского
\usepackage{multirow,tabularx}
\usepackage{ifthen}
\usepackage{wasysym}

\begin{document}
\begin{tabularx}{\textwidth}{ X X }

\textbf{Умови прийняття на роботу:}  & \textbf{Умови роботи:} \\
(необхідне відмітити позначкою "х"): & (необхідне відмітити позначкою "х"): \\
\Square\ на конкурсній основі & робота: основне мiсце роботи  \\
\Square\ за умовами контракту до  &умови праці (згідно атестації робочого місця): \\
у разі необхідності вказати дату (дд.мм.рррр.) &  \\
\Square\ зі строком випробування  місяць &  \rule{6cm}{0.5pt} \\
\Square\ на час виконання певної роботи  & \Square\ тривалість робочого дня (тижня) {{long}}   \\
\Square\ на період відсутності основного працівника & \Square\ тривалість робочого дня (тижня) при роботі з неповним робочим часом \rule{3cm}{0.5pt} \\
\Square\ із кадрового резерву &    \\
\Square\ за результатами успішного стажування & \Square\ \rule{6cm}{0.5pt} \\
\Square\ переведення & \Square\ \rule{6cm}{0.5pt} \\
%\rule{8cm}{0.5pt} & \rule{8cm}{0.5pt} \\
\end{tabularx}

\newcommand{\jobtype}[1]
{
\ifthenelse{\equal{#1}{val1}}{\XBox}{\Square} \\
\ifthenelse{\equal{#1}{val2}}{\XBox}{\Square}  \\
\ifthenelse{\equal{#1}{val3}}{\XBox}{\Square} \\
\ifthenelse{\equal{#1}{val5}}{\XBox}{\Square} \\
\ifthenelse{\equal{#1}{val6}}{\XBox}{\Square} \\
\ifthenelse{\equal{#1}{val7}}{\XBox}{\Square} \\
\ifthenelse{\equal{#1}{val8}}{\XBox}{\Square} \\
\ifthenelse{\equal{#1}{val9}}{\XBox}{\Square} \\
}

\jobtype{val1}

\end{document}

在此处输入图片描述

我尝试将新命令与表格中的文本集成在一起。但我不知道应该在哪里声明表格的开始和结束。它应该在新命令内吗?或者它应该是创建表格的新命令?:

\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}  % Включаем пакет для поддержки русского
\usepackage{multirow,tabularx}
\usepackage{ifthen}
\usepackage{wasysym}

\begin{document}

\newcommand{\jobtype}[1]
{
\ifthenelse{\equal{#1}{val1}}{\XBox{Умови прийняття на роботу:}  & \textbf{Умови роботи:} }{\Square \textbf{ Умови прийняття на роботу: & Умови роботи:}  } \\
(необхідне відмітити позначкою "х"): & (необхідне відмітити позначкою "х"): \\
\ifthenelse{\equal{#1}{val2}}{\XBox  на конкурсній основі & робота: основне мiсце роботи }{\Square на конкурсній основі & робота: основне мiсце роботи }  \\
\ifthenelse{\equal{#1}{val3}}{\XBox за умовами контракту до  &умови праці (згідно атестації робочого місця): }{\Square за умовами контракту до  &умови праці (згідно атестації робочого місця): } \\
у разі необхідності вказати дату (дд.мм.рррр.) &  \\
\ifthenelse{\equal{#1}{val5}}{\XBox зі строком випробування  місяць &  \rule{6cm}{0.5pt}  }{\Square зі строком випробування  місяць &  \rule{6cm}{0.5pt}  } \\
\ifthenelse{\equal{#1}{val6}}{\XBox  на час виконання певної роботи  & \Square\ тривалість робочого дня (тижня) {{long}}  }{\Square  на час виконання певної роботи  & \Square\ тривалість робочого дня (тижня) {{long}} } \\
\ifthenelse{\equal{#1}{val7}}{\XBox на період відсутності основного працівника & \Square\ тривалість робочого дня (тижня) при роботі з неповним робочим часом \rule{3cm}{0.5pt}}{\Square на період відсутності основного працівника & \Square\ тривалість робочого дня (тижня) при роботі з неповним робочим часом \rule{3cm}{0.5pt}} \\
\ifthenelse{\equal{#1}{val8}}{\XBox  із кадрового резерву & }{\Square  із кадрового резерву &  } \\
\ifthenelse{\equal{#1}{val9}}{\XBox за результатами успішного стажування & \Square\ \rule{6cm}{0.5pt}}{\Square за результатами успішного стажування & \Square\ \rule{6cm}{0.5pt}} \\
}

\jobtype{val2}

\end{document}

现在看起来像这样: 在此处输入图片描述

答案1

首先,我将所有表格行收集到一个标记寄存器中,然后在最后将其打印出来。我用 运行我的示例lualatex。使用包,ifluatex您可以切换pdflatexlualatex

\documentclass[a4paper,11pt]{article}
\usepackage{ifluatex}
\ifluatex
  \usepackage{fontspec}
  \setmainfont{DejaVu Sans}
\else
  \usepackage[T1]{fontenc}
  \usepackage[latin1]{inputenc}
\fi
\usepackage[russian]{babel}  % Включаем пакет для поддержки русского
\usepackage{tabularx}
\usepackage{wasysym}
\newtoks\tabtoks
\newcommand\addtabtoks[1]{\tabtoks\expandafter{\the\tabtoks#1}}
\newcommand*\resettabtoks{\tabtoks{}}
\newcommand*\printtabtoks{\the\tabtoks}

\newcommand\Rule{\rule{5cm}{0.4pt}}
\newcommand\jobtype[1]{%
  \resettabtoks
  \addtabtoks{\small\tabular{@{} lp{0.45\linewidth} lp{0.4\linewidth} @{}}}
    \ifnum#1=1 \addtabtoks{\XBox&Умови прийняття на роботу:  
                 & &\bfseries Умови роботи:\\}
    \else      \addtabtoks{\Square&\bfseries Умови прийняття на роботу: 
                 & &\bfseries Умови роботи:\\ }
    \fi
    \addtabtoks{&(необхідне відмітити позначкою "х"): 
                 & & (необхідне відмітити позначкою "х"): \\}
    \ifnum#1=2 \addtabtoks{\XBox&на конкурсній основі  
                 & &робота: основне мiсце роботи\\}  
    \else      \addtabtoks{\Square&на конкурсній основі 
                 & &робота: основне мiсце роботи \\}
    \fi
    \ifnum#1=3 \addtabtoks{\XBox&за умовами контракту до  
                 & &умови праці (згідно атестації робочого місця): \\}
    \else      \addtabtoks{\Square&за умовами контракту до  
                 & &умови праці (згідно атестації робочого місця):  \\}
    \fi
    \addtabtoks{ & у разі необхідності вказати дату (дд.мм.рррр.) &  \\}
    \ifnum#1=5 \addtabtoks{\XBox&зі строком випробування  місяць &&  \Rule\\}
    \else \addtabtoks{\Square& зі строком випробування  місяць &&  \Rule \\}
    \fi
    \ifnum#1=6 \addtabtoks{\XBox&на час виконання певної роботи  
                 & \Square&тривалість робочого дня (тижня)\\}
    \else \addtabtoks{\Square&на час виконання певної роботи  
                 & \Square&тривалість робочого дня (тижня) \\}
     \fi
    \ifnum#1=7 \addtabtoks{\XBox&на період відсутності основного працівника 
                 & \Square&  тривалість робочого дня (тижня) при роботі з 
                          неповним робочим часом \Rule\\}
     \else \addtabtoks{\Square&на період відсутності основного працівника 
                 & \Square&тривалість робочого дня (тижня) при роботі з 
                                   неповним робочим часом \Rule\\}
     \fi 
     \ifnum#1=8 \addtabtoks{\XBox&із кадрового резерву & \\}
     \else \addtabtoks{\Square&із кадрового резерву &  \\}
     \fi 
     \ifnum#1=9 \addtabtoks{\XBox& за результатами успішного стажування 
                 & \Square& \Rule\\}
     \else \addtabtoks{\Square&за результатами успішного стажування 
                 & \Square&\Rule\\}
     \addtabtoks{\endtabular}
  \noindent\printtabtoks}   
\begin{document}

    \jobtype{2}

\end{document}

在此处输入图片描述

如果你需要这样调用它,\jobtype{val2}那么使用

\newcommand\jobtype[1]{\jobtypeA#1;}
\def\jobtypeA val#1;{%
  \resettabtoks
  [...]

相关内容