latex 命令生成类似于此网站的输出

latex 命令生成类似于此网站的输出

如何在 latex 中生成具有以下格式的 latex?我知道关于tex4ht,我知道关于,latex4html但无法获得类似的输出。

源网站在这里下面是页面快照

在此处输入图片描述

示例 Tex 文件(请注意上面链接中的表格)

\documentclass[ebook,10pt,oneside,openany,final]{memoir}

\usepackage[american]
           {babel}        % needed for iso dates
\usepackage[iso,american]
           {isodate}      % use iso format for dates
\usepackage[final]
           {listings}     % code listings


\setcounter{totalnumber}{10}

% Base definitions for tables
\newenvironment{TableBase}
{
 \renewcommand{\tcode}[1]{{\CodeStylex{##1}}}
 \newcommand{\topline}{}
 \newcommand{\capsep}{}
 \newcommand{\rowsep}{}
 \newcommand{\bottomline}{}

%% vertical alignment
 \newcommand{\rb}[1]{\raisebox{1.5ex}[0pt]{##1}}    % move argument up half a row

%% header helpers
 \newcommand{\hdstyle}[1]{\textbf{##1}}             % set header style
 \newcommand{\Head}[3]{\multicolumn{##1}{##2}{\hdstyle{##3}}}   % add title spanning multiple columns
 \newcommand{\lhdrx}[2]{\Head{##1}{|c}{##2}}        % set header for left column spanning #1 columns
 \newcommand{\chdrx}[2]{\Head{##1}{c}{##2}}         % set header for center column spanning #1 columns
 \newcommand{\rhdrx}[2]{\Head{##1}{c|}{##2}}        % set header for right column spanning #1 columns
 \newcommand{\ohdrx}[2]{\Head{##1}{|c|}{##2}}       % set header for only column spanning #1 columns
 \newcommand{\lhdr}[1]{\lhdrx{1}{##1}}              % set header for single left column
 \newcommand{\chdr}[1]{\chdrx{1}{##1}}              % set header for single center column
 \newcommand{\rhdr}[1]{\rhdrx{1}{##1}}              % set header for single right column
 \newcommand{\ohdr}[1]{\ohdrx{1}{##1}}
 \newcommand{\br}{\hfill\break}                     % force newline within table entry

%% column styles
 \newcolumntype{x}[1]{>{\raggedright\let\\=\tabularnewline}p{##1}}  % word-wrapped ragged-right
                                                                    % column, width specified by #1
 % \newcolumntype{m}[1]{>{\CodeStyle}l{##1}}              % variable width column, all entries in CodeStyle
 \newcolumntype{m}[1]{l{##1}}                           % variable width column, all entries in CodeStyle
}
{
}

% General Usage: TITLE is the title of the table, XREF is the
% cross-reference for the table. LAYOUT is a sequence of column
% type specifiers (e.g. cp{1.0}c), without '|' for the left edge
% or right edge.

% usage: \begin{floattablebase}{TITLE}{XREF}{COLUMNS}{PLACEMENT}
% produces floating table, location determined within limits
% by LaTeX.
\newenvironment{floattablebase}[4]
{
 \begin{TableBase}
 \begin{table}[#4]
 \caption{\label{#2}#1}
 \begin{center}
 \begin{tabular}{|#3|}
}
{
 \bottomline
 \end{tabular}
 \end{center}
 \end{table}
 \end{TableBase}
}

% usage: \begin{floattable}{TITLE}{XREF}{COLUMNS}
% produces floating table, location determined within limits
% by LaTeX.
\newenvironment{floattable}[3]
{
 \begin{floattablebase}{#1}{#2}{#3}{htbp}
}
{
 \end{floattablebase}
}


\newcommand{\CodeStylex}[1]{\texttt{#1}}
\newcommand{\tcode}[1]{\CodeStylex{#1}}

\begin{document}
\begin{floattable}
{Potential \tcode{setlocale} data races}
{tab:setlocale.data.races}
{lllll}
\topline

\tcode{fprintf}     &
\tcode{isprint}     &
\tcode{iswdigit}    &
\tcode{localeconv}  &
\tcode{tolower}     \\

\end{floattable}

\end{document}

答案1

此代码涉及项目OP 在评论中提到了这一点。

我会将带有宏定义的文件转换为sty文件。因此将文件macros.texlayout.tex等重命名为macros.sty等。在主文件中,然后使用 调用它们\usepackage。这样,您就可以为 提供配置文件了tex4ht

您应该重写一些宏,以便于修改。例如,您在macros.tex这个宏中有:

\def\Sec#1[#2]#3{{%
\ifcase#1\let\s=\chapter
      \or\let\s=\section
      \or\let\s=\subsection
      \or\let\s=\subsubsection
      \or\let\s=\paragraph
      \or\let\s=\subparagraph
      \fi%
\s[#3]{#3\hfill[#2]}\label{#2}}}

由于tex4ht您需要在其中插入一些 html 标签,因此最好对其进行一些修改:

\def\Sec#1[#2]#3{{%
\ifcase#1\let\s=\chapter
      \or\let\s=\section
      \or\let\s=\subsection
      \or\let\s=\subsubsection
      \or\let\s=\paragraph
      \or\let\s=\subparagraph
      \fi%
      \s[#3]{\SecParts{#3}{#2}}\edef\@currentlabel{_#2_}\label{#2}}}


\newcommand\SecParts[2]{#1\hfill[#2]}

现在您只需要\SecParts在配置文件中重新定义宏tex4ht来插入一些 html 标签。\edef\@currentlabel{_#2_}是因为您想要使用标签和下划线而不是章节编号进行交叉引用。

我创建了配置文件macros.4ht,其中放了一些重新定义:

% hooks definitions 

\NewConfigure{SecParts}{3}
\renewcommand\SecParts[2]{\a:SecParts#1\b:SecParts#2\c:SecParts}

\NewConfigure{Pnum}{2}
\def\pnum{\addtocounter{Paras}{1}\noindent\a:Pnum\arabic{Paras}\b:Pnum}

\Configure{SecParts}{}{\HCode{<span class="SecLabel">[}}{\HCode{]</span>}}
\Configure{Pnum}{\HCode{<span class="pnum">}}{\HCode{</span>}}

\Css{
body{
  width:60em;
  margin-left:4em;
  font-family:monospace;
}}

\Css{
 h1, h2, h3{font-size:1em;font-weight:normal;}
}
\Css{h2 br{display:none}}
\Css{
.titlemark{display:inline-block;margin-right:.5em;margin-left:0;}
}
\Css{
 p{
     text-align:justify;
     -webkit-hyphens: auto;
     -moz-hyphens: auto;
     hyphens: auto;
}    
}
\Css{.pnum{
display:block; width: 2em; margin-left:-2em; float:left;
}}
\Css{.SecLabel{
  display:block;
  float:right;
}
}
\Hinput{macros.sty}

我使用\NewConfigure命令创建了可配置的钩子,然后使用\renewcommand命令重新定义了需要放置这些钩子的位置。我认为您有许多宏,您应该使用类似的重新定义来插入 html 标记,因此您可以这样做。

该文件的主要部分是影响外观的 CSS 定义。

在此处输入图片描述

相关内容