
Usando texlive
no Debian Jessie
Estou escrevendo minha candidatura para uma vaga e gostaria de incluir versões do conteúdo em alemão e inglês.
Eu gostaria de ter uma página logo após a capa do meu aplicativo que contenha dois ToC
s próximos um do outro, porém cada um exibindo coisas que estão apenas no idioma especificado.
Até agora descobri como adicionar dois ToC
assim:
\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
Isso produz o seguinte:
Como você pode ver, as coisas estão longe de terminar. Não gosto muito dos truques do LaTeX, então não tenho ideia se o que estou prestes a pedir é possível.
A primeira pergunta é:É possível personalizar um ToC para mostrar apenas entradas que atendam a uma condição específica?No meu caso a condição seria: o nome da seção está em alemão ou em inglês? Se estiver em alemão, mostre apenas no ToC esquerdo, caso contrário, se estiver em inglês, mostre apenas no ToC direito. Além disso, seria incrível se uma entrada pudesse ter ambas as condições atendidas para que pudesse aparecer em ambos os ToCs (por exemplo, um certificado para o qual não tenho a tradução e não há necessidade de adicioná-lo duas vezes apenas por diversão). Eu imagino que tudo o que foi dito acima funcionaria com algum tipo de valor if
e adicionaria algum tipo de valor para as seções em alemão e inglês que é então verificado e com base nele o ToC é preenchido de acordo.
Continuando esta linha de pensamento e se você conhece os dois idiomas deve ter notado na imagem acima que as entradas1 e 2significam o mesmo (mas em um idioma diferente), bem como as entradas3 e 4.
Isso me leva à segunda pergunta, a saber:É possível usar algum tipo de condição que permita que duas seções tenham o mesmo número?
No final, aqui está como a página deve ficar:
EDITAR:Graças ao incrível @ChristianHupfer está quase pronto! Um último problema é a remoção das entradas em branco no toc
que não possui as entradas X, Y e Z, mas ftoc
as possui:
A imagem acima corresponde ao código abaixo:
\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]
Tenho a sensação de que talvez não tenha explicado as coisas bem o suficiente (desculpe por isso!) - uma seção em um idioma diferente deve aparecer como uma seção separada. Portanto, o código acima atende melhor às minhas necessidades, com o pequeno incômodo visual de que entradas em branco são deixadas em ambos os toc
s. É possível removê-los? Não é grande coisa, mas acredito que as coisas ficariam muito melhores, especialmente para outros leitores de todo este tópico que desejam usar a(s) solução(ões) fornecida(s) em um documento maior, onde múltiplas entradas podem aparecer em apenas um dos dois, toc
deixando enormes espaços em branco no outro toc
.
Responder1
Aqui está uma versão com um argumento opcional adicional \section
que contém a versão em inglês do nome da seção do índice analítico. Se [...]
for omitido, nada será inserido em ftoc
(significado foreign toc
).
Use \tableofcontents
para o comportamento tradicional e \tableofcontents[ftoc]
para o outro idioma. As configurações de idioma são feitas no parcolumns
ambiente, não dentro \tableofcontents
etc.
\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}
Atualizar
\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}