
Использование texlive
в Debian Jessie
Я пишу заявление о приеме на работу и хотел бы включить версии контента на немецком и английском языках.
Я хотел бы иметь страницу сразу после обложки моего заявления, которая содержала бы два ToC
элемента s, расположенных рядом друг с другом, однако каждый из них отображал бы информацию только на указанном языке.
Пока что я выяснил, как сложить два ToC
таких:
\usepackage{parcolumns}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\pc@placeboxes}{\vrule}{{\VRULE}}{}{}
\makeatother
\newcommand\VRULE{\color{SOME_COLOR}\vrule width 0.2mm}
\usepackage{shorttoc}
...
\begin{parcolumns}[nofirstindent,rulebetween=true]{2}
\colchunk{
\selectlanguage{german}
\shorttableofcontents{\contentsname}{1}
}
\colchunk{
\selectlanguage{english}
\tableofcontents
}
\end{parcolumns}
\pagebreak
Это дает следующее:
Как видите, до завершения еще далеко. Я не особо разбираюсь в штучках LaTeX, поэтому понятия не имею, возможно ли вообще то, о чем я собираюсь попросить.
Первый вопрос:Можно ли настроить ToC так, чтобы отображались только те записи, которые соответствуют определенному условию?В моем случае условие было бы таким: название раздела на немецком или английском? Если на немецком, то показывать только в левом ToC, иначе если на английском, то показывать только в правом ToC. Кроме того, было бы здорово, если бы запись могла иметь оба условия, чтобы она могла отображаться в обоих ToC (например, сертификат, перевода которого у меня нет, и нет необходимости добавлять его дважды просто ради прикола). Я бы предположил, что все вышеперечисленное будет работать с каким-то if
добавлением некоторого значения для немецких и английских разделов, которое затем проверяется, и на его основе ToC заполняется соответствующим образом.
Продолжая эту мысль, если вы знакомы с обоими языками, вы могли заметить на изображении выше, что записи1 и 2означают то же самое (но на другом языке), как и записи3 и 4.
Это подводит меня ко второму вопросу, а именно:Можно ли использовать какое-то условие, которое позволило бы двум разделам иметь одинаковый номер?
В итоге страница должна выглядеть примерно так:
РЕДАКТИРОВАТЬ:Спасибо замечательному @ChristianHupfer, это почти сделано! Последняя проблема — удаление пустых записей в , в toc
которых нет записей X, Y и Z, но ftoc
они есть:
Изображение выше соответствует коду ниже:
\section{Lebenslauf}
\pagebreak
\section{Lebenslauf}[CV]*
\pagebreak
\section{Bachelor Urkunde}
\pagebreak
\section{Bachelor Urkunde}[Bachelor Diploma]*
\pagebreak
\section{Lalalala}[Lalalala]
\pagebreak
\section{Wichtige Informationen}
\pagebreak
\section{Wichtige Informationen}[Important information]*
\pagebreak
\section{Andere Informationen}
\pagebreak
\section{Noch mehr wichtige Informationen}
\pagebreak
\section{Noch mehr wichtige Informationen}[Even more important information]*
\pagebreak
\section{Blabla}[Only in English Foo]*
\pagebreak
\section{Zusammengef\"uhrt}[Recombined]
У меня такое чувство, что я, возможно, недостаточно хорошо объяснил вещи (извините за это!) - раздел на другом языке на самом деле должен отображаться как отдельный раздел. Так что код выше лучше всего подходит для моих нужд с небольшим визуальным раздражением, что пустые записи остаются в обоих toc
s. Можно ли их удалить? Это не такая уж большая проблема, но я считаю, что все будет выглядеть намного лучше, особенно для других читателей всей этой темы, которые хотят использовать решение(я), предоставленное в более крупном документе, где несколько записей могут отображаться только в одном из двух toc
s, оставляя огромные пустые места в другом toc
.
решение1
Вот версия с дополнительным необязательным аргументом, \section
который содержит английскую версию названия раздела для таблицы содержания. Если опущено , в (значение ) [...]
ничего не вводится .ftoc
foreign toc
Используйте \tableofcontents
для традиционного поведения и \tableofcontents[ftoc]
для другого языка. Настройки языка на самом деле выполняются в parcolumns
среде, а не внутри \tableofcontents
и т. д.
\documentclass{article}
\usepackage[english,ngerman]{babel}
\usepackage{xpatch}
\usepackage{xparse}
\usepackage{parcolumns}
\makeatletter
\patchcmd{\pc@placeboxes}{\vrule}{{\VRULE}}{}{}
\newcommand\VRULE{\color{SOME_COLOR}\vrule width 0.2mm}
\let\latex@@section\section
\RenewDocumentCommand{\section}{somo}{%
\IfBooleanTF{#1}{%
\latex@@section*{#3}%
}{%
\IfValueTF{#2}{%
\latex@@section[#2]{#3}%
}{%
\latex@@section{#3}%
}%
\IfValueT{#4}{%
\addcontentsline{ftoc}{section}{\protect\numberline{\csname thesection\endcsname}#4}
}%
}%
}
\renewcommand\tableofcontents[1][toc]{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{#1}%
}
\makeatother
\begin{document}
\begin{parcolumns}[nofirstindent,rulebetween=true]{2}
\colchunk{
\selectlanguage{ngerman}
\tableofcontents
%\shorttableofcontents{\contentsname}{1}
}
\colchunk{
\selectlanguage{english}
\tableofcontents[ftoc]
}
\end{parcolumns}
\pagebreak
\section{Lebenslauf}[CV]
\section{Bachelor Urkunde}[Bachelor Diploma]
\section{Wichtige Informationen}[Important information]
\end{document}
Обновлять
\documentclass{article}
\usepackage[english,ngerman]{babel}
\usepackage{xpatch}
\usepackage{xparse}
\usepackage{parcolumns}
\makeatletter
\patchcmd{\pc@placeboxes}{\vrule}{{\VRULE}}{}{}
\newcommand\VRULE{\color{SOME_COLOR}\vrule width 0.2mm}
\newcounter{storetocdepth}
\let\latex@@section\section
\RenewDocumentCommand{\section}{somos}{%
\IfBooleanTF{#1}{%
\latex@@section*{#3}%
}{%
\IfBooleanTF{#5}{%
\setcounter{storetocdepth}{\value{tocdepth}}
\addtocontents{toc}{\protect\setcounter{tocdepth}{-4}}
% The #2 is of no use here, except of page headings /section mark
\IfValueTF{#2}{%
\latex@@section[#2]{#3}%
}{%
\latex@@section{#3}%
}%
\addtocontents{toc}{\protect\setcounter{tocdepth}{\number\value{storetocdepth}}}
\addtocontents{toc}{\protect\contentsline{section}{\protect\phantom{#3}}{}}% Provide an empty fake entry
}{%
\IfValueTF{#2}{%
\latex@@section[#2]{#3}%
}{%
\latex@@section{#3}%
}%
}%
\IfValueTF{#4}{%
\addcontentsline{ftoc}{section}{\protect\numberline{\csname thesection\endcsname}#4}
}{%
\addtocontents{ftoc}{\protect\contentsline{section}{\protect\phantom{#2}}{}}% Provide an empty fake entry
}%
}%
}
\renewcommand\tableofcontents[1][toc]{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{#1}%
}
\makeatother
\begin{document}
\begin{parcolumns}[nofirstindent,rulebetween=true]{2}
\colchunk{
\selectlanguage{ngerman}
\tableofcontents
%\shorttableofcontents{\contentsname}{1}
}
\colchunk{
\selectlanguage{english}
\tableofcontents[ftoc]
}
\end{parcolumns}
\pagebreak
\section{Lebenslauf}[CV]
\section{Bachelor Urkunde}[Bachelor Diploma]
\section{Wichtige Informationen}[Important information]
\section{Andere Informationen}
\section{Noch mehr wichtige Informationen}[Even more important information]
\section{Blabla}[Only in English Foo]*
\section{Zusammengef\"uhrt}[Recombined]
\end{document}