当标题包含宏时截断标题

当标题包含宏时截断标题

编辑:@egreg,我用 复制粘贴了你的文档\expandonce,但如果我把一个带有宏的小节放在里面,\subsection{\textit{EE} LEFTshort subsec}那么我就会收到错误Missing control sequence inserted. \end{document}

我也尝试了fit选项truncate\usepackage[fit]{truncate}但是,长度值较小,,\truncate{3em}{\subsectiontitle}它不能解决奇数侧(左)的问题,因为标题仍然位于(物理右)边距。

当我使用长长度时,该fit选项效果会更好,例如\truncate{11em}{\subsectiontitle}

====================================

我尝试使用titlesectruncatextring来截断较长的节标题,但是我的节标题\textit{}中可能包含和其他宏,这种情况会破坏\StrLeft

问题\truncate是,当子节标题小于我分配截断的限制时,它将小节标题置于远离边距的位置。

这里的插图\truncate

截短

  • 该命令\StrLeft很好,因为它将截断的标题粘贴到(物理右)边缘

  • \StrLeft当我的标题有宏时,命令会中断

  • 该命令\StrLeft不好,因为它截断到字母,而不是整个单词

  • 该命令\StrLeft不好,因为它没有三个小点...

  • 该命令\truncate很好,因为它不会在单词处中断和截断,也不会在字母处中断和截断

  • 该命令\truncate没有像\StrLeft

  • 该命令不好,因为它可以超出[我不想要的]\truncate的限制\makeheadrule

这是文件

\documentclass[twoside,a4paper,12pt]{article}
%\documentclass[oneside,a4paper,12pt]{article}

\usepackage{fontspec}
%\setmainfont{TeX Gyre Termes}
\usepackage{polyglossia}
\setmainlanguage{german}


\usepackage{titlesec}
\usepackage[extramarks]{titleps}

\usepackage{truncate}
\usepackage{xstring}
\settitlemarks*{section,subsection}

%%\makeatletter
%%\def\setIn#1{\@setIn#1\@nil}
%%\def\@setIn#1#2\@nil{%
%%Input One: #1\par
%%Input two: #2%
%%}
%%\makeatother



\newpagestyle{MYSTYLE}{%
\widenhead[1cm][1cm]{1cm}{1cm}

\renewcommand{\makeheadrule}{\rule[1em]{\linewidth}{0.15ex}}
\renewcommand{\makefootrule}{\rule[1em]{\linewidth}{0.1ex}}


%% FIRST THE RIGHT SIDE [EVEN SIDE] THEN THE LEFT SIDE [ODD SIDE]
\sethead
[%
\large\thesection\#\truncate{8em}{\sectiontitle}%
]
[]
[%
\large\firstextramarks{subsection}\thesubsection\#
%\StrLeft{\subsectiontitle}{25}
\truncate{14em}{\subsectiontitle}
{+\thepage}%
]
{%
{\normalsize\thepage+}
\large\thesection\#\#\truncate{8em}{\sectiontitle}%
}
{}
{%
\large\firstextramarks{subsection}\thesubsection\#\#%
%\StrLeft{\subsectiontitle}{11}%
\truncate{11em}{\subsectiontitle}
}

\setfoot[][][]{}{}{}
}


\begin{document}

\pagestyle{MYSTYLE}
\section{\textit{EE} raha je hlavní a  současně největší město České republiky a }


\subsection{LEFTshort subsec}

\newpage

\subsection{RIGHT looo oooo nnn nnnn nnng ggg subsection title}

\newpage
\section{\textit{EE} raha je hlavní a  současně největší město České republiky a }



\subsection{LEFT looo oooo nnn nnnn nnng ggg subsection title}

\newpage
\subsection{ RIGHT Short subsec title}





\end{document}

答案1

问题\expandarg;但我认为这样更好提供缩写版本。

\documentclass[twoside,a4paper,12pt]{article}

\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\usepackage{polyglossia}
\setmainlanguage{czech}


\usepackage{titlesec}
\usepackage[extramarks]{titleps}

\usepackage{truncate}
\usepackage{xstring}

\expandarg

\settitlemarks*{section,subsection}

\newpagestyle{MYSTYLE}{%
\widenhead[1cm][1cm]{1cm}{1cm}

\renewcommand{\makeheadrule}{\rule[1em]{\linewidth}{0.15ex}}
\renewcommand{\makefootrule}{\rule[1em]{\linewidth}{0.1ex}}


%% FIRST THE RIGHT SIDE [EVEN SIDE] THEN THE LEFT SIDE [ODD SIDE]
\sethead
[%
\large\thesection\#\truncate{8em}{\sectiontitle}%
]
[]
[%
\large\firstextramarks{subsection}\thesubsection\#
\StrLeft{\subsectiontitle}{25}
{+\thepage}%
]
{%
{\normalsize\thepage+}
\large\thesection\#\#\truncate{8em}{\sectiontitle}%
}
{}
{%
\large\firstextramarks{subsection}\thesubsection\#\#%
\StrLeft{\subsectiontitle}{11}%
}

\setfoot[][][]{}{}{}
}


\begin{document}

\pagestyle{MYSTYLE}
\section{\textit{EE} raha je hlavní a  současně největší město České republiky a }


\subsection{LEFTshort subsec}

\newpage

\subsection{RIGHT looo oooo nnn nnnn nnng ggg subsection title}

\newpage
\section{\textit{EE} raha je hlavní a  současně největší město České republiky a }



\subsection{LEFT looo oooo nnn nnnn nnng ggg subsection title}

\newpage
\subsection{ RIGHT Short subsec title}

\end{document}

在此处输入图片描述

相关内容