如何自动化字典(排序、标题)?

如何自动化字典(排序、标题)?
  1. 这是使用以下第一个评论中给出的链接来自动化字典的解决方案。

    有两个问题需要解决:

    • 当一个定义在一个页面上开始,而在另一页面上结束,标题中的单词就不是好的单词。在下面的例子中,看看1最后一个单词必须是adhesive而不是 的页面adhesion,以及 页面中的2第一个单词必须是adjacent而不是adhesive。有办法解决这个问题吗?
    • 其次,我希望将该部分的字母 A 居中以便进行\textbf{\textsf{...}}格式化。

    这是我想要改进的代码。

    % Sources :
    %    1) http://tex.stackexchange.com/questions/30392/how-could-one-setup-a-layout-for-a-dictionary-if-possible
    %    2) http://tex.stackexchange.com/questions/26122/indexing-an-interval-of-words-on-top-of-every-page
    
    \documentclass[twoside]{article}
        \usepackage{multicol}
        \usepackage{ifthen}
        \usepackage{fancyhdr}
        \usepackage{enumerate}
        \usepackage{lipsum}
    
    % Empty \sectionmark
        \renewcommand{\sectionmark}[1]{}
    
        \fancyhead[L]{\textsf{\rightmark}}
        \fancyhead[R]{\textsf{\leftmark}}
        \fancyfoot[C]{\textbf{\textsf{\thepage}}}
    
    % Entry command : \dict{<word>}{<gender>}{<text>}
        \newcommand{\dict}[3]{%
            \par\vspace{0.25\baselineskip} %
            \textbf{\textsf{#1}} \textit{#2} #3 %
            \markboth{#1}{#1}
        }
    
        \pagestyle{fancy}
    
    
    \begin{document}
    
    \section*{A}
    
    \begin{multicols}{2}
        \dict{adequate}{n}{\lipsum[1]}
        \dict{adhere}{n}{\lipsum[2]}
        \dict{adherence}{n}{\lipsum[3]}
        \dict{adhesion}{n}{\lipsum[4]}
        \dict{adhesive}{n}{\lipsum[5]}
        \dict{adjacent}{n}{\lipsum[6]}
        \dict{adjective}{n}{\lipsum[1]}
        \dict{adjoin}{n}{\lipsum[2]}
        \dict{adjourn}{n}{\lipsum[3]}
        \dict{adjournment}{n}{\lipsum[4]}
        \dict{adjunt}{n}{\lipsum[5]}
        \dict{adjust}{n}{\lipsum[6]}
    \end{multicols}
    
    \end{document}
    
  2. 找到的解决方案如下,即使还有一个令人不安的行为,即使它是合乎逻辑的:在以下代码输出的最后一页,zero出现在两个标题中......

    % Sources :
    %    1) http://tex.stackexchange.com/questions/30392/how-could-one-setup-a-layout-for-a-dictionary-if-possible
    %    2) http://tex.stackexchange.com/questions/26122/indexing-an-interval-of-words-on-top-of-every-page
    %    3) http://tex.stackexchange.com/questions/30947/how-to-automate-a-dictionary-sorting-headers/31017#31017
    
    \documentclass[twoside]{article}
        \usepackage{multicol}
        \usepackage{fancyhdr}
        \usepackage[bf,sf,center]{titlesec}
    
    % Headers and footers
        \fancyhead[L]{\textsf{\rightmark}}
        \fancyhead[R]{\textsf{\leftmark}}
    
        \fancyfoot[C]{\textbf{\textsf{\thepage}}}
    
        \renewcommand{\headrulewidth}{1.4pt}
        \renewcommand{\footrulewidth}{1.4pt}
    
    % Entry command : \dict{<word>}{<gender>}{<text>}
        \newcommand{\dict}[3]{%
            \markboth{#1}{#1}%
            \par\vspace{0.25\baselineskip}%
            \textbf{\textsf{#1}} \textit{- #2 -} #3%
        }
    
        \pagestyle{fancy}
    
    % For testing
        \usepackage{lipsum}
    
    
    \begin{document}
    
    \section*{A}
    
    \begin{multicols}{2}
        \dict{adequate}{n}{\lipsum[1]}
        \dict{adhere}{n}{\lipsum[2]}
        \dict{adherence}{n}{\lipsum[3]}
        \dict{adhesion}{n}{\lipsum[4]}
        \dict{adhesive}{n}{\lipsum[5]}
        \dict{adjacent}{n}{\lipsum[6]}
        \dict{adjective}{n}{\lipsum[1]}
        \dict{adjoin}{n}{\lipsum[2]}
        \dict{adjourn}{n}{\lipsum[3]}
        \dict{adjournment}{n}{\lipsum[4]}
        \dict{adjunt}{n}{\lipsum[5]}
        \dict{adjust}{n}{\lipsum[6]}
    \end{multicols}
    
    
    \section*{M}
    
    \begin{multicols}{2}
        \dict{main}{n}{\lipsum[3]}
        \dict{material}{n}{\lipsum[1]}
        \dict{mathematic}{n}{\lipsum[2]}
        \dict{more}{n}{\lipsum[2]}
    \end{multicols}
    
    
    \section*{Z}
    
    \begin{multicols}{2}
        \dict{zebra}{n}{\lipsum \lipsum \lipsum}
        \dict{zero}{n}{\lipsum[4]}
    \end{multicols}
    
    \end{document}
    

答案1

关于您的第一个问题(错误的标题条目):在您的\dict宏中,使用\markboth 排版条目文本。

\newcommand{\dict}[3]{%
  \markboth{#1}{#1}%
  \par\vspace{0.25\baselineskip}%
  \textbf{\textsf{#1}} \textit{#2} #3%
}

关于你的第二个问题(格式化章节标题):例如,使用

\usepackage[bf,sf,center]{titlesec}

相关内容