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

  • You edited your code, but there are still errors :-( – user31729 Mar 15 '16 at 15:54
  • @ChristianHupfer If put it in Sharelatex it will create pdf file. – Lucky_girl Mar 15 '16 at 16:04
  • Yes, after you have removed the \actual command which wasn't available – user31729 Mar 15 '16 at 16:59
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
  [...]
  • 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 Mar 16 '16 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 Mar 16 '16 at 16:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.