From d9094ea7569d0c7f50e6f127572d5c58537552aa Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 22 Oct 2012 23:24:30 +0000 Subject: apa6 2.0 (22oct12) git-svn-id: svn://tug.org/texlive/trunk@28045 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/apa6/apa6.dtx | 508 ++++++++++++++++++++++++++- Master/texmf-dist/source/latex/apa6/apa6.ins | 3 + 2 files changed, 492 insertions(+), 19 deletions(-) (limited to 'Master/texmf-dist/source/latex/apa6') diff --git a/Master/texmf-dist/source/latex/apa6/apa6.dtx b/Master/texmf-dist/source/latex/apa6/apa6.dtx index c6daf7fcd65..9f650f3562b 100644 --- a/Master/texmf-dist/source/latex/apa6/apa6.dtx +++ b/Master/texmf-dist/source/latex/apa6/apa6.dtx @@ -4,11 +4,11 @@ % % % CHANGE THESE VALUES WITH EACH NEW RELEASE: % % % -%\ProvidesClass{apa6}[2012/04/04 v1.3 APA formatting (6th edition)] +%\ProvidesClass{apa6}[2012/10/20 v2.0 APA formatting (6th edition)] % % %<*internal> % -\def\apaSixVersionDate{2012/04/04} -\def\apaSixVersionNumber{1.3} +\def\apaSixVersionDate{2012/10/20} +\def\apaSixVersionNumber{2.0} % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -118,6 +118,7 @@ and the derived files apa6.ins, APAczech.txt, APAendfloat.cfg, apa6.ptex, + TeX2WordForapa6.bas, Figure1.pdf, shortsample.tex, longsample.tex, and @@ -149,6 +150,7 @@ and the derived files apa6.ins, \usedir{tex/latex/apa6/pseudoTeX} \generate{ \file{./pseudoTeX/apa6.ptex}{\from{\jobname.dtx}{ptex}} + \file{./pseudoTeX/TeX2WordForapa6.bas}{\from{\jobname.dtx}{bas}} } % %\endbatchfile @@ -254,6 +256,10 @@ and the derived files apa6.ins, % % \changes{v1.3}{2012/04/04}{Added `a4paper' option} % +% \changes{v2.0}{2012/10/20}{EndNote integration via `apa6.ptex' file +% and `FormatTex2WordDocument' macro} +% \changes{v2.0}{2012/10/20}{Fixed `headwidth' for `doc' mode} +% % % \begin{abstract} % The \textit{Publication Manual} of the American Psychological @@ -563,10 +569,11 @@ and the derived files apa6.ins, % body of the text to refer to that appendix. (Of course, if there is % only one appendix, simply refer to it as |the Appendix|.) % -% \section{Known Restrictions} +% \section{Known Limitations} % \begin{itemize} % \item There is a limit of six affiliations for authors (but an % unlimited number of authors across those six affiliations). +% \item The |APAenumerate| environment does not nest properly. % \end{itemize} % % \section{Development of \textsf{apa6}} @@ -780,21 +787,54 @@ and the derived files apa6.ins, % will be displayed on the title page of the converted document. % Mostly this involves moving floats (tables and figures) to their % places toward the end of the manuscript, some table re-formatting, -% and editing of bibliographic information---although some of this is -% expected to improve with upcoming releases of TeX2Word. The major -% weakness at the moment is a lack of support for bibliographic -% packages. I will update the |apa6.ptex| file within the -% \textsf{apa6} class on CTAN as the capabilities of TeX2Word evolve. -% It's well worth experimenting with the 30-day trial, and perhaps -% even worth finding---or borrowing---a Windows machine if you don't -% have one readily available (the conversion process does not require -% a \TeX\ installation to be present). -% -% Another pretty good solution is the Nitro software -% (\url{http://www.nitropdf.com/}), which does a good job with -% maintaining bibliographic information but distorts some font -% formatting. Nitro converts from PDF to Word rather than using the -% raw .tex file. +% and editing of bibliographic information. If you wish to have this +% editing more automated, you can open Word's Visual Basic Editor and +% import the ``TeX2WordForapa6.bas'' file (from the ``pseudoTeX'' +% subfolder of the \textsf{apa6} installation) as a new module, delete +% the lines beginning with percent signs at the top and bottom of the +% module, then run its |FormatTex2WordDocument| macro. This will +% complete all of the above steps and configure the bibliographic +% information as temporary citations that EndNote can then interpret +% (see below for details). However, some minor editing is still +% necessary (e.g., table titles and footnotes are not moved). For +% more efficient use of this macro, create a new Word document, open +% the Visual Basic Editor (VBE) and import the ``TeX2WordForapa6.bas'' +% file as a new module (be sure to delete all lines beginning with two +% percent signs); close the VBE and save the document in your ``Word +% Startup'' folder. Then the |FormatTex2WordDocument| macro will be +% available from the Macros dialog in Word for all documents. +% +% The major weakness of TeX2Word at the moment is a near-total lack of +% support for bibliographic packages. Version 2.0 of \textsf{apa6} +% introduced mechanisms in the |apa6.ptex| file and the +% |FormatTex2WordDocument| macro to establish compatibility with +% EndNote for handling bibliographic citations and the reference list +% when using TeX2Word. The process works as follows: (a) in Word, +% open your |.tex| file and let TeX2Word do the conversion; (b) run +% the |FormatTex2WordDocument| macro as described above to convert +% citations to a format that EndNote recognizes as ``temporary +% citations''; (c) go to the EndNote toolbar within Word and run +% ``Update Citations and Bibliography''; for each temporary citation, +% EndNote will present a dialog containing the matched references from +% the EndNote library; for each matched reference, remove any +% ``@@author-year'' search text if it causes references not to be +% found (this is a limitation in EndNote) and click ``Insert''; (d) +% after all citations have been resolved and EndNote has generated the +% References list at the end of the document, move the References list +% to the proper position if needed (i.e., when there are appendices, +% tables, or figures). Unfortunately, this workaround does mean that +% duplicate databases will need to be maintained in both a |.bib| file +% and an EndNote library that contain common Bib\TeX\ keys for each +% reference. To work properly, one modification is necessary to the +% user preferences in EndNote: un-check the ``Omit Author and/or Year +% from formatted citation if removed from temporary citation'' option +% (in the ``Formatting'' section of EndNote preferences). +% +% It's well worth experimenting with the 30-day trial of TeX2Word, and +% perhaps even worth finding---or borrowing---a Windows machine if you +% don't have one readily available (the conversion process does not +% require a \TeX\ installation to be present). +% % % \section{Dependencies} % \textsf{apa6} automatically loads the following packages. If these @@ -2923,6 +2963,10 @@ and the derived files apa6.ins, \newcommand{\shorttitle}[1]{\def\@shorttitle{#1}} \def\leftheader#1{\def\r@headl{#1}} +% fix headwidth for even-numbered pages +% suggestion from http://tex.stackexchange.com/questions/42798/apa6-package-heading-line-exceeds-textwidth +\setlength{\headwidth}{\textwidth} + \RequirePackage{fancyhdr} \setlength{\headheight}{15.2pt} \fancyhf{} @@ -3788,6 +3832,103 @@ The detailed results are shown in Table~\ref{tab:DeckedTable}. \lipsum[22] \@secdef@nonum@paragraphlevel{5}{1}{0}{0}{\normalsize\rm\it}{subparagraph}{Subparagraph} \@addtoreset{subparagraph}{paragraph} +\newcommand\DeclareLanguageMapping[2]{} +\newcommand\addbibresource[1]{} +\newcommand\printbibliography{} + +% convert citations to temporary citations for EndNote +\def\specialComma{,} +\def\specialSemicolon{;} + +\catcode`\^^G=12 +\newcommand*{\doachar}[1]{% + \if#1\specialComma\specialSemicolon\else#1\fi%% +} +\newcommand*{\makeCommaIntoSemicolon}[1]{% + \def\stuff{#1}\ifx\stuff\@empty\else\@llchars#1^^G\fi} +\def\@llchars#1#2^^G{% + \def\letter{#1}\def\others{#2}% + \ifx\letter\@empty\let\next\@gobble% + \else% + \doachar{#1}% + \ifx\others\@empty \let\next\@gobble% + \else \let\next\@llchars \fi% + \fi% +\next#2^^G} +\catcode`\^^G=15 + + +\def\parencite{% + \@ifnextchar[% + {\@parencite}% + {\@parencite[]}% +} +\def\@parencite[#1]{% + \@ifnextchar[% + {\@@parencite[#1]}% + {\@@parencite[#1][]}% +} +\def\@@parencite[#1][#2]#3{% + \makeatletter% + {\{{{#1}\textbackslash}{\makeCommaIntoSemicolon{#3}}@{#2}\}}% + \makeatother% +} +\let\maskparencite=\parencite + +\let\Parencite=\parencite +\let\maskParencite=\parencite + +\let\citep=\parencite +\let\maskcitep=\parencite +\let\Citep=\parencite +\let\maskCitep=\parencite + +\let\cite=\parencite +\let\maskcite=\parencite + +\let\citeyear=\parencite +\let\maskciteyear=\parencite +\let\citeyearpar=\parencite +\let\maskciteyearpar=\parencite + + +\def\textcite{% + \@ifnextchar[% + {\@textcite}% + {\@textcite[]}% +} +\def\@textcite[#1]{% + \@ifnextchar[% + {\@@textcite[#1]}% + {\@@textcite[#1][]}% +} +\def\@@textcite[#1][#2]#3{% + \makeatletter% + {\{{{#1}\textbackslash}\makeCommaIntoSemicolon{#3}@{#2}@author-year\}}% + \makeatother% +} +\let\masktextcite=\textcite +\let\Textcite=\textcite +\let\maskTextcite=\textcite + +\let\citet=\textcite +\let\maskcitet=\textcite +\let\Citet=\textcite +\let\maskCitet=\textcite + +\let\citeA=\textcite +\let\maskciteA=\textcite + +\let\citeauthor=\textcite +\let\maskciteauthor=\textcite +\let\Citeauthor=\textcite +\let\maskCiteauthor=\textcite + +\let\citeyearNP=\textcite +\let\maskciteyearNP=\textcite +\let\citeNP=\textcite +\let\maskciteNP=\textcite + % re-define the maketitle \long\def\maketitle{\entity@paragraph@new\begingroup\entity@paragraph@just=1\relax% @@ -3869,6 +4010,335 @@ The detailed results are shown in Table~\ref{tab:DeckedTable}. \lipsum[22] %\end{macro} % % +% +% %%%%%%%%%%% TeX2WordForapa6.bas FILE (macro for Word) %%%%%%%%%%%% +% +%\begin{macro}{TeX2WordForapa6.bas} +% \begin{macrocode} +%<*bas> +Attribute VB_Name = "TeX2WordForapa6" +Sub FormatTex2WordDocument() + + Dim strRunningHead, r, E + Dim myrange As Range + + strRunningHead = InputBox("Please type the running head:", "Running Head") + If strRunningHead = "" Then Exit Sub + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="References" & vbCrLf + Selection.MoveUp Unit:=wdLine, Count:=1 + Selection.ParagraphFormat.LeftIndent = InchesToPoints(0) + Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter + + Selection.HomeKey Unit:=wdStory + + Call FormatTex2WordPageHeader(strRunningHead) + Call FormatAndMoveTex2WordTables + Call FormatAndMoveTex2WordFigures + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="Appendix" & vbCrLf + Selection.MoveUp Unit:=wdLine, Count:=1 + Selection.ParagraphFormat.LeftIndent = InchesToPoints(0) + Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter + + ' touch up temporary citations + Selection.HomeKey Unit:=wdStory + + Selection.Find.ClearFormatting + Selection.Find.Replacement.ClearFormatting + With Selection.Find + .Text = "{\" + .Replacement.Text = "{" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@}" + .Replacement.Text = "}" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{e.g.,\" + .Replacement.Text = "{e.g.`, \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{i.e.,\" + .Replacement.Text = "{i.e.`, \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{cf.\" + .Replacement.Text = "{cf. \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@p. " + .Replacement.Text = "@" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@pp. " + .Replacement.Text = "@" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + ' for table footnotes + With Selection.Find + .Text = "[para,flushleft] " + .Replacement.Text = "" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + ' delete the instructions + Selection.HomeKey Unit:=wdStory + + Set myrange = Selection.Range + myrange.Start = Selection.Start + + Selection.HomeKey Unit:=wdStory + Selection.Find.ClearFormatting + With Selection.Find + .Execute findText:="Delete these instructions!", Forward:=True, Wrap:=wdFindStop + myrange.End = Selection.End + 1 + myrange.Select + myrange.Delete + End With + + Selection.HomeKey Unit:=wdStory + +End Sub + +Sub FormatTex2WordPageHeader(strRunningHead) + + Dim r, E + + ' set the first page to be a different header + ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = True + + With ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage) + .Range.ParagraphFormat.LineSpacingRule = wdLineSpaceDouble + .Range.ParagraphFormat.FirstLineIndent = InchesToPoints(0) + .Range.ParagraphFormat.TabStops.ClearAll + .Range.ParagraphFormat.TabStops.Add Position:=InchesToPoints(6.5), _ + Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces + .Range.Text = "Running head: " & UCase(strRunningHead) & vbTab + With .Range.Font + .Name = "Times New Roman" + .Size = 12 + .Bold = False + .Italic = False + End With + + Set r = .Range + E = .Range.End + r.Start = E + .Range.Fields.Add r, wdFieldPage + + End With + + With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary) + .Range.ParagraphFormat.LineSpacingRule = wdLineSpaceDouble + .Range.ParagraphFormat.FirstLineIndent = InchesToPoints(0) + .Range.Text = UCase(strRunningHead) + .PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberRight + With .Range.Font + .Name = "Times New Roman" + .Size = 12 + .Bold = False + .Italic = False + End With + End With + +End Sub + +Sub FormatAndMoveTex2WordTables() + + Dim i, rngParagraphs As Range + + If ActiveDocument.Tables.Count > 0 Then + + For i = 1 To ActiveDocument.Tables.Count + + Selection.HomeKey Unit:=wdStory + + Set rngParagraphs = ActiveDocument.Range( _ + Start:=ActiveDocument.Tables(1).Range.Start, _ + End:=ActiveDocument.Tables(1).Range.End) + rngParagraphs.Select + + With Selection.Tables(1) + .Borders(wdBorderLeft).LineStyle = wdLineStyleNone + .Borders(wdBorderRight).LineStyle = wdLineStyleNone + With .Borders(wdBorderTop) + .LineStyle = wdLineStyleSingle + .LineWidth = wdLineWidth050pt + .Color = wdColorAutomatic + End With + With .Borders(wdBorderBottom) + .LineStyle = wdLineStyleSingle + .LineWidth = wdLineWidth050pt + .Color = wdColorAutomatic + End With + .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone + .Borders(wdBorderVertical).LineStyle = wdLineStyleNone + .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone + .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone + .Borders.Shadow = False + '.Rows.Alignment = wdAlignRowLeft + .PreferredWidthType = wdPreferredWidthPercent + .PreferredWidth = 100 + .TopPadding = InchesToPoints(0.08) + .BottomPadding = InchesToPoints(0.08) + .LeftPadding = InchesToPoints(0.08) + .RightPadding = InchesToPoints(0.08) + .Spacing = 0 + .AllowPageBreaks = True + .AllowAutoFit = False + End With + + With Selection.ParagraphFormat + .LineSpacingRule = wdLineSpaceSingle + .LeftIndent = InchesToPoints(0) + .RightIndent = InchesToPoints(0) + .SpaceBefore = 0 + .SpaceBeforeAuto = False + .SpaceAfter = 0 + .SpaceAfterAuto = False + .WidowControl = False + .KeepWithNext = False + .KeepTogether = False + .PageBreakBefore = False + .NoLineNumber = False + .Hyphenation = True + .FirstLineIndent = InchesToPoints(0) + .CharacterUnitLeftIndent = 0 + .CharacterUnitRightIndent = 0 + .CharacterUnitFirstLineIndent = 0 + .LineUnitBefore = 0 + .LineUnitAfter = 0 + .MirrorIndents = False + .TextboxTightWrap = wdTightNone + End With + + rngParagraphs.Cut + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="Table " & i & vbCrLf + Selection.Paste + + Next + + End If + +End Sub + +Sub FormatAndMoveTex2WordFigures() + + Dim i, rngParagraphs As Range + + If ActiveDocument.InlineShapes.Count > 0 Then + + For i = 1 To ActiveDocument.InlineShapes.Count + + Selection.HomeKey Unit:=wdStory + + Set rngParagraphs = ActiveDocument.Range( _ + Start:=ActiveDocument.InlineShapes(1).Range.Start, _ + End:=ActiveDocument.InlineShapes(1).Range.End) + rngParagraphs.Select + rngParagraphs.Cut + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.Paste + Selection.TypeText Text:=vbCrLf & "Figure " & i & vbCrLf + + Next + + End If + +End Sub +% +% +% \end{macrocode} +%\end{macro} +% +% % %%%%%%%%%%% CONFIGURATION FILES %%%%%%%%%%%% % %\begin{macro}{APAamerican.txt} diff --git a/Master/texmf-dist/source/latex/apa6/apa6.ins b/Master/texmf-dist/source/latex/apa6/apa6.ins index 9c8164b1dd0..c7ad0616ece 100644 --- a/Master/texmf-dist/source/latex/apa6/apa6.ins +++ b/Master/texmf-dist/source/latex/apa6/apa6.ins @@ -89,6 +89,7 @@ and the derived files apa6.ins, APAczech.txt, APAendfloat.cfg, apa6.ptex, + TeX2WordForapa6.bas, Figure1.pdf, shortsample.tex, longsample.tex, and @@ -120,6 +121,7 @@ and the derived files apa6.ins, \usedir{tex/latex/apa6/pseudoTeX} \generate{ \file{./pseudoTeX/apa6.ptex}{\from{\jobname.dtx}{ptex}} + \file{./pseudoTeX/TeX2WordForapa6.bas}{\from{\jobname.dtx}{bas}} } \endbatchfile %% @@ -157,6 +159,7 @@ and the derived files apa6.ins, %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and -- cgit v1.2.3