2

I have a table in Latex and in the left part of it I have an empty boxes (\Square), I want to replace them to the \xBox in case if the certain value has been picked. I wrote command \newcommand{\jobtype} but I don't know how to integrate it with a table.

Here is my code:

\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}

enter image description here

I tried to integrate new command with a text in the table.But I don't know where should I declare begin and end of the table. Should it be inside the new command? or it should be a new command which create a table? :

\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}

And now it looks like this: enter image description here

3
  • You edited your code, but there are still errors :-(
    – user31729
    Commented Mar 15, 2016 at 15:54
  • @ChristianHupfer If put it in Sharelatex it will create pdf file.
    – Lucky_girl
    Commented Mar 15, 2016 at 16:04
  • Yes, after you have removed the \actual command which wasn't available
    – user31729
    Commented Mar 15, 2016 at 16:59

1 Answer 1

3

At first I collect all tabular lines in a token register and then print it in the end. I run my example with lualatex. With package ifluatex you have a switch for pdflatex or lualatex:

\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}

enter image description here

If you need to call it as \jobtype{val2} then use

\newcommand\jobtype[1]{\jobtypeA#1;}
\def\jobtypeA val#1;{%
  \resettabtoks
  [...]
2
  • I have one more question is that possible to change in "\ifnum#1=1" to "\ifnum#1=val1"? Or make a command which will define that val1=1, val2=2, val3=3....?
    – Lucky_girl
    Commented Mar 16, 2016 at 15:26
  • 1
    Yes, but we need a helper macro: \newcommand\jobtype[1]{\jobtypeA#1;} \def\jobtypeA val#1;{% \resettabtoks [....] See edited answer at the end
    – user2478
    Commented Mar 16, 2016 at 16:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .