我在 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
您可以切换pdflatex
或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}
如果你需要这样调用它,\jobtype{val2}
那么使用
\newcommand\jobtype[1]{\jobtypeA#1;}
\def\jobtypeA val#1;{%
\resettabtoks
[...]