Microtype 和 textpos

Microtype 和 textpos

我发现包的一部分有影响microtype,我想以某种方式取消它。在下面包含的 MWE 中,我收集了一些标记内容,这些内容将作为文档每个奇数页页脚的一部分输入。此页脚由两个水平对齐的框组成,第一个框的内容向左参差不齐,其宽度由Authors:打字机面上设置的字符串框的宽度决定。要排版框的页面位置是根据textblock环境(来自包textpos)指定的,与文本块的左边距垂直对齐。最后,一旦排版了框,就会有一个由一行组成的新段落。

MWE如下:

\documentclass[12pt]{memoir}

\usepackage{calc}
\usepackage[absolute]{textpos}
\usepackage{microtype}

\newtoks{\tokname}
\newtoks{\toktitle}
\newtoks{\toklatexed}
\toklatexed={Another paragraph}

\newcommand{\docauthors}[1]{\global\tokname={#1}}
\newcommand{\doctitle}[1]{\global\toktitle={#1}}

\newlength{\tagsboxlen}
\settowidth{\tagsboxlen}{\scriptsize\texttt{Authors:}}

\newcommand{\tagsbox}{%
   \parbox[t]{\tagsboxlen}{%
     \raggedleft
      Authors:\\
      Title:\\}}

\newcommand{\datatagsbox}{%
   \parbox[t]{\textwidth - \tagsboxlen - 1em}{%
     \the\tokname\\
     \the\toktitle\\}}

\newcommand{\footpaperdata}{%
   \setlength{\TPHorizModule}{1in + \oddsidemargin}
   \setlength{\TPVertModule}{1in + \textheight + \topmargin %
                             + \headheight + \headsep + \footskip  %
                             + 2\onelineskip}
  \begin{textblock}{10}[0,0](1,1)
     \scriptsize\ttfamily
     \noindent\tagsbox\hfill\datatagsbox
     \par\noindent\the\toklatexed
  \end{textblock}
}

\makeoddfoot{plain}{\footpaperdata}{}{}

\doctitle{This is the title}

\docauthors{This is the author's name}

\begin{document}

\pagestyle{plain}

Please, look at footer.

\end{document}

如果我不加载该包microtype,则字符串Authors:将与文本块垂直对齐,但如果我加载它,则字符串将稍微向右移动,而这些框后面的段落仍然与文本块垂直对齐,如上所述。

有人能解释一下这里发生了什么吗?

在阅读了 egreg 的回答后,我想到了一个可能感兴趣的人可以考虑的替代方案,该替代方案基于他的方法并诉诸于包tabu。 经过修订的整个 MWE 如下:

\documentclass[12pt]{memoir}

\usepackage{calc,tabu}
\usepackage[absolute]{textpos}
\usepackage{microtype}

\newtoks{\tokname}
\newtoks{\toktitle}
\newtoks{\toklatexed}
\toklatexed={Another paragraph}

\newcommand{\docauthors}[1]{\global\tokname={#1}}
\newcommand{\doctitle}[1]{\global\toktitle={#1}}

\newcommand{\paperdatatabu}{%
   \begin{tabu} spread0pt{@{}X[-1,r]X[-1,l]@{}}
      Authors:  &  \the\tokname\\
      Title:    &  \the\toktitle\\
   \end{tabu}
}


\newcommand{\footpaperdata}{%
   \setlength{\TPHorizModule}{1in + \oddsidemargin}
   \setlength{\TPVertModule}{1in + \textheight + \topmargin %
                             + \headheight + \headsep + \footskip  %
                             + 2\onelineskip}
  \begin{textblock}{10}[0,0](1,1)
     \scriptsize\ttfamily
     \paperdatatabu
     \par\noindent\the\toklatexed
  \end{textblock}
}

\makeoddfoot{plain}{\footpaperdata}{}{}

\doctitle{This is the title}

\docauthors{This is the author's name}

\begin{document}

\pagestyle{plain}

Please, look at footer.

\end{document}

答案1

您可以在本地停用以下功能microtype

\newcommand{\tagsbox}{%
   \parbox[t]{\tagsboxlen}{%
     \microtypesetup{activate=false}
     \raggedleft
      Authors:\\
      Title:\\}}

但是,使用 parbox 并测量它们并不是必需的:

\documentclass[12pt]{memoir}

\usepackage{calc}
\usepackage[absolute]{textpos}
\usepackage{microtype}

\newtoks{\tokname}
\newtoks{\toktitle}
\newtoks{\toklatexed}
\toklatexed={Another paragraph}

\newcommand{\docauthors}[1]{\global\tokname={#1}}
\newcommand{\doctitle}[1]{\global\toktitle={#1}}

\newcommand{\tagsbox}{%
   \begin{tabular}[t]{@{}l@{}}
      Authors:\\
      Title:
   \end{tabular}}

\newcommand{\datatagsbox}{%
   \begin{tabular}[t]{@{}l@{}}
     \the\tokname\\
     \the\toktitle
   \end{tabular}}

\newcommand{\footpaperdata}{%
   \setlength{\TPHorizModule}{1in + \oddsidemargin}
   \setlength{\TPVertModule}{1in + \textheight + \topmargin %
                             + \headheight + \headsep + \footskip  %
                             + 2\onelineskip}
  \begin{textblock}{10}[0,0](1,1)
     \scriptsize\ttfamily
     \noindent\tagsbox\hspace{1em}\datatagsbox
     \par\medskip\noindent\the\toklatexed
  \end{textblock}
}

\makeoddfoot{plain}{\footpaperdata}{}{}

\doctitle{This is the title}

\docauthors{This is the author's name}

\begin{document}

\pagestyle{plain}

Please, look at footer.

\end{document}

有了tabular它就更容易了。

相关内容